我正在从头开始编写引导加载程序和内核,我的目标是创建一个可以由 GRUB 和我的引导加载程序加载的内核。不过,问题不在于内核。我不知道如何在 grub 加载内核的 0x100000 处加载内核。0x100000 不够小,无法放入 16 位寄存器,而且太大而无法使用分段(使用 BIOS 中断读取磁盘时使用地址缓冲区 es:bx)。
所以我的问题是,GRUB 是如何将内核加载到内存中的?
我正在通过 Little Os Book 构建内核,据我所知,内核是在 1MB 地址加载的,因为它是在链接描述文件中指定的。
你可以在这里查看这本书,阅读链接内核部分