gpt4 book ai didi

c - 如何在多引导头文件中正确使用 QEMU

转载 作者:行者123 更新时间:2023-12-04 23:00:49 28 4
gpt4 key购买 nike

我正在学习操作系统制作的基础知识。我制作了一个多引导 header 兼容的 .asm 文件和一个 .c 文件。 .asm 文件中的代码调用了 .c 文件的 main 函数。

问题是 QEMU 无法从编译和链接 .asm 和 .c 文件后生成的文件启动。

它只是说它找不到可启动设备。

虽然,我能够从一个简单的 .asm 文件启动,如:-

  mov ax, 0x0e
mov al, 'H'
int 10h
times 510 - ($ - $$) db 0
jmp $
dw 0xaa55

还有什么我必须做的吗?

最佳答案

QEMU 2.0.0 确实支持多重启动
man qemu说:

-kernel bzImage

Use bzImage as kernel image. The kernel can be either a Linux kernel or in multiboot format.



我在以下位置上传了一个最小的 hello world 示例: https://github.com/cirosantilli/x86-bare-metal-examples/tree/dbbed23e4753320aff59bed7d252fb98ef57832f/multiboot

它生成一个 GAS + C 多重引导文件,并使用 QEMU 来运行它。
grub-mkrescue还可以将多引导二进制文件转换为可引导的 .iso图像这是另一种好方法。

巴里 mentions that不支持 multiboot2。如果您想测试它,如何生成 multiboot2 镜像: How to compile the simple kernel in multiboot2 Spec corrently?

关于c - 如何在多引导头文件中正确使用 QEMU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25469396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com