KingJim XMC10 への Ubuntu 18.04.2 の導入についての tweet の纏め

本稿では、 Windows 10 搭載の小型ノートPCである KingJIM 社製 XMC10 に Debian 系の Linux ディストリビューションである Ubuntu 18.04.2 を導入する過程において、気付いた点及び留意点についての tweet を纏めたものです。 なお、本稿を纏めるに当たっては、 @mongonta555 氏と @amuramatsu 氏及び @kapper1224 氏のブログ記事及び Github のリポジトリ等を参考にしました。関係各位には心より感謝致します。
1

/home, /var, /usr/share 等のディレクトリ領域の移動

現状では、XMC10 に導入した Ubuntu 18.04.2 の root partition の容量は、最大でも 8GB 程度しか無く、今後大量のソフトウェア及びデータを格納する際は非常に不便を強いられる事が予想されます。

そこで、 Ubuntu 18.04.2 環境を構成するファイルのうち、以下に示すディレクトリ (以下ディレクトリ /var 等) の内容を、前述した XMC10 の SD スロットに増設した microSDXC メモリ (容量 512GB, 以下増設 microSD) に移動しました。

  • /var
  • /home
  • /usr/local
  • /usr/src
  • /usr/share

先ず、増設 microSD 上にパーティションを切り、パーティション内に ext4 ファイルシステムを作成しました。今回は、増設 microSD の領域全体で1個のパーティションと ext4 ファイルシステムを作成しました。

次に、 XMC10 上の Ubuntu 18.04.2 環境をリカバリモードで起動して、増設 microSD 上に作成した ext4 ファイルシステム領域を適当なディレクトリにマウントしました。

そして、ディレクトリ /var 等の内容を増設 microSD 領域をマウントしたディレクトリに移動した後、移動先のディレクトリを mount --bind ... を用いてルートディレクトリ上に予め作成したディレクトリ /var 等にバインドしました

最後に、ファイルシステムのマウントに関する設定ファイル /etc/fstab の末尾に後述で示す内容を追記し、 XMC10 を再起動しました。

...(略)...
# なお、ここで <UUID of ext4> は、増設 microSD 上に作成した ext4 ファイルシステムの UUID を、
# /mnt/extend は、増設 microSD 上に作成した ext4 ファイルシステムのマウント先のディレクトリを示す。

UUID=<UUID of ext4>      /mnt/extend    ext4  rw,error=remount-ro 0 1
/mnt/extend/home         /home          none  bind                0 0
/mnt/extend/var          /var           none  bind                0 0
/mnt/extend/usr/local    /usr/local     none  bind                0 0
/mnt/extend/usr/src      /usr/src       none  bind                0 0
/mnt/extend/usr/share    /usr/share     none  bind                0 0
...(略)...

以上の設定により、 XMC10 上の Ubuntu 18.04.2 環境において、増設 microSD にディレクトリ /var 等の領域を移動させることが可能となりました。

Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて休憩中。 そして、増設した microSD メモリに ext4 ファイルシステムを作成し、内蔵ストレージ領域に存在する以下のディレクトリを増設メモリに移動した。 * /var * /home * /usr/local * /usr/src * /usr/share 詳細は以下を参照。 z80oolong.qrunch.io/logs/00T2Mgh09…

2019-12-12 14:50:00
リンク z80oolong.qrunch.io 現在の技術案件の近況 | Z.OOL.ネット信託統治領 Qrunch 諸島 もっと気軽に書ける プログラマのための技術ブログサービス

ハイバーネーション機能の有効化

XMC10 上に導入した Ubuntu 18.04.2 環境において、現時点において、サスペンド機能が正常に動作しない問題が発生しています。

そこで、 XMC10 上の Ubuntu 18.04.2 環境において、サスペンド機能に代えて、ハイバーネーション機能の使用を検討します。

Swap 領域の確保

先ず、ハイバーネーション機能を有効化するために、ハイバーネーション時に内蔵メモリの内容を格納するための Swap 領域の確保を行います。

