GRUB 如何在 MBR 磁盘上找到 /boot 分区?

GRUB 如何在 MBR 磁盘上找到 /boot 分区?

到目前为止我发现的事情(可能不准确):

  • GRUB 安装boot.img在磁盘的第一个扇区 (MBR) 中。

  • GRUB 安装core.img在 MBR 后的间隙中。

  • boot.img由 BIOS 加载,然后加载core.img并向其传输控制权。

但下一步如何core.img找到/boot分区呢?磁盘上可能有多个分区,那么核心映像如何正确识别哪个分区/boot?这是硬编码在核心图像中还是每次都会进行搜索?

其他研究表明,有一个--boot-directory选项grub-install可以让您选择安装 GRUB 的位置。但核心镜像仍然必须在启动时找到这个分区。它再次需要某种形式的标识符。这是标签、UUID 还是其他什么?

答案1

地址被硬编码在core.img.core.img具有通过文件路径调用第 2 阶段模块所需的所有内核和 Grub 模块。您将其指定为(hd0,msdos1)/boot/grub.默认情况下,它会尝试加载normal模块(hd0,msdos1)/boot/grub/i386-pc/normal.mod(假设 i386-pc arch)。

更多详细信息请参见此处。

相关内容