私はRaspberry Pi OSイメージを使用してsystemd-nspawn
起動qemu-arm-static
し、ストックイメージをSDカードにフラッシュする前にカスタマイズを適用しています。
- ホストはUbuntu 20.10(システムバージョン:246.6-1ubuntu1)です。
- ゲストオペレーティングシステムはRaspberry Pi OSです(2020年8月、Debian Busterベース、システムバージョン:241)。
これは完璧に動作します。を使用してパッケージをインストールしたりapt-get
、を使用してサービスを有効にするsystemctl
などの作業を行うことができます。
1つの例外があります。hostnamectl
これは、最新のLinuxディストリビューションでホスト名を設定するための好ましい方法です。
# hostnamectl
Failed to query system properties: Connection timed out
システムログに次の出力が表示されます。
Oct 26 20:08:05 raspberrypi dbus-daemon[219]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.23' (uid=0 pid=2300 comm="/usr/bin/qemu-arm-static /usr/bin/hostnamectl " label="unconfined")
Oct 26 20:08:05 raspberrypi systemd[1]: Starting Hostname Service...
Oct 26 20:08:05 raspberrypi systemd[2303]: systemd-hostnamed.service: Failed to set up network namespacing: Input/output error
Oct 26 20:08:05 raspberrypi systemd[2303]: systemd-hostnamed.service: Failed at step NETWORK spawning /lib/systemd/systemd-hostnamed: Input/output error
Oct 26 20:08:05 raspberrypi systemd[1]: systemd-hostnamed.service: Main process exited, code=exited, status=225/NETWORK
Oct 26 20:08:05 raspberrypi systemd[1]: systemd-hostnamed.service: Failed with result 'exit-code'.
Oct 26 20:08:05 raspberrypi systemd[1]: Failed to start Hostname Service.
Oct 26 20:08:30 raspberrypi dbus-daemon[219]: [system] Failed to activate service 'org.freedesktop.hostname1': timed out (service_start_timeout=25000ms)
次のコマンドを使用してイメージを起動します。
systemd-nspawn -b -i /dev/loop3p2
ホスト名の設定の回避策として、次の古典的な方法を使用します。
# echo my-pi > /etc/hostname
# echo "127.0.1.1 my-pi" >> /etc/hosts
hostnamectl
これはうまく機能しますが、メソッドが実行時に機能しない理由systemd-nspawn
と、これが予想される動作であるかどうかを理解したいと思います。