返回

Win11 使用 QEMU 模拟 Raspberry Pi OS 启动故障排除

windows

Windows 11 下使用 QEMU 模拟 Raspberry Pi OS

在 Windows 11 环境下,使用 QEMU 模拟 Raspberry Pi OS (raspios) 可能出现启动错误。这类问题常见原因是镜像格式不兼容或缺乏必要的模拟参数。 并非所有镜像类型都能直接用于模拟,正确配置 QEMU 参数至关重要。以下将提供一些排查和解决该问题的思路与方法。

镜像格式与转换

问题分析 :QEMU 可以直接使用 *.img 镜像文件,但某些 Raspberry Pi OS 镜像可能存在分区表不正确或格式不规范问题,导致 QEMU 无法识别。这不同于 *.iso 文件,后者通常用于光盘或虚拟机安装,包含引导扇区。虽然都是磁盘映像,处理方式有所不同。

解决方案 :一种方法是尝试转换镜像格式。可以利用 qemu-img 工具将 *.img 转换为 QEMU 可以更好地处理的格式,例如 qcow2 格式。

操作步骤

  1. 确保 QEMU 安装完成,并且 qemu-img 工具可在命令行中直接使用。

  2. 打开命令提示符或 PowerShell。

  3. 使用以下命令将原始的 *.img 文件转换为 *.qcow2 格式,source.img 代表原镜像,target.qcow2 代表转换后的镜像:

    qemu-img convert -f raw -O qcow2 source.img target.qcow2
    

    此命令读取原始的原始镜像文件( -f raw ),然后将其转换为 qcow2 格式的文件( -O qcow2 ).

  4. 之后,使用转换后的 *.qcow2 文件尝试模拟启动。

QEMU 启动参数调整

问题分析 :单纯转换格式可能不够,还需要为 QEMU 提供正确的硬件配置参数,以便模拟 ARM 架构 Raspberry Pi 环境。常见的配置问题包括缺少正确的 CPU 架构、内存大小以及启动镜像的指定等。

解决方案 :合理配置 QEMU 的命令行参数。 需要指定 CPU 类型 (-cpu), 内存 (-m) 以及 -kernel-dtb 等。对于新版 Raspberry Pi OS, 有时还需指定机器类型 (-machine) 。

操作步骤

  1. 根据你的 Raspberry Pi 版本选择正确的内核文件,设备树文件 (*.dtb).
    这些文件在部分 raspios 镜像中会分开提供,或者在压缩包里面。如未单独提供,可以通过从官方 Raspios镜像中提取

  2. 确定内存分配。模拟启动至少需要256M内存。

  3. 打开命令提示符或 PowerShell。

  4. 使用以下命令行尝试模拟启动:

    qemu-system-arm ^
     -machine raspi3 ^
     -cpu arm1176 ^
     -m 256M ^
     -kernel kernel7.img ^
     -dtb bcm2709-rpi-2-b.dtb ^
     -sd target.qcow2  ^
     -serial stdio
    

    指令说明:

    • qemu-system-arm: 调用QEMU的ARM仿真器。
    • -machine raspi3:指定机器类型为Raspberry Pi 3, 请按需更改机器类型。比如 raspi2, raspi4
    • -cpu arm1176:指定CPU类型为arm1176, 这个类型适用于大多数老的 raspios 系统镜像,可尝试改为 cortex-a53/a72 等。
    • -m 256M : 指定虚拟机的内存为256MB, 按需增加。
    • -kernel kernel7.img : 指定Linux内核镜像文件。不同 Raspios 镜像内核名称可能不一样。
    • -dtb bcm2709-rpi-2-b.dtb: 设备树二进制文件。它用来硬件信息。设备树文件根据树莓派版本而定。
    • -sd target.qcow2: 指定磁盘镜像。这里的 target.qcow2 指的是通过 qemu-img 转换得到的磁盘镜像。
    • `-serial stdio` 将串口重定向到终端。 这通常用来方便查看启动信息。
      

一些额外的提示:

  • 设备树文件: 对于 Raspberry Pi 4 应该使用相应的 dtb 文件, 如: bcm2711-rpi-4-b.dtb
  • 网络: 如需要网络功能, 还要设置 -net-net user 等网络参数。 具体的网络配置因实际需求而异,可自行查找相关QEMU网络配置方法。

通过以上步骤,大多数情况下应该可以解决启动问题。如果仍有问题,请进一步检查 Raspios 镜像的版本和 QEMU 版本,确保参数正确对应。

相关资源

虽然本篇未详细展开, 但以下列出一些与QEMU和raspios相关的参考资源:

  • QEMU官方网站: 详细介绍了QEMU的使用方式和参数,可以查阅具体配置细节。
  • Raspberry Pi官方文档: 包含了各种Raspberry Pi型号的详细信息,设备树等信息.
  • 社区论坛: 一些开发社区经常讨论相关问题,例如如何配置 QEMU 模拟。