Ubuntu下运行QEMU树莓派模拟器:指定raw格式消除警告及启动问题
解决Qemu模拟树莓派的启动错误与格式警告问题
核心问题分析
你遇到的启动失败主要由两个问题导致:
- DTB参数语法错误:命令中
-dtb后的路径被拆分成了两个参数(qemu-rpi-kernel和versatile-pb-buster.dtb),导致Qemu误将文件夹名当作DTB文件加载,进而触发drive with bus=0, unit=0 (index=0) exists错误。 - 镜像格式未明确指定:使用
-hda简化参数加载rpi.img时,Qemu自动探测格式为raw但限制了写操作,出现警告。
修正后的完整命令
qemu-system-arm -M versatilepb -cpu arm1176 -m 256 \ -kernel qemu-rpi-kernel/kernel-qemu-4.19.50-buster \ -drive file=rpi.img,format=raw,if=scsi \ -append "dwc_otg.lpm_enable=0 root=/dev/sda2 console=tty1 rootfstype=ext4 elevator=deadline rootwait" \ -dtb qemu-rpi-kernel/versatile-pb-buster.dtb -no-reboot -serial stdio
关键修正点说明
正确指定DTB路径:将
-dtb qemu-rpi-kernel versatile-pb-buster.dtb改为-dtb qemu-rpi-kernel/versatile-pb-buster.dtb,用斜杠连接文件夹与文件名,确保Qemu加载正确的设备树文件。明确指定raw格式:
放弃-hda简化参数,改用-drive参数完整定义磁盘设备:file=rpi.img:指定镜像文件路径format=raw:明确声明镜像格式为raw,消除警告并解除写操作限制if=scsi:指定磁盘接口为SCSI,与append参数中的root=/dev/sda2(SCSI设备命名规则)匹配
修正启动参数拼写错误:
原append参数中的几处拼写错误会导致启动失败,已修正:dwc_otq→dwc_otgtt1→tty1exr4→ext4elavator→elevator
备选格式指定方式(若坚持用-hda)
如果一定要保留-hda参数,可通过额外的-drive参数补充格式声明,但这种方式不如直接用-drive直观:
qemu-system-arm -M versatilepb -cpu arm1176 -m 256 \ -kernel qemu-rpi-kernel/kernel-qemu-4.19.50-buster \ -hda rpi.img -drive file=rpi.img,format=raw,if=ide \ -append "dwc_otg.lpm_enable=0 root=/dev/hda2 console=tty1 rootfstype=ext4 elevator=deadline rootwait" \ -dtb qemu-rpi-kernel/versatile-pb-buster.dtb -no-reboot -serial stdio
注意此时root参数要改为/dev/hda2(IDE设备命名)。
内容的提问来源于stack exchange,提问作者Stan1990
相关产品推荐
相关产品推荐

