如果我在启用 GPT 的分区上使用 GRUB2,加载程序如何“知道”在哪里可以找到它的配置文件和其他第二阶段的文件?

注意:我发现了一些关于配置文件的提及,该文件与 GRUB 的 EFI 加载器位于同一文件夹中,并且包含从指定分区链式加载的“主要”配置文件,但这绝对不是真的 - 只有一个“东西”。 efi”文件。

最佳答案

有几种实际情况可能会发生这种情况:

  • 加载嵌入的配置文件。
  • 在与 GRUB 二进制文件相同的目录中加载配置文件。
  • 从在 grub-mkimage(由 grub-install 调用)执行时决定的路径加载配置文件。

  • 后者可能是您真正需要的功能 - 它是默认配置文件名( grub.cfg )、前缀(默认 /boot/grub ,但可以明确指定给 grub-mkimage )和 grub 分区名称的组合前缀位于。

    如果我在当前工作站上运行 strings /boot/efi/EFI/debian/grubx64.efi | tail -1,它会打印出存储值: (,gpt2)/boot/grub ,告诉 grubx64.efi 在 GPT 分区 2 的/boot/grub 中查找其配置文件。逗号前的位(GRUB 磁盘设备名称)被填充在运行时基于 grubx64.efi 图像本身是从哪个磁盘加载的。

    动态加载的模块也将在此位置下搜索,但在特定于架构/平台的目录中 - 在本例中为 /boot/grub/x86_64-efi

    关于boot - GRUB2 UEFI 加载程序如何知道在哪里查找配置文件(或第二阶段的文件所在的位置)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35269943/

    10-13 05:34