从零开始编写操作系统实验并对 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 支持,并且拥有GRUB可以/boot
读取的单独分区并不罕见。例如,在单个磁盘上而不是复杂的 RAID 上(尽管 GRUB 确实有一些 md 支持),没有加密,并且有一个长期建立的文件系统,GRUB 确实有一个驱动程序。这甚至不需要在读取之前对脏关机进行复杂的日志重播。
此外,GRUB 引导的最早阶段需要core.img
从硬编码到固件加载的小文件中的块列表中加载,因此在文件未修改时文件数据块可以移动的文件系统不是通常完全适合/boot
。您永远不会知道在对/boot
.
但是如果你仍然想让你的 FS 在 GRUB 中可引导,请查看 GRUB 源代码,可能有一些文档。