启用 GRUB 自动从内核引导
Posted
技术标签:
【中文标题】启用 GRUB 自动从内核引导【英文标题】:Enabling GRUB to automatically boot from the kernel 【发布时间】:2010-09-17 23:14:08 【问题描述】:我正在为操作系统开发内核。为了执行它,我决定使用 GRUB。目前,我有一个附加到 GRUB 的stage1
、stage2
的脚本、一个 pad 文件和内核本身,这使得它可以启动。唯一的问题是,当我运行它时,你必须让 GRUB 知道内核在哪里以及它有多大,然后手动启动它,如下所示:
内核 200+KERNELSIZE 开机
KERNELSIZE
是以块为单位的内核大小。一开始这很好,但是否可以在二进制文件中获取这些值并让 GRUB 自动引导内核?关于如何实现这一点的任何建议?
【问题讨论】:
常规方法是将内核本身放在 grub 可以读取的文件系统上;你不这样做有什么特别的原因吗? 我同意查尔斯的观点。将您的操作系统放入现有文件系统,直到您的操作系统拥有自己的文件系统。 好吧,为了测试,我们将最终的二进制文件(包括 GRUB)作为磁盘上的文件用于模拟器。如何制作包含文件系统的磁盘映像? 【参考方案1】:http://www.gnu.org/software/grub/manual/grub.html#Embedded-data 提供了一些关于 GRUB 中的块列表存储的一般信息。最重要的是,它提到阻止列表存储在 stage2 中明确定义的位置。
您可能需要查看 GRUB 源代码以确定确切位置。
【讨论】:
【参考方案2】:我想你可以创建自己的 menu.lst conf 文件,在 grub shell 中使用“configfile /path/to/menu.lst”加载它,然后根据需要执行“setup (hd0)”替换值。不过我只是猜测.. 不知道您的自定义设置有什么不同。
【讨论】:
原来我们使用的是一个旧教程,它告诉我们原来的样子。此后,我们采纳了 Charles 的建议,将可启动映像移至 ISO。以上是关于启用 GRUB 自动从内核引导的主要内容,如果未能解决你的问题,请参考以下文章