我在Ubuntu 20.04上编译了qemu 6.1.50版本。
我已经尝试过raspi2和raspi3,但我没有得到视频输出。控制台在我启动qemu的终端中显示启动消息,在这两种情况下,我都可以从那里登录到pi。然而,视频输出屏幕并没有真正显示任何内容,除了在raspi2模式下,它只显示四个树莓pi徽标。(需要明确的是,当我说我可以登录时,我的意思是从我的计算机终端,因为QEMU正在重定向那里的串行端口。这也很有效,只是不适用于与模拟pi的帧缓冲区绑定的视频输出。(
我需要指定一个选项来实现这一点吗?
以下是我正在运行的命令行,首先是树莓派2命令行:
qemu-system-arm -M raspi2b -append
"rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1"
-dtb ./dtbs/bcm2709-rpi-2-b.dtb
-sd 2021-10-30-raspios-bullseye-armhf-full.img
-kernel kernel7.img -m 1G -smp 4 -serial stdio -usb -device usb-mouse -device usb-kbd
-device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22
和raspi3b命令行:
qemu-system-aarch64 -M raspi3b
-append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1"
-dtb ./dtbs/bcm2710-rpi-3-b-plus.dtb
-sd 2021-10-30-raspios-bullseye-armhf-full.img
-kernel kernel8.img
-m 1G
-smp 4
-serial stdio
-usb -device usb-mouse -device usb-kbd
-device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22
值得一提的是,我确实有使用pi3仿真的网络,所以这很好。
提前感谢!
这不是一个完整的答案,但希望它至少缩小了您想要查找问题的范围。。。
如果你看到4个树莓标志,那么你的命令行会告诉QEMU模拟视频设备,而来宾内核会使用视频设备来显示至少一些东西。任何其他在您期望的时候不使用视频的东西几乎肯定是来宾操作系统配置问题。
- 检查是否从终端获得/dev/fb0。如果你没有得到/dev/fb0,肯定没有视频
- rasp机器类型不同于标准的pc架构,后者可以像vga设备一样使用。所以,要获取视频,请尝试机器类型的virt。下面是运行raspios和rootfs时使用的命令
qemu-system-arch64
-M virt,highmem=off
-smp 8
-M 2G
-cpu cortex-a72
-kernel$HOstrongHARE_DIR/linux-stable/arch/arm64/boot/Image
-append"root=PARTUUID=d97f5830-02 rw-console=ttyAMA0">
-串行telnet:localhost:4321,server,nowait
-监视器telnet:本地主机:4322,server,knowait
-设备VGA,id=vga1
-device secondary VGA,id=VGA 2
-device virtio键盘pci
-设备virtio鼠标pci
-hda$HOstrongHARE_DIR/data/images/2022-01-28-raspios-bullseye-arm64.img
- 如果你真的想使用机器类型的raspx,你需要研究该机器类型的帧缓冲设备或soc。然后将其重定向到qemu视频