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