【问题标题】:GRUB2 and a custom File SystemGRUB2 和自定义文件系统
【发布时间】:2019-09-23 02:13:09
【问题描述】:

从零开始编写操作系统实验并对 Grub2 和我的 FS 感到好奇

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

【问题讨论】:

  • 为你的 FS 写一个 GRUB 驱动模块,就像它有用于 XFS、ext2/3/4 等的模块一样。
  • 谢谢,@彼得。您知道此类任务的任何教程吗?附言;如何将您的评论标记为答案?

标签: assembly mbr grub2


【解决方案1】:

为您的 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 上的任何内容发生任何更改后,您永远不会知道何时必须重新安装 GRUB。


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

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

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

【讨论】:

  • 非常感谢你们,伙计们。这很有启发性。我还了解到,为我的操作系统编写安装程序背后有大量工作,如果我想公开它的话。 :) 我也在脑海中想象着这一点……我必须在已建立的 FS 中完成所有初始开发,然后才能开始使用我的 FS 进行格式化,然后编写 GRUB 模块变得更加重要... 对不起。我的作品就像冗长的 1,000 级。它也可以帮助我思考问题并发现我的思路中的任何错误。 :)
  • @wolverine79936:您根本不必使用 GRUB。一个简单的 EFI 应用程序可以是加载内核 + initrd 的整个引导程序。例如我的/boot 是我PC 上的UEFI 可以读取的350MB VFAT 文件系统(它是“EFI 系统分区”)。我的/ 分区是 BTRFS(使用 Arch Linux)。我使用 systemd-boot 而不是 GRUB。 wiki.archlinux.org/index.php/Arch_boot_process#Boot_loader 列出了各种引导加载程序,包括那些可以从 UEFI 引导或将内核本身变成 UEFI 应用程序的引导加载程序。
  • 谢谢你,@彼得。我会尽量记住 EFI。不幸的是,我当前的开发计算机没有 EFI。它仍然是一个 BIOS。不过,在不久的将来,我希望在不久的将来用 Intel 硬件而不是 AMD 构建一个新的开发组合。 ;)
  • 我想在这里找到自己的答案。一个站点说 GRUB2 可以处理 NTFS 分区上的 /boot/grub,另一个站点说不,它需要在 FAT 分区上。如果它确实需要是 FAT 分区,我可以使用 FAT32 还是必须是 FAT16?
  • 我根本没有机会对此进行测试,但我确实找到了pete.akeo.ie/2015/01/…。希望这是我正在寻找的。 :)
猜你喜欢
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2013-10-13
  • 2013-05-04
相关资源
最近更新 更多