到目前为止我发现的事情(可能不准确):
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)。