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

Cyk*_*ker 2 grub boot

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

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

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

  • boot.img由 BIOS 加载,然后加载core.img并将控制权转移给它。

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

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

psa*_*ssy 6

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

更多细节在这里。