我在同一个ssd上安装了win10和Linux双启动,在安装Linux时,它包含了grub。安装完成后,我可以看到ESP分区中添加了一个新的Linux efi文件。现在我决定完全删除 Linux,我所做的第一步是使用名为 EasyUEFI 的工具删除 efi 启动项。当我重新启动并按 F11 时,该条目消失了。
但有两部分让我困惑:
删除该条目后,Linux efi 文件仍在 ESP 分区中,我认为此类 efi 文件的存在是 UEFI 在用户启动时按 F11 时知道是否存在此类启动选项的方式。现在这意味着启动选项被记录在其他地方,而 EasyUEFI 工具只是将其删除。它在哪里,在 ESP 分区中吗?
我不太确定我是否理解正确,UEFI 引导(efi 文件以及安装过程中添加的任何其他引导记录)和 grub 现在是同一件事吗?或者当用户选择一个 efi 启动项时,它会进入 grub 启动菜单,这是一个单独的东西?如果 efi boot 已经可以处理启动选择,那么后面的 grub 就没有意义了吗?
比你
答案1
1.) 使用 EasyUEFI,您将编辑 UEFI 启动变量。这些都存储在系统 NVRAM 中,就像 BIOS 设置一样。在 Linux 中,您可以使用实用程序编辑它们efibootmgr
;在普通 Windows 中,bcdedit /enum FIRMWARE
可以列出它们,并且可以使用其他选项来编辑它们。
如果没有定义引导变量,UEFI 会自动查看特定的后备路径:对于 64 位 x86 硬件,此路径为\EFI\boot\bootx64.efi
.如果此文件存在于 ESP 分区或任何 FAT32 可移动介质中,则该磁盘或其他介质将自动被视为本机 UEFI 样式的“可引导”。
2.) UEFI 是系统固件(类似于 BIOS,但更新)。 GRUB 是一个引导加载程序,因此它必须符合相关硬件架构的固件所期望的任何形式,否则固件将无法加载 GRUB。
因此,GRUB 的核心可以采用多种形式:对于 BIOS,GRUB 采用 MBR 中的一些引导代码 + 嵌入到 MBR 和第一个分区开头之间的磁盘块中的更多代码的形式。借助 UEFI,GRUB 的核心(甚至全部)可以采用grubx64.efi
ESP 分区中单个文件的形式。
GRUB 有自己的体系结构标识符:BIOS 的 GRUB 版本称为版本i386-pc
,64 位 x86 硬件上的 UEFI 版本称为版本x86_64-efi
。例如,如果您正在对旧系统进行映像并将映像恢复到新硬件,并且您会发现新系统使用不同的固件样式(即旧系统使用传统 BIOS,而新系统将使用 UEFI),那么您通常需要添加 ESP 分区,i386-pc
用 GRUB 软件包的版本替换该x86_64-efi
版本,然后重新安装 GRUB。