インテルPC(というか非ARM CPU)のホストLinux上でarm 32-bitまたは64-bitのゲストコンテナを作る手順です。ホスト・ゲスト共にDebian or Ubuntuを仮定しますが、それ以外のLinuxでも似た手順でできるはずです。コンテナは systemd-nspawn で実行します。LXCでも同様にできるはずです。
qeum-user-static のインストール
apt-get install qemu-user-static
。これは、他のCPUのためのLinux実行ファイルを例えばインテルCPUで動作するホストLinuxで実行するパッケージです。以下のバグが修正されているバージョンのqemu-user-staticでないと、もしかすると動作に問題が起きるかも知れません
- armhf countainer cannot be started on amd64 host
- armhf focal guest container fails on amd64 host with Failed to enqueue loopback interface start request: Operation not supported
問題が生じた場合、上記のバグを修正したパッケージ をインストールすると解消できます。その他に mmdebstrap
と systemd-container
と binfmt-support
パッケージをインストールしておきます。
コンテナのファイルシステムの構築
ARM 32-bitのゲストを構築したい場合以下の arm64
をすべて armhf
に置き換えること。
ゲストがUbuntuの場合
mmdebstrap --components="main restricted universe multiverse" --variant=standard --architectures=arm64 focal /var/lib/machines/arm64-guest http://ports.ubuntu.com/ubuntu-ports/
ゲストがDebianの場合
mmdebstrap --components="main contrib non-free" --architectures=arm64 --variant=standard buster /var/lib/machines/arm64-guest http://deb.debian.org/debian
コンテナの開始とログイン
コンテナの開始
systemd-nspawn -M arm64-guest -b
コンテナへのログイン
machinectl shell arm64-guest