仅从磁盘映像使用 u-boot 启动 QEMU
Booting QEMU with u-boot solely from disk image
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 磁盘映像。
您的命令行未指定特定机器型号,这对 qemu-system-arm 无效。以下经验法则可能适用于也可能不适用于特定的 QEMU 机器型号。
对于 运行 QEMU 访客代码,您通常可以:
- 直接使用 -kernel 指定来宾内核,然后启动并知道如何与模拟磁盘对话
- 使用 -bios 选项(或某些 -pflash 选项)指定客户 BIOS;然后 bios 启动并知道如何从模拟磁盘读取内核。这里的 "bios" 可能是 u-boot 或 UEFI 或类似的东西。
第一个是方便快捷;第二个是硬件实际启动的方式。 (qemu-system-x86_64 的工作方式类似于 -bios 选项方法;您只是没有注意到,因为默认情况下启用了 -bios 选项并从系统库目录加载 bios 映像。)一些板型号不不支持-bios。
QEMU 没有任何表示 "load the guest image from this block of the disk" 的方法。这将过多地涉及 hand-emulating 来宾 BIOS 的细节,我们更愿意仅通过 运行 实际的来宾 BIOS blob 来提供该功能。
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 磁盘映像。
您的命令行未指定特定机器型号,这对 qemu-system-arm 无效。以下经验法则可能适用于也可能不适用于特定的 QEMU 机器型号。
对于 运行 QEMU 访客代码,您通常可以:
- 直接使用 -kernel 指定来宾内核,然后启动并知道如何与模拟磁盘对话
- 使用 -bios 选项(或某些 -pflash 选项)指定客户 BIOS;然后 bios 启动并知道如何从模拟磁盘读取内核。这里的 "bios" 可能是 u-boot 或 UEFI 或类似的东西。
第一个是方便快捷;第二个是硬件实际启动的方式。 (qemu-system-x86_64 的工作方式类似于 -bios 选项方法;您只是没有注意到,因为默认情况下启用了 -bios 选项并从系统库目录加载 bios 映像。)一些板型号不不支持-bios。
QEMU 没有任何表示 "load the guest image from this block of the disk" 的方法。这将过多地涉及 hand-emulating 来宾 BIOS 的细节,我们更愿意仅通过 运行 实际的来宾 BIOS blob 来提供该功能。