Operating system 使GRUB能够从内核自动引导

Operating system 使GRUB能够从内核自动引导,operating-system,kernel,osdev,grub,Operating System,Kernel,Osdev,Grub,我正在为操作系统开发内核。为了执行它,我决定使用GRUB。目前,我在GRUB的stage1,stage2上附加了一个脚本,一个pad文件和内核本身一起使它可以启动。唯一的问题是,当我运行它时,您必须手动让GRUB知道内核的位置和大小,然后引导它,如下所示: kernel 200+KERNELSIZE boot 内核200+内核大小 靴子 KERNELSIZE是以块为单位的内核大小。这对一开始来说很好,但是有可能在二进制文件中获取这些值并使GRUB自动引导内核吗?关于如何实现这一点有什么建议吗?我

我正在为操作系统开发内核。为了执行它,我决定使用GRUB。目前,我在GRUB的
stage1
stage2
上附加了一个脚本,一个pad文件和内核本身一起使它可以启动。唯一的问题是,当我运行它时,您必须手动让GRUB知道内核的位置和大小,然后引导它,如下所示:

kernel 200+KERNELSIZE boot 内核200+内核大小 靴子
KERNELSIZE
是以块为单位的内核大小。这对一开始来说很好,但是有可能在二进制文件中获取这些值并使GRUB自动引导内核吗?关于如何实现这一点有什么建议吗?

我想您可以创建自己的menu.lst conf文件,在grub shell中加载“configfile/path/to/menu.lst”,然后根据需要替换值,然后执行“setup(hd0)”。不过我只是猜测。。不知道自定义设置的区别。

提供了有关GRUB中块列表存储的一般信息。最重要的是,它提到了块列表存储在stage2中定义良好的位置


您可能需要查看GRUB源代码以确定确切位置。

传统方法是将内核本身放在GRUB可以读取的文件系统上;你不这么做有什么特别的原因吗?我同意查尔斯的看法。将您的操作系统放在现有的文件系统中,直到您的操作系统拥有自己的文件系统为止。好吧,为了进行测试,我们将最终的二进制文件(包括GRUB)作为磁盘上的文件,在模拟器中使用。我该如何制作一个有文件系统的磁盘映像呢?事实证明,我们使用的是一个老教程,它告诉我们如何使用它。此后,我们采纳了Charles的建议,将可引导映像移动到ISO。