如果不安装 Linux 引导加载程序而使用 UEFI 会有什么后果?

如果不安装 Linux 引导加载程序而使用 UEFI 会有什么后果?

在 UEFI 出现之前,安装引导加载程序对于启动操作系统是必要的,随着 UEFI 的引入,许多 UEFI 固件都带有合适的引导管理器和引导加载程序,允许用户直接从中启动操作系统。

如果不安装像 GRUB 这样的引导加载程序,会有什么后果?

答案1

随着 UEFI 的推出,许多 UEFI 固件都配备了不错的启动管理器和启动加载程序

这种说法只对了一半。(不到一半,取决于你对“不错”的定义。)有两种类型的程序,它们的名称经常互换使用,但实际上它们完全不同:

  • 启动管理器-- 这些工具提供了一个菜单或其他类型的用户界面,使用户可以选择启动选项,然后启动管理器会执行该选项。这些工具本质上是用户界面工具。仅有的启动管理器不足以启动操作系统;需要其他东西来实现这一点....
  • 引导加载程序-- 这些工具将操作系统内核(通常还有额外的东西,如 Linux 初始 RAM 磁盘 [initrd] 文件)加载到内存中,并让内核控制操作系统。引导加载程序不需要任何用户界面元素;它只是将控制权转移给操作系统的纯技术手段。

GRUB 和许多其他类似的 BIOS 模式程序(LILO、SYSLINUX 等)都提供引导管理器和引导加载程序功能。但在 EFI 世界中,这些功能通常是分开的。固件的内置引导管理器就是这样的——一个引导经理。它无法自行启动操作系统内核。还有附加的启动管理器程序,如 rEFIt、rEFInd 和 gummiboot/systemd-boot,它们比典型的内置 EFI 启动管理器更易于配置、更漂亮或功能更全面。纯粹的引导加载程序工具也存在。从某种意义上说,ELILO 和 EFI 版本的 SYSLINUX 就是这样;虽然它们可以提供菜单让您选择 Linux 内核,但它们无法链式加载到另一个 EFI 程序,而这正是启动 Windows 或 macOS 所需要的。EFI 版本的 GRUB 与其 BIOS 版本一样,既可用作启动管理器,又可用作引导加载程序。请参阅我关于这个主题的页面有关 Linux 的 EFI 引导加载程序和引导管理器的更多信息。

这个故事还有一个转折:自 3.3.0 版以来,Linux 内核包含了一个称为 EFI 存根加载器的功能。此功能有效地将 Linux 内核变成了自己的引导加载器——内核可以像任何其他 EFI 应用程序一样启动,因此 EFI 引导管理器直接启动 Linux 内核。(此功能也使 rEFInd 和 gummiboot/systemd-boot 在启动过程中能够像 GRUB 一样运行。)与使用 GRUB、rEFInd 或其他一些启动管理器/加载程序相比,直接从 EFI 启动管理器启动内核有几个缺点:

  • 内核位置-- 内核必须位于 EFI 可以读取的某个位置。在大多数 PC 上,这意味着 FAT 分区。(在 Mac 上,HFS+ 也可以工作。)很少有发行版默认以这种方式设置,有些发行版依赖文件系统功能(如内核目录中的符号链接)来实现某个功能,因此使用 FAT 可能不是一个好选择。有适用于其他文件系统的 EFI 文件系统驱动程序,但让它们自动加载可能会很麻烦,这会使事情更加复杂。(rEFInd 使这变得简单,因此 rEFInd 可以从多个 Linux 原生文件系统启动内核,即使它在后台使用相同的 EFI 调用。)
  • 缺乏操作系统支持-- 很少有发行版提供安装脚本或其他工具来帮助管理以这种方式安装的内核。因此,每当您更新内核时,您很可能必须继续复制内核,并且可能修改基于 NVRAM 的 EFI 启动管理器条目。
  • 易于配置--efibootmgr程序和选项传递给内核的方式都很挑剔;一个输入错误就可能导致系统无法启动。相比之下,GRUB 安装包括脚本,通常正确处理这些细节,rEFInd 包含的代码可以通常在扫描内核时,它会正确获取此类详细信息。其他引导加载程序和引导管理器通常依赖于文本模式配置文件,这些文件即使不容易设置,至少也比efibootmgr您必须用来配置直接引导内核的命令更简单。
  • 美味-- 许多计算机的 NVRAM 条目都很脆弱;它们可能会被意外损坏或删除。由于这些条目必须包含的不仅仅是内核的文件名(大多数发行版都需要根文件系统标识符等选项),因此一旦丢失条目,重新创建条目可能比依赖 GRUB 或其他引导程序更麻烦。
  • 缺少启动时选项-- GRUB、rEFInd、gummiboot/systemd-boot 和大多数其他此类工具提供了典型的 EFI 启动管理器所缺乏的启动时选项。例如,可能有选项可以将机器重新启动到其固件设置实用程序;并且您通常可以一次性编辑传递给内核的选项。在某些方面,这一点是另一种说法,即大多数 EFI 的内置启动管理器不是“还不错”,当然,这当然是个主观问题,有些计算机的内置 EFI 启动管理器比其他的更好。如果您想要一些基本功能,内置的启动管理器可能就很适合您;但您也可以配置其他启动加载程序和管理器,以呈现最小的用户界面,或直接启动到您的默认选择,几乎没有延迟。
  • 安全启动支持-- 大多数发行版都附带 Shim EFI 程序,这使得发行版与安全启动兼容。只需稍加努力,您就可以将此程序添加到涉及其他引导加载程序的引导路径中。如果您使用 Shim,则使用安全启动直接引导内核所需的工作量会更大一些,并且很多如果你想启动真的直接,无需垫片。

采用这种方式启动的优点可以概括如下:

  • 更短的启动路径-- 通过绕过 GRUB 或其他引导程序,您确实缩短了引导路径。但从技术上讲,您并没有消除引导加载程序 -- 内核的 EFI 存根加载程序就是引导加载程序。它恰好内置在内核中。这个优势非常小。它意味着引导时间略有缩短,但从实际角度来看,仅此而已。

总之,可以将基于 EFI 的计算机直接从其 EFI 启动管理器启动到 Linux,绕过 GRUB、rEFInd、SYSLINUX 或其他启动加载程序或启动管理器。不过,在我看来,这样做更多的是精通计算机的表现,而不是一种实用的选择;以这种方式配置系统所需的缺点和额外努力远远超过它可能提供的任何优势。

答案2

据我所知,除了您需要访问 EFI shell 并熟悉 EFI shell 之外,没有任何“影响”。几年前,我摆脱了 GRUB2 和其他多重引导加载程序,但至今还没有遇到问题。

相关内容