Raspberry-Pi
模擬 ARM v8 在使用者空間軟體的 qemu 中執行 DietPi
我似乎無法讓DietPi在qemu的通用 ARM 64 位
virt
機器上啟動。我正在使用 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...
這篇文章似乎有答案。基於此,我可以像這樣啟動 ARMv8 映像(在複製
kernel8.img
並bcm2710-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嗎?試圖調查,但我根本無法獲得控制台訪問權限,所以沒有網路我似乎是 SOL。
更新 2 *:我遇到的問題似乎完全是由於“dietpi”圖像。如果我只使用Raspberry Pi OS 64bit 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