在学习和调整我的启动设置时,我在我的驱动器的 EFI 分区上的 grub.cfg 中无法理解这些内容:
search.fs_uuid <uuid> root hd8,gpt5
set prefix=($root)'/boot/grub'
Run Code Online (Sandbox Code Playgroud)
我的预感是这会找到一个特定的 UUID,将其设置为 root,然后将 root 设置为 hd8,gpt5,然后使用该 root-var 设置设置前缀,以便在正确的位置找到 grub 加载程序。
现在 hd8、gpt5 和 uuid 是我的麻烦。我的带有这个 grub.cfg 和 EFI 文件夹的驱动器在 fith 分区上有 /boot/grub 并且是一个 gpt 驱动器 - 所以 gpt5 似乎没问题。
hd8 似乎很奇怪,因为我确实启动了这个驱动器,我本以为它是 hd0。
而 uuid 我认为它应该是 gpt5 分区之一,但也许这应该是驱动器 uuid?!
有人可以解释一下这里发生了什么,以及 gpt 驱动器的 fitht 分区上 /boot/grub 的正确值应该是什么?谢谢!
hd8,gpt5只是 GRUB 的提示,当uuid多次找到(多个分区具有相同的 UUID)时使用。
第一行的完整版本可能如下所示:
search --set=root --fs-uuid <uuid> --hint hd8,gpt5
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,可以安全地忽略该提示(或固定为实际值,而不会产生系统无法启动的风险)。
小智 0
ESP(EFI 分区)上 grub.cfg 的内容
UUID 是UEFI 规范第 5 节中提到的唯一分区 GUID
如图所示,根分区有一个 16 字节的唯一 GUID,当 BIOS 查找 ESP 中的 bootmanger/bootloader/OS loader 时,它会找到该根分区。/boot/grub提到grub.cfg在加载 Ubuntu 操作系统时加载 bootmanager / bootloader。
希望这个解释有帮助..