仅使用u-boot从磁盘映像引导QEMU

时间:2018-04-05 10:42:37

标签: qemu u-boot

QEMU允许在u-boot传递给-kernel选项的情况下启动VM。但它需要在主机系统上提供额外的文件(u-boot本身)。我的目标是加载存储在QEMU磁盘映像中的u-boot。所以我希望做到这样的事情:

qemu-system-arm -kernelblocks 1:128 -device sdhci-pci -drive format=raw,file=./build/disk.img,if=none,id=disk,cache=writeback,discard=unmap -device sd-card,drive=disk

其中-kernelblocks是一个虚构选项,告诉QEMU从QEMU磁盘映像的特定块加载u-boot,而不是在主机系统上加载文件。

所以问题是:如何让QEMU从QEMU磁盘映像加载u-boot? 作为替代方案,我可以接受答案,显示如何从QEMU磁盘映像上的文件系统加载文件。

对于我的任务,我可以自由地将任何选项传递给QEMU,但除了QEMU磁盘映像外,主机系统上不能有任何文件。

1 个答案:

答案 0 :(得分:1)

您的命令行未指定特定的机器型号,这对qemu-system-arm无效。以下经验法则适用于或不适用于特定的QEMU机器型号。

要运行QEMU访客代码,您通常可以:

  • 直接使用-kernel指定来宾内核,然后启动并知道如何与模拟磁盘通信
  • 使用-bios选项(或某些-pflash选项)指定访客BIOS;然后BIOS会启动并知道如何从仿真磁盘读取内核。这里的“bios”可以是u-boot或UEFI或类似的东西。

第一个是方便的捷径;第二个就像硬件实际启动的方式。 (qemu-system-x86_64的工作方式与-bios选项相似;您只是不注意,因为默认情况下启用了-bios选项并从系统库目录加载BIOS图像。)某些板模型不支持-bios

QEMU没有任何说法“从磁盘块中加载来宾图像”。这对于手工模拟访客BIOS的细节会有太多的了解,我们更愿意通过运行实际的访客BIOS blob来提供该功能。