本稿では、前述した増設 microSD 領域に loopback file を作成することにより、 Swap 領域を確保します。

なお本稿では、 Swap 領域のサイズを XMC10 の内蔵メモリの容量の2〜4倍の 4GB から 8GB 程度確保するものとします。

先ずは、以下のコマンドを実行して Swap 領域を作成と有効化を行います。

  $ fallocate -l 8G /mnt/extend/swap.disk
  $ sudo -s
  # chown root.root /mnt/extend/swap.disk
  # chmod 600 /mnt/extend/swap.disk
  # mkswap /mnt/extend/swap.disk
  # swapoff -a
  # swapon /mnt/extend/swap.disk
  #

(ここに、ディレクトリ /mnt/extend は増設 microSD 領域のマウント先であり、ファイル /mnt/extend/swap.disk は Swap 領域として使用する増設 microSD 領域上に作成した loopback file である。以下同様。)

以上により、 Swap 領域が有効化されました。ここで、 XMC10 の起動時に Swap 領域を有効にするには、設定ファイル /etc/fstab に以下の設定を追記します。

...(略)...
UUID=<UUID of ext4>      /mnt/extend    ext4  rw,error=remount-ro 0 1
# 以下の設定を追記する。
/mnt/extend/swap.disk    none           swap  loop,sw             0 0
# 以下の設定は、前述した増設 microSD 領域に関する設定。
/mnt/extend/home         /home          none  bind                0 0
/mnt/extend/var          /var           none  bind                0 0
/mnt/extend/usr/local    /usr/local     none  bind                0 0
/mnt/extend/usr/src      /usr/src       none  bind                0 0
/mnt/extend/usr/share    /usr/share     none  bind                0 0
...(略)...

以上の設定の後、XMC10 を再起動する事により、 XMC10 上の Ubuntu 18.04.2 環境の起動時に Swap 領域を有効にすることが出来ました。

ハイバーネーション機能の設定

Ubuntu 18.04.2 において、ハイバーネーション機能を有効にするには、 Linux カーネルのパラメータの resume=... を指定する必要があります。

また、本稿では、 Swap 領域に増設 microSD 領域の loopback file を指定しているので、パラメータ resume= に加え、パラメータ resume_offset=... を指定する必要があります。

ここに、 パラメータ resume=... には、 Swap 領域として使用する loopback file が置かれている増設 microSD のデバイス名を UUID で指定します。

また、 パラメータ resume_offset=... には、 Swap 領域として使用する loopback file の増設 microSD のデバイス上での開始物理アドレスを指定します。

ここで、Swap 領域として使用する loopback file の増設 microSD のデバイス上での開始物理アドレスは、パッケージ uswsusp に含まれるコマンド swap-offset を用いて以下のようにして取得することが出来ます。

  $ sudo -s
  # swap-offset /mnt/extend/swap.disk
  resume offset = 9999999
  #

(本稿では、 loopback file の増設 microSD のデバイス上での開始物理アドレスを 9999999 とする。以下同様。)

以上の Swap 領域についての設定値を設定ファイル /etc/default/grub に以下のように記述します。

...(略)...
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=<UUID of ext4> resume_offset=9999999"
...(略)...

また、設定ファイル /etc/initramfs-tools/conf.d/resume にも同様に以下のように上記の設定を記述します。

resume=UUID=<UUID of ext4> resume_offset=9999999

以上の設定を記述した後、以下のコマンドを実行して設定を有効化します。

  $ sudo -s
  # update-grub
  ...(略)...
  # update-initramfs -k all -u
  …(略)…
  #

そして、各種デスクトップ環境のログアウトメニューからハイバーネーション機能を動作させる為には、設定ファイル /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla を以下の内容で作成します。

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

以上の設定を行った後、 XMC10 を再起動することにより、 XMC10 上の Ubuntu 18.04.2 環境において、ハイバーネーション機能が有効化されました。

Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて休憩中。 ここで、 XMC10 は現在の所、サスペンド機能が正常に動作しない問題が発生している。 また、当方の手元の XMC10 は、バッテリーの駆動時間に若干の問題を抱えているので、サスペンド機能に代えてハイバーネーション機能の使用を検討する。 pic.twitter.com/K6GPUyZi9L

2019-12-12 14:50:03
拡大
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 XMC10 のハイバーネーション機能の有効化については、以下の一連の tweet を参照する事。 下記の一連の tweet では、 Swap 領域を増設メモリ上の loopback file に用意し、メモリ容量の2倍である 4GB を確保している。 twitter.com/z80oolong/stat…

2019-12-12 14:50:04
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 本日は、午前中に通常の通院案件を完了。午後より、奈良市内某所にて、昼食と休憩を取る。休憩中に、 XMC10 上の Ubuntu に関する技術案件の作業を行う。 XMC10 上の Ubuntu において、正常なハイバーネーションの有効化に成功した。 pic.twitter.com/GuI3J59sZU

2019-11-11 19:56:04
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 本日は、午前中に通常の通院案件を完了。午後より、奈良市内某所にて、昼食と休憩を取る。休憩中に、 XMC10 上の Ubuntu に関する技術案件の作業を行う。 XMC10 上の Ubuntu において、正常なハイバーネーションの有効化に成功した。 pic.twitter.com/GuI3J59sZU

2019-11-11 19:56:04
拡大
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 XMC10 上の Ubuntu において、ハイバーネーションを有効化するには、 4GB の Swap 領域が要求されるが、これは、増設メモリの loopback file 上に置く事が可能である。 /etc/fstab への設定により、起動時に Swap 領域を有効にする事が出来る。 pic.twitter.com/ZkQfjvRG1y

2019-11-11 20:48:18
拡大
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 なお、 Linux において増設メモリ上の loopback file にハイバーネーションを行う際は、 resume_offset= に loopback file の開始位置を指定する事等、カーネルへの引数の渡し方に留意する事。詳細は下記を参照。 wiki.archlinux.jp/index.php/%E3%…

2019-11-11 20:48:18
リンク wiki.archlinux.jp サスペンドとハイバネート - ArchWiki 5 users

ハイバーネーション機能に関する追加の設定

ハイバーネーション復帰後のスクリプトの実行

XMC10 上の Ubuntu 18.04.2 において、ハイバーネーション機能から復帰した際に、無線 LAN の接続が切断された状態で回復しない問題が発生しています。

この問題は、 XMC10 の内蔵無線 LAN デバイスドライバのカーネルモジュールである r8723bs を一旦 Linux カーネルから削除し、再度 Linux カーネルに導入する事により回避する事が出来ます。

上記のカーネルモジュール r8723bs の再導入を XMC10 のハイバーネーションの復帰時に自動で行なうには、ハイバーネーションの復帰時にカーネルモジュール r8723bs の再導入を行なうシェルスクリプトの起動を行うように systemd の設定を修正する必要があります。

先ずは、 systemd の設定ファイルである /etc/systemd/system/wifi-resume.service を以下の内容で作成します。

[Unit]
Description=Restart networkmanager at resume
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target

[Service]
User=root
Type=forking
ExecStart=/etc/systemd/wifi-resume.sh

[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target

そして、設定ファイル /etc/systemd/system/wifi-resume.service の所有者と権限を以下のように設定します。

  $ sudo -s
  # chown root.root /etc/systemd/system/wifi-resume.service
  # chmod 0644 /etc/systemd/system/wifi-resume.service

次に、カーネルモジュール r8723bs の再導入を行なうシェルスクリプトである /etc/systemd/wifi-resume.sh を以下の内容で作成します。

#!/bin/sh

/sbin/rmmod r8723bs
/sbin/modprobe r8723bs

/bin/systemctl restart network-manager.service

そして、シェルスクリプト /etc/systemd/wifi-resume.sh の所有者と権限を以下のように設定します。

  $ sudo -s
  # chown root.root /etc/systemd/wifi-resume.sh
  # chmod 0755 /etc/systemd/wifi-resume.sh
  # chmod +s /etc/systemd/wifi-resume.sh

以上の設定を行なった上で、以下のコマンドを実行すると、ハイバーネーションからの復帰時にカーネルモジュール r8723bs の再導入を行う設定が有効となります。

  $ sudo -s
  # systemctl enable wifi-resume
  #

ハイバーネーション機能の高速化

ハイバーネーション機能の制御において、ファイル /sys/power/image_size には、 Swap 領域に内蔵メモリの内容を書き出すためのイメージの上限のサイズが非負の整数を示す文字列として書かれています。

即ち、 XMC10 上の Ubuntu 18.04.2 においてハイバーネーション機能の高速化を図りたい場合は、以下のようにしてファイル /sys/power/image_size に、 XMC10 の内蔵メモリの容量を示す整数 2147483648 を書き出せば良いことが判ります。

  $ sudo -s
  # echo 2147483648 > /sys/power/image_size
  #

以上の設定を、 XMC10 上の Ubuntu 18.04.2 の起動時に自動的に行うには、 Ubuntu 18.04.2 の起動時に、ファイル /sys/power/image_size に、整数 2147483648 を書き出すシェルスクリプトの起動を行うように systemd の設定を修正する必要があります。

先ずは、 systemd の設定ファイルである /etc/systemd/system/sys-power-image-size.service を以下の内容で作成します。

[Unit]
Description=Setup hibernate image size
After=multi-user.target
After=graphical.target

[Service]
User=root
Type=forking
ExecStart=/etc/systemd/sys-power-image-size.sh

[Install]
WantedBy=multi-user.target
WantedBy=graphical.target

そして、設定ファイル /etc/systemd/system/sys-power-image-size.service の所有者と権限を以下のように設定します。

  $ sudo -s
  # chown root.root /etc/systemd/system/sys-power-image-size.service
  # chmod 0644 /etc/systemd/system/sys-power-image-size.service

次に、ファイル /sys/power/image_size に、整数 2147483648 を書き出すシェルスクリプトである /etc/systemd/sys-power-image-size.sh を以下の内容で作成します。

#!/bin/sh

/bin/echo 2147483648 > /sys/power/image_size

そして、シェルスクリプト /etc/systemd/sys-power-image-size.sh の所有者と権限を以下のように設定します。

  $ sudo -s
  # chown root.root /etc/systemd/sys-power-image-size.sh
  # chmod 0755 /etc/systemd/sys-power-image-size.sh
  # chmod +s /etc/systemd/sys-power-image-size.sh

以上の設定を行なった上で、以下のコマンドを実行すると、 Ubuntu 18.04.2 の起動時に、ファイル /sys/power/image_size に、整数 2147483648 を書き出す設定が有効となり、ハイバーネーション機能の高速化が有効になります。

  $ sudo -s
  # systemctl enable sys-power-image-size
  #
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 ここで、 XMC10 でハイバーネーションから復帰した際に Wifi が使用出来ない問題が発生する。 これは、 Wifi のデバイスドライバを再導入する事により解決可能で、 systemd への設定で再導入の自動化が可能である。 mongonta.com/f270-howto-exe…

2019-11-11 20:48:19
リンク ガジェット好きの日記 サスペンドの前後でコマンドを実行する【systemd】 | ガジェット好きの日記 Ubuntuでサスペンドするときの前後でコマンドやシェルを実行する手順を紹介します。Ubuntuのサスペンド 現在はsystemdのサスペンドを利用します。コマンドは下記です。sudo systemctl suspend pm-utilsは現在開発されておらず、使われなくなりました。サスペンドの前後にコマンドを実行するには systemdで制御されているのでUnitファイルを作成する必要があります。ファイル名は下記のようにし
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 また、下記の tweet でも述べた通り、 Swap 領域を拡張して、 Swap イメージの最大サイズを示す /sys/power/image_size にメモリ容量と同じ値の整数値を書き込む事で、ハイバーネーションを高速化出来る。 twitter.com/z80oolong/stat…

2019-12-12 14:50:04
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 XMC10 の設定において、 Swap 領域となるファイルのサイズを 8GB に拡張し、 Ubuntu の起動時に /sys/power/image_size に RAM メモリの容量に当たる整数 213909504 を書き込むよう設定すると、ハイバーネーションの高速化が実現した。 pic.twitter.com/mM3EpjY9de

2019-11-26 20:17:27
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて食事兼休憩中。 XMC10 の設定において、 Swap 領域となるファイルのサイズを 8GB に拡張し、 Ubuntu の起動時に /sys/power/image_size に RAM メモリの容量に当たる整数 213909504 を書き込むよう設定すると、ハイバーネーションの高速化が実現した。 pic.twitter.com/mM3EpjY9de

2019-11-26 20:17:27
拡大

日本語環境の導入

XMC10 への Ubuntu 18.04.2 を導入後、日本語フォント及び日本語入力メソッドの導入等の日本語環境の導入に関しては、 拙稿 "Debian noroot 環境で日本語環境を導入する" による手法を適用することが出来ます。

Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて休憩中。 XMC10 上の Ubuntu 18.04.2 環境を日本語化するには、 Debian noroot 環境において日本語環境を導入する過程について述べた当方の以下の投稿の内容を XMC10 上の Ubuntu 18.04.2 環境においても適用することが可能である。 qiita.com/z80oolong/item…

2019-12-12 14:50:05
リンク Qiita Debian noroot 環境で日本語環境を導入する - Qiita # はじめに [Debian noroot][DBNR] とは、 [Android OS][ANDR] 上において root 権限を取ることなく [Debian 環境][DEBI]を構築するためのアプリケーションです。 CPU の性... 2 users

LXDE の導入

現在、 XMC10 に導入した Ubuntu 18.04.2 には、軽量なデスクトップ環境である LXDE を導入しています。

デスクトップ環境 LXDE を導入することにより、軽量で快適なデスクトップ環境を実現することが出来ます。

Wayland の無効化

XMC10 上の Ubuntu 18.04.2 環境において、 Wayland が有効な状態になっていると、デスクトップ環境の描画速度が著しく低下する問題が発生します。

この場合は、設定ファイル /etc/gdm3/custom.conf を以下のように修正して Wayland を無効化します。

...(略)...
[daemon]
# Uncoment the line below to force the login screen to use Xorg
# 以下の WaylandEnale=false が記述されている行のコメントアウトを外す。
WaylandEnable=false
...(略)...
Z.OOL. @z80oolong

現在うだうだ中。現在、奈良市内某所にて休憩中。 Ubuntu 18.04.2 環境を導入した XMC10 には、現在、軽量のデスクトップ環境である LXDE を中心にデスクトップ環境を構築している。また、 Wayland の無効化設定も併せて行った。 使い慣れた環境であり、軽量な環境であるので非常に快適である。 pic.twitter.com/xYOBByJ9bG

2019-12-12 14:50:09
拡大
リンク lxde.org LXDE Desktop environment for all 34 users 891

この togetter の纏めについて

  • この togetter に纏められた tweet については、以下のモーメントからでも御覧になることが出来ます。
リンク Twitter KingJim XMC10 への Ubuntu 18.04.2 の導入についての tweet の纏め 本稿では、 Windows 10 搭載の小型ノートPCである KingJIM 社製 XMC10 に Debian 系の Linux ディストリビューションである Ubuntu 18.04.2 を導入する過程において、気付いた点及び留意点についての tweet を纏めたものです。なお本稿を纏めるに当たっては、 @mongonta555 氏と @amuramatsu 氏及び @kapper1224 氏のブログ記事及び Github のリポジトリ等を参考にしました。関係各位には心より感謝致します。