author: Poplar at twilight
date: 2024-10-09 07:00:00 +0800
layout: post
license: CC-BY-SA-4.0
title: 介绍 GRUB2 BLS
image: /assets/posts/2024-10/dboot.png
categories:
- 更新通告
tags: - Tumbleweed
- 翻译作品
- 官方新闻
带有 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 条目,而 tukit
和 snapper
插件则会在创建或删除快照时执行正确的操作。
在不进行修改的情况下复用所有这些工具是一个重大胜利,但更好的是,传统 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_TYPE
从 systemd-boot
替换为 grub2-bls
,安装新的 GRUB2 BLS 软件包,然后执行 sdbootutil install
。另一种方法是使用 MicroOS 或 Tumbleweed 的定制镜像:
原文:Presenting GRUB2 BLS,作者:Alberto Planas