You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

关键修正点说明

  1. 正确指定DTB路径:将-dtb qemu-rpi-kernel versatile-pb-buster.dtb改为-dtb qemu-rpi-kernel/versatile-pb-buster.dtb,用斜杠连接文件夹与文件名,确保Qemu加载正确的设备树文件。

  2. 明确指定raw格式:
    放弃-hda简化参数,改用-drive参数完整定义磁盘设备:

    • file=rpi.img:指定镜像文件路径
    • format=raw:明确声明镜像格式为raw,消除警告并解除写操作限制
    • if=scsi:指定磁盘接口为SCSI,与append参数中的root=/dev/sda2(SCSI设备命名规则)匹配
  3. 修正启动参数拼写错误:
    原append参数中的几处拼写错误会导致启动失败,已修正:

    • dwc_otq → dwc_otg
    • tt1 → tty1
    • exr4 → ext4
    • elavator → 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:35:22