据我了解,uefi BIOS从efi分区加载grub.efi。现在,这会从 /boot 目录加载一堆 grub 模块和配置文件。
但是 grub 如何找到引导分区所在的正确设备呢?在 grub 旧版中,您通常会使用以下命令将 grub 安装到特定分区
# grub-install --root-directory=/dev/sda
所以它会在哪里寻找启动目录是非常清楚的。 grub-efi 如何找出正确的设备?
答案1
使用 ghex 检查 efi 分区中的“BOOTX64.EFI”文件后,我发现了这一行。
search.fs_uuid a43d1f11-6ebe-477d-8be3-321a33bc37f9 root hd2,gpt4
set prefix=($root)'/boot/grub'
这表明grub(引导分区)的位置信息已被grub2-install嵌入到为系统生成的BOOTX64.EFI文件中。
然后 EFI 加载器执行 Grub2,您会得到 grub 界面来选择要启动的操作系统(内核)或者加载默认内核。
稍微扩展一下:“.EFI”文件有点像 UEFI 子系统可以执行的应用程序。旨在用于引导系统并提供一个方便的位置来运行执行保护和防病毒类型的程序。
他们将可扩展放在“统一可扩展固件接口”中