QEMUでRaspberry PiをUser mode emulate

QEMUにはuser modeというものがあり、仮想マシン全体をエミュレートするのではなく、必要最小限をエミュレートすることができる。 これにより、dockerやchrootなどで、他アーキのイメージに入ってコマンドを実行できる。 Raspberry Piのエミュレートで検索すると、仮想マシンでやるものばかりヒットするが、多くの場合User modeで十分なのではなかろうか?(dockerもchrootで十分な場合も多いのだが、その件はいまは触れない) WSL2でも実行できる。

# qemu-user-staticのインストール
sudo apt install qemu-user-static

# イメージのループバックマウント
sudo losetup -P --show /dev/loop0 /path/to/raspios.img

# ファイルシステムのマウント
udisksctl mount -b /dev/loop0p2

# マウントポイントに移動
cd /path/to/mountpoint

# /sysなどをbind mount
sudo mount --bind /sys ./sys
sudo mount --bind /proc ./proc
sudo mount --bind /dev ./dev
sudo mount --bind /dev/pts ./dev/pts

# user mode emulateのためのバイナリをコピー
sudo cp /usr/bin/qemu-arm-static ./usr/bin/

# chrootする
sudo chroot . /usr/bin/qemu-arm-static /bin/bash --login -i