GRUB2 和自定义文件系统

GRUB2 and a custom File System

从头开始编写 OS 实验并对 Grub2 和我的 FS 感到好奇

我还没有尝试太多,至少没有在实践中尝试过。我一直在阅读有关 GRUB2 以及如何设置它的信息,但我有点迷路了。抱歉,目前我没有任何源代码可以提供给您。我只是想知道如何设置 GRUB2 以使用我自己从头开始编写的文件系统。

为您的 FS 编写一个 GRUB 驱动程序模块,例如它如何为 XFS、ext2/3/4 等提供模块。 https://wiki.osdev.org/Writing_GRUB_Modules


https://www.gnu.org/software/grub/manual/grub/grub.html#Images 解释了 GRUB2 的不同组件。文件系统驱动程序作为 core.img 的一部分加载,它是从其他图像构建的。

请记住,许多新的文件系统不会立即获得 GRUB 支持,并且有一个单独的 /boot 分区 GRUB 可以 读取并不罕见。例如在单个磁盘上而不是复杂的 RAID(尽管 GRUB 确实有一些 md 支持),未加密,并且具有 GRUB 确实有驱动程序的长期建立的文件系统。这甚至不需要在阅读之前在异常关闭时进行复杂的日志重放。

此外,GRUB 引导的最早阶段需要从块列表中加载 core.img,该块列表被硬编码到固件加载的小的第一件事中,因此文件数据块可以在其中移动的文件系统当文件未被修改时,通常根本不适合 /boot。在 /boot.

上对任何内容进行任何更改后,您永远不知道何时必须重新安装 GRUB

但是如果您仍然想让您的 FS 在 GRUB 中启动,请检查 GRUB 源代码,可能有一些文档。

https://www.gnu.org/software/grub/grub-documentation.html

https://www.gnu.org/software/grub/grub-development.html