如果 gpt 查找 efi 系统分区,grub 启动菜单将如何呈现

如果 gpt 查找 efi 系统分区,grub 启动菜单将如何呈现

我注意到所有 grub 资源(字体、图像等)都位于 中/boot/grub,该分区通常存在于 Linux 文件系统分区中。当然还有另一个分区,它安装在 上/boot/efi。我相信 gpt 会查找挂载并使用安装在 (Efi 系统分区) 上的分区,/boot/efi因为它包含实际启动系统的 .efi 文件。

我的问题是:如果 gpt 指向 efi 分区,并且 grub 启动管理器的所有资源都位于不同的分区中,那么如何加载启动菜单的所有资源?如果 gpt 指向 efi 分区,操作系统是否不应该在没有任何菜单的情况下启动,因为该分区仅包含 efi 启动文件?

答案1

现在我相信 gpt 会查找、挂载并使用分区

GPT 只是分区表;它不查找任何东西,也不挂载任何东西。系统固件(UEFI)负责完成所有查找工作。

如果 gpt 指向 efi 分区,并且 grub 启动管理器的所有资源位于不同的分区,那么如何加载启动菜单的所有资源?

GRUB 内置有自己的文件系统驱动程序;它能够使用 UEFI“原始设备访问”功能来访问各种文件系统的内容 - 非常像操作系统。(事实上,与真正的操作系统非常相似,GRUB 甚至有自己的 PCI、SATA、NVMe 等驱动程序,因此它不需要依赖固件。)

当您执行此操作时grub-install,它会构建 GRUB“核心映像”(grubx64.efi),该映像由 GRUB 内核和访问 /boot 所需的所有必要驱动程序模块组成,由 grub-install 确定。(/boot 分区的位置也会嵌入到 grubx64.efi 中。)使用 运行它--verbose可能会显示它将 part_gpt.mod、ext2.mod 等包含在最终的可执行文件中。

GRUB 实际上在 BIOS 上以相同的方式工作,只有“核心映像”存储在磁盘的其他位置(并通过 MBR 间接加载)。

话虽如此,UEFI 本身并不严格局限于一个分区;UEFI 程序可以访问固件识别的任何分区中的文件。另一个引导管理器 rEFInd 实际上加载UEFI 驱动程序对于需要访问的文件系统。

相关内容