ユーザー空間ソフトウェア用にqemuでDietPiを実行するARM v8エミュレーション

ユーザー空間ソフトウェア用にqemuでDietPiを実行するARM v8エミュレーション

受けられないと思います。ディテルピーvirt一般ARM 64ビットシステムで実行ゲーム。私はRaspberry Pi ARMv8 64ビットDietPi画像(Raspberry Pi 4用)を使用しています。

ユーザー空間ソフトウェア開発のためのシミュレーションでDietPiを実行するには、何を見逃しているか変更する必要がありますか?

カーネル、デバイスツリー、およびコマンドラインを抽出しました。/etc/fstabイメージの使用パーティションUUID:

$ cat /mnt/rpi/etc/fstab 
#----------------------------------------------------------------
# TMPFS
#----------------------------------------------------------------
tmpfs /tmp tmpfs noatime,lazytime,nodev,nosuid,mode=1777
tmpfs /var/log tmpfs size=50M,noatime,lazytime,nodev,nosuid,mode=1777
#----------------------------------------------------------------
# PHYSICAL DRIVES
#----------------------------------------------------------------
PARTUUID=df909cde-02 / ext4 noatime,lazytime,rw 0 1
PARTUUID=df909cde-01 /boot vfat noatime,lazytime,rw 0 2

DietPiには以下が含まれますcmdline.txt

root=PARTUUID=df909cde-02 rootfstype=ext4 rootwait fsck.repair=yes net.ifnames=0 logo.nologo console=serial0,115200 console=tty1

起動プロセスから最も遠いものは次の呼び出しです。このqemu-system-aarch64呼び出しは次の場所で終了します。Waiting for root device PARTUUID...

qemu-system-aarch64 \
    -M virt \
    -cpu cortex-a72 \
    -m 256 \
    -kernel kernel8.img \
    -drive file=DietPi_RPi-ARMv8-Bullseye.img \
    -append "root=PARTUUID=df909cde-02 rootfstype=ext4 rootwait fsck.repair=yes
 net.ifnames=0 logo.nologo" \
    -no-reboot \
    -serial stdio
[    0.827340] Initializing XFRM netlink socket 
[    0.827593] NET: Registered PF_PACKET protocol family
[    0.828221] Key type dns_resolver registered 
[    0.829502] registered taskstats version 1
[    0.829662] Loading compiled-in X.509 certificates
[    0.830795] Key type ._fscrypt registered
[    0.830908] Key type .fscrypt registered
[    0.830998] Key type fscrypt-provisioning registered
[    0.834275] of_cfs_init
[    0.835387] of_cfs_init: OK
[    0.843886] uart-pl011 9000000.pl011: no DMA platform data
[    0.846894] Waiting for root device PARTUUID=df909cde-02...

答え1

この投稿答えがあるようです。これに基づいて、次のようにARMv8イメージを起動できます(イメージをコピーした後)kernel8.imgbcm2710-rpi-3-b.dtb

qemu-system-aarch64 \
    -m 1024 \
    -M raspi3 \
    -kernel kernel8.img \
    -dtb bcm2710-rpi-3-b.dtb \
    -drive file=DietPi_RPi-ARMv8-Bullseye.img,format=raw \
    -append "console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4" \
    -device usb-net,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::2222-:22 \
    -serial stdio

問題なく起動しますが、コンソールにアクセスできません。ただし、SSHを使用してログインできます。

$ ssh -p 2222 root@localhost
Warning: Permanently added '[localhost]:2222' (ED25519) to the list of known hosts.
root@localhost's password:

デフォルトのパスワード(dietpi)を入力すると設定が完了します。 DietPiは最初のログイン時に複数の初期化スクリプトを実行しようとしますが、その後はすべてが期待どおりに機能するようです。


アップデート1:まあ、一度だけ、再起動するまで。 Dietpiは初期設定後にSSHを無効にしますか?調査しようとしましたが、コンソールにまったくアクセスできないため、ネットワークがないと機能できないようです。


アップデート2*:私が経験している問題は、完全に「dietpi」イメージが原因であるようです。ただ使うとRaspberry Pi OS 64ビットLiteイメージすると、コンソールアクセスが正常に機能します。

「ユーザー」モードネットワーキングは再起動後も維持されないようですが、タブデバイスの設定は正しく機能します。

これは私が使用したコマンドラインです。

qemu-system-aarch64 \
  -M raspi3 \
  -kernel kernel8.img \
  -append "root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 console=ttyAMA0" \
  -dtb bcm2710-rpi-3-b-plus.dtb \
  -m 1024 \
  -drive file=/var/lib/libvirt/images/raspios-work.img,format=raw \
  -netdev tap,id=net0,script=no,downscript=no,ifname=rpi0 \
  -device usb-net,netdev=net0 \
  -nographic \
  -serial mon:stdio

関連情報