多个引导加载程序如何在 EFI 系统分区上工作

use*_*608 15 grub uefi

我的 ESP 看起来像这样

Boot Dell fedora Microsoft
Run Code Online (Sandbox Code Playgroud)

在 Boot 目录中,它们是一个名为的引导加载程序bootx64.efi,我理解它是首先启动的默认引导加载程序。但是在 fedora 目录中有另一个名为grubx64.efi.

每个引导加载程序的功能是什么?哪一个提供boot-menu

Wyz*_*ard 20

bootx64.efi没有开始。大多数时候,它根本没有开始。

EFI 固件有自己的“引导菜单”,类似于 GRUB 提供的菜单,但处于引导过程的较早阶段。正如 GRUB 允许您选择要运行的 Linux 内核一样,EFI 引导菜单允许您选择要运行的 EFI 引导程序 — 选择是 GRUB 本身或 Windows 引导加载程序。(而且,与 GRUB 的菜单一样,EFI 引导菜单通常默认不显示;您必须在启动过程中按热键才能看到它。)

EFI 启动菜单中的条目由存储在主板 NVRAM(“BIOS 设置”内存)中的配置数据定义。此配置未存储在文件中,但在 Fedora 中,您应该可以使用该efibootmgr程序查看它。每个条目都包含一个人类可读的名称(显示在菜单中)和一个指向 EFI 系统分区中引导程序的路径,以及一个优先级编号,用于确定当您不按热键时默认启动哪个条目查看菜单。

这些 NVRAM 引导条目(通常)由操作系统安装程序创建。当您安装操作系统并将引导加载程序文件放置在 EFI 系统分区中时,它还会向 NVRAM 配置添加一个条目,以便新引导加载程序将在 EFI 引导菜单中可用。(在许多情况下,它还会将新条目设为默认值,这样您刚刚安装的操作系统将自行引导,而无需打开 EFI 引导菜单并手动选择它。)

Boot/bootx64.efi当 EFI 没有配置任何引用磁盘上其他引导程序的 NVRAM 引导条目时,该程序是一个后备。它对于可启动 CD 和 USB 驱动器等可移动媒体很重要,但在硬盘驱动器上,通常不使用它。Windows 安装程序创建一个Boot/bootx64.efi作为故障安全;它只是Microsoft/Boot/bootmgfw.efi(至少在 Windows 7 中;我不知道其他版本)的副本。

在我的系统上,我已经用EFI Shellbootx64.efi的副本替换了那个 Microsoft ,这样如果我以某种方式发现自己没有任何 NVRAM 引导条目并且实际上依赖于后备引导加载程序,我就会被放到一个 shell 中,我可以在那里检查情况并手动运行其他启动程序之一,而不是让系统自动启动 Windows。(我还在 GRUB 菜单中为它添加了一个条目,这样即使系统正常工作,我也可以选择启动 EFI shell。)