介绍 GRUB2 BLS

2024-10-08 | Poplar at twilight | CC-BY-SA-4.0

介绍 GRUB2 BLS

带有 BLS 的 GRUB2 现已出现在 MicroOS 和 Tumbleweed 中

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

新的 PE 二进制文件是 GRUB2 的一个版本,其中包含来自 Fedora 的一组补丁,这使得引导加载程序遵循引导加载程序规范(BLS)。这将使 GRUB2 能理解 /boot/efi/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 安装,将 LOADER_TYPEsystemd-boot 替换为 grub2-bls,安装新的 GRUB2 BLS 软件包,然后执行 sdbootutil install。另一种方法是使用 MicroOS 或 Tumbleweed 的定制镜像:


原文:Presenting GRUB2 BLS,作者:Alberto Planas

分享帖子: