2019年6月現在公開されているRaspberry Pi 3 Model B/B+用64bitUbuntuイメージを使ってオフラインでUbuntuをセットアップしようとすると、外部ネットワークへの接続待ちで数分待つことがあります。長いんですよね……
素直にLANケーブルを接続すればよいのですが、そうでなくても動くようにしたいなと思ってイメージに手を加えたのでその方法とその成果物をシェアしたいと思います。
動作確認をしたのは64bit版イメージのみですが、32bit版も同じように対処できると思います。今回紹介する方法で編集するイメージは本ページの「作成したイメージ」からダウンロードすることもできます。
発生する問題
Ubuntu Wikiにリンクが張られているイメージ(ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz
)をmicroSDに書き込み、LANケーブルを接続せずにそのまま起動すると、以下の画像のように「A start job is running for Wait for Network to be Configured」と表示されなかなかログインさせてくれません。eth0がIPアドレスを取得できないためにsystemd-networkd
がずっと待っていることが問題のようです。
環境
以下の環境でイメージ(ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz
)を編集しました。
- Ubuntu Desktop
- 16.04.6と18.04.2でどちらでも問題なくイメージを編集できました
手順
まずはじめにUbuntu Wikiから64bit版のイメージをダウンロードして展開します。ダウンロードするディレクトリはどこでも問題ありません。今回は~/Downloads
以下に展開することにしました。
cd ~/Downloads curl -O http://cdimage.ubuntu.com/ubuntu/releases/bionic/release/ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz xz -kdv ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz
次に/mnt
以下に展開したイメージファイルをマウントします。/dev/mapper/loop11p2
のところのloopNp2
のNの値は使用しているPCの環境によって変わります。
sudo kpartx -a ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img sudo mount /dev/mapper/loop11p2 /mnt
マウントしたイメージの中身を編集します。apt
のauto-upgrades
とsystemd-networkd
のwait-online
サービスを無効にします[1]systemd-networkd-wait-online.service
を無効にしてよいのか正直判断し切れていないのですが、以下のページでは無効にすれば動く(動きそう)という記述が、
Raspberry Pi 3にROS2をインストール – RT Robot Shop Blog
https://www.rt-shop.jp/blog/archives/11061
https://www.asrobot.me/entry/2018/07/05/045832/ (opens in a new tab)" href="https://www.asrobot.me/entry/2018/07/05/045832/" target="_blank">RaspberryPi 3B+でUbuntu 18.04を起動させる方法 【無線LAN動作確認済み】 – ASRobot
https://www.asrobot.me/entry/2018/07/05/045832/
以下のページでは無効にしても大丈夫そうという記述が見られるので、大丈夫なのだと思います。
https://qiita.com/yunano/items/8636a6dd6becad84920d (opens in a new tab)" href="https://qiita.com/yunano/items/8636a6dd6becad84920d" target="_blank">NetworkManager-wait-online.serviceはどのような場合にenableにすれば良いか、を理詰めで考える – Qiita
https://qiita.com/yunano/items/8636a6dd6becad84920d
何かわかれば追記します。。
cd /mnt/etc/apt/apt.conf.d/ sudo sed -i 's/1/0/g' 20auto-upgrades cd /mnt/etc/systemd/system/network-online.target.wants sudo rm -rf systemd-networkd-wait-online.service sudo ln -s '/dev/null' systemd-networkd-wait-online.service
このあとイメージを圧縮する際にできる限りイメージサイズを小さくできるよう、未使用領域をゼロ埋めします[2]ここで紹介している方法です。
https://memoteki.net/archives/1101#PC。
sudo dd if=/dev/zero of=/mnt/dummy bs=4096 sudo rm /mnt/dummy
イメージをアンマウントします。
cd ~/Downloads sudo umount /mnt sudo kpartx -d /dev/loop11 sudo losetup -d /dev/loop11
アンマウントしたイメージをxz
で圧縮します。
mv ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img ubuntu-18.04.2-preinstalled-server-arm64+raspi3-20190303.img xz -kvz ubuntu-18.04.2-preinstalled-server-arm64+raspi3-20190303.img
以上でイメージの編集は完了です。
作成したイメージ
作成したイメージは以下のページに公開しました。
https://github.com/Tiryoh/RaspberryPi_Ubuntu/releases
- ubuntu-18.04.2-preinstalled-server-arm64+raspi3-20190303.img.xz
- MD5 hash:
8cf92c0eb9ee51e719a56e27307193a0
- MD5 hash:
イメージの書き込みと起動
今回編集したイメージをmicroSDに書き込み、起動すると比較的すぐに(1分程度?)ログインできるようになります。
cloud-init
がubuntu
アカウントのセットアップをしてくれているようで、初回はubuntu login:
と表示されていてもCloud-init v(略) finished at (略)
と表示されるまで待つ必要があります。
balenaEtcherを使うと簡単にmicroSDにイメージを書き込みができますので、おすすめです。
balenaEtcherはWindows/macOS/Linuxで使用できます。Windowsでの使い方は以下に書いていますので是非。
まとめ
Ubuntu Wikiにて紹介されているRaspberry Pi 3 Model B/B+用のイメージを編集してオフライン環境でも待たずに起動できるようにする方法を紹介しました。紹介した方法を用いて編集したイメージを用いることで起動時にsystemd-networkd
がIPアドレス取得待ちでログインできるまで長時間待たされないようになることを確認しました。
↑1 | systemd-networkd-wait-online.service を無効にしてよいのか正直判断し切れていないのですが、以下のページでは無効にすれば動く(動きそう)という記述が、Raspberry Pi 3にROS2をインストール – RT Robot Shop Blog https://www.rt-shop.jp/blog/archives/11061 https://www.asrobot.me/entry/2018/07/05/045832/ (opens in a new tab)" href="https://www.asrobot.me/entry/2018/07/05/045832/" target="_blank">RaspberryPi 3B+でUbuntu 18.04を起動させる方法 【無線LAN動作確認済み】 – ASRobot https://www.asrobot.me/entry/2018/07/05/045832/ 以下のページでは無効にしても大丈夫そうという記述が見られるので、大丈夫なのだと思います。 https://qiita.com/yunano/items/8636a6dd6becad84920d (opens in a new tab)" href="https://qiita.com/yunano/items/8636a6dd6becad84920d" target="_blank">NetworkManager-wait-online.serviceはどのような場合にenableにすれば良いか、を理詰めで考える – Qiita https://qiita.com/yunano/items/8636a6dd6becad84920d 何かわかれば追記します。 |
---|---|
↑2 | ここで紹介している方法です。 https://memoteki.net/archives/1101#PC |
コメント