为什么大多数发行版都链接 UEFI 和 grub?

为什么大多数发行版都链接 UEFI 和 grub?

大多数发行版都会在 UEFI 系统上安装额外的引导加载程序。 UEFI本身是一个引导加载程序,它提供了一个菜单来选择不同的操作系统或单个内核。此外,可以使用用户空间工具(例如efibootmgr.

3.3以后的内核支持EFI_STUB,这意味着内核可以直接从UEFI加载。发行版决定使用额外的引导加载程序的原因是什么?大多数关于 Linux/UEFI 的教程主要关注如何设置附加引导加载程序(rEFInd、grub2、ELILO 等),而不是使用 EFI_STUB 引导 Linux。

发行版中唯一缺少的是支持。由于大多数发行版链接第二个引导加载程序,因此内核不会添加到 UEFI 引导菜单,也不会复制到 EFI 系统分区。

三个脚本足以实现所有魔力。一种将 initramfs 复制到 ESP 的方法。第二个将内核复制到 ESP 并在 UEFI 启动菜单中创建一个新条目。第三个脚本从 ESP 中删除旧内核和 initramfs,并删除 UEFI 启动菜单项。这允许完全自动化的内核/initramfs 更新/清除,无需用户交互。我使用这种方法已经一年多了,而且效果完美。

为什么大多数发行版使用 grub 而不是 EFI_STUB?

链接:

编辑:我并不是在谈论完全删除 grub 支持,而是为那些出于各种原因想要使用它的人提供选择。发行版可以grub-efi为那些想要链接 UEFI 和 grub 的人提供一个包,以及一个efistub-boot包含我上面提到的脚本的包。

答案1

鉴于 UEFI 仅2005年定义有很多旧设备不支持该规范。要将 UEFI 添加到标准发行版中,需要测试两个代码路径,而不是一个,而且启动代码不仅是出了名的挑剔,而且是测试中最令人恼火且耗时的代码之一。

答案2

发行版的资源有限,除此之外可能没有任何原因。它可能相当简单且安全,但无论如何它将需要更多的维护工作因为如果仅适用于非 UEFI 系统,则必须保留 grub 选项。

我确信每个人都有一个他们希望看到发行版采用的功能和选项的列表(我会给你几页,哈哈),毫无疑问,其中许多将“完全简单,没有麻烦,老实说。 ……”。然而,实施它们的工时并不是无限的。当面临这样的决定时(“我们是否将工作投入到这个功能中,而不是其他功能中?”)主要问题应该是:

  • 有必要吗? (这里的答案是否定的)。
  • 有多少人会受益,受益多少? (IMO:有一些,但不多)
  • 是否有一个合理的替代方案,让用户可以在我们不做任何事情的情况下适应他/她自己? (显然是有的。)

人们使用发行版的原因是因为每个人受到资源限制(否则,只需雇用一个团队,为他们购买一些空间和设备,然后让他们按照您想要的方式为您做所有事情)。所以现实是发行版反映了广义的他们的用户的需求。

也就是说,我确实认为这将及时被采纳为一种选择,并且我对这个问题投了赞成票。

答案3

除了 grub 之外,还针对 UEFI 引导加载程序将使质量控制和支持变得复杂。这些发行版的目标是 grub 而不是 UEFI 规范,因为 grub 是免费软件、可破解、更灵活且高质量。您仍然可以通过遵循教程并在 上安装 UEFI 分区来获得纯 UEFI 启动/boot,因为如果您这样做,维护费用就由您承担。

答案4

真正的问题是人们不明白它是如何运作的。例如,在您的问题中,您提到三个脚本是必需的,这里的大多数答案都是关于使其工作所需的所有/任何额外维护 - 但事实是您不需要这些脚本或任何额外的工作。

您所需要的只是绑定安装 ESP(或者任何您希望保留内核的位置)/boot,您只需输入一行即可完成此操作/etc/fstab。这样做,所有当前的内核更新脚本将继续工作。

我的“/etc/fstab”看起来像:

LABEL=ESP /esp vfat defaults 0 2
#
#^ i like a separate mount point - not necessary though
#
/esp/EFI/arch_root /boot none bind,defaults 0 2
#
#^ i keep separate installations in separate directories
#

不过,关于制造商特定的设置,这里提出了一个很好的观点。 UEFI明确地不是指定启动菜单的界面。这是可供争夺的,并且在机器之间不会保持一致。这很烦人,但却是事实。

所以,虽然一个装载机比如grub实际上只是为了更多的工作,菜单应用程序(例如 rEFInd)可以消除差异并简化一切。

相关内容