呈现 GRUB2 BLS

2024 年 10 月 8 日 | Alberto Planas | CC-BY-SA-3.0

Presenting GRUB2 BLS

GRUB2 与 BLS 现已在 MicroOS 和 Tumbleweed 中

最近,openSUSE 项目为 MicroOS 和 Tumbleweed 发布了新版本的 GRUB2 软件包,其中包含一个新的子软件包 grub2-$ARCH-efi-bls。该子软件包提供了一个新的 EFI 文件 grubbls.efi,可以用作传统 grub.efi 的替代品。

新的 PE 二进制文件是包含来自 Fedora 的一组补丁的 GRUB2 版本,这使得引导加载程序遵循引导加载程序规范 (BLS)。这将使 GRUB2 能够理解 /boot/efi/loader/entries 中的引导条目,并在启动时动态生成显示的引导菜单。

这对于完整磁盘加密 (FDE) 非常重要,因为这意味着现在我们可以重用为 systemd-boot 设计的所有架构和工具。例如,现在可以使用 sdbootutil install 安装或更新引导加载程序,suse-module-tools 脚本将在安装新内核时创建新的 BLS 条目,并且 tukitsnapper 插件将在创建或删除快照时负责执行正确的操作。

在不修改的情况下重用所有这些工具是一项重大胜利,但更重要的是,GRUB2 在扩展事件日志时存在的一些怪癖不再存在。在此软件包之前,sdbootutil 需要获取 grub.conf 文件的所有权,因为这将由 GRUB2 按执行行 测量。没错!对于 GRUB2 解析器读取并执行的每一行,将发生一个新的 PCR#8,并且由于 GRUB2 支持条件语句和其他复杂的构造,因此很难在不施加非常最小和严格的 grub.conf 的情况下预测 PCR#8 的最终值。

但是,使用新的 BLS 子软件包,该文件以及主题的字体和图形资源以及必要的模块(例如 bli.mod)现在包含在 EFI 二进制文件内的内部 squashfs 中。GRUB2 将不再测量这些内部文件,而不会损害安全保证,因为现在固件会在启动过程中执行引导加载程序时测量整个 EFI。

截至今天,我们无法使用 YaST2 安装带有 BLS 的 GRUB2,但我们可以非常轻松地手动完成。我们需要进行 systemd-boot 安装,将 /etc/sysconfig/bootloader 中的 LOADER_TYPEsystemd-boot 更改为 grub2-bls,安装新的 GRUB2 BLS 软件包,然后执行 sdbootutil install。另一种选择是使用可用的 MicroOSTumbleweed 镜像进行操作。

祝您玩得开心!

分享此帖子