3

我正在尝试开发一个操作系统。我已经完成了OSDev的准系统教程,但在多重引导方面仍然存在一些问题。

据我了解,当我按照教程创建多引导映像时,我有一个 ELF 格式的二进制文件。-kernel当我指定选项时,这个 ELF 可执行文件由 QEMU 加载到内存中。所以我在内存中有一个可执行程序,它有一个入口点。它旁边有一些函数和库。记忆中没有别的东西了。也没有可以读取或写入扇区的软盘或磁盘映像。这主要是因为我没有在这方面向 QEMU 指定任何内容。

但是,我想要实现的是在 QEMU 加载我的 ELF 可执行文件之后,我想要一个可以读取或写入扇区的磁盘或软盘架构。我还想从中加载一些用户程序,或者在其上设置文件系统。到目前为止,我的想法是这样的:

qemu-system-i386 -kernel myKernel.bin -fda myDisk.image

或者,也许,我应该获取我的myKernel.bin文件,用零填充它,直到它与 512 字节对齐,然后将其余的磁盘映像附加到它。

我的问题是如何使用 QEMU 实现此功能。在深入编写磁盘驱动程序之前,我需要知道这样的任务是否可行。如果不可能,我可以采取不同的方法,但这些是我现在的想法。我已经调查过了-initrd,这不是我想要的。我也不希望 QEMU 将任何文件加载到 RAM 中。相反,我想自己操作磁盘映像。关于如何做到这一点的任何建议?

4

1 回答 1

1

您不需要软盘映像多重引导内核,除非您编写了某种加载程序。该-kernel标志的工作方式与 grub 类似,并且比从虚拟媒体加载要快得多。这就是有多少 linux 内核和驱动程序开发人员测试他们的代码,而不是每次都创建一个虚拟媒体映像。

于 2017-08-24T02:02:48.367 回答