
Booster 让早期启动更轻快、更迅速、更可靠。 它构建紧凑的 initramfs 镜像,让你几乎无需费心,就能借助强大的加密启动支持,将 Linux 系统从固件引导至真正的根文件系统。
它不会打包一个庞大的通用早期用户空间,而是探测你的机器实际需要什么,并围绕它构建一个专注的镜像。 最终结果是一个精简的启动镜像,包含宿主机所需的驱动程序、解锁工具、文件系统支持和恢复路径,而不必在每次重启时都背负一大堆用不上的东西。
Booster 围绕一个简单的承诺而构建:早期启动应当快速、清晰、安全,并且操作起来令人愉悦。
亮点:
systemd-cryptenroll 的 TPM2 与 FIDO2 token,包括通过 Booster 插件路径提供的原生 FIDO2 支持。Booster 非常适合加密笔记本、开发者工作站、需要远程恢复的服务器、极简 Linux 系统,以及那些在配置多年后仍应保持清晰易懂的启动方案。
Booster 将全盘加密视为一等公民工作流,而非附加功能。
它可以通过内核参数、/etc/crypttab、GPT 自动发现、直接指向 LUKS 容器的 root= 引用、密钥文件、分离头部以及硬件 token 来解锁 LUKS 设备。
支持的解锁方式包括:
systemd-cryptenroll TPM2 与 FIDO2 token。Booster 的 token 编排旨在让加密启动体验更加精致。 非交互式 token 可以在后台并行推进,基于 PIN 的 token 按确定性顺序提示输入,常规口令提示则作为回退方案出现,而不会永久阻塞整个启动流程。
最近的 FIDO2 改进让体验更加顺畅:
enable_fido2: true 即可启用原生 FIDO2 支持。fido2-device= 的 crypttab 条目可让 Booster 自动打包 FIDO2 插件。默认情况下,Booster 构建的是主机专属镜像。 它会检查当前系统,纳入启动所需的模块与工具,并剔除不必要的部分。 这使镜像更易于审计、生成更快,启动时执行也更快。
当你需要更通用的镜像时,--universal 会纳入更广泛的模块集合,适用于恢复场景、便携介质或硬件可能发生变化的系统。
Booster 支持实际场景中的常见启动布局,包括:
UUID=、LABEL=、PARTUUID=、PARTLABEL=、HWPATH=、WWID= 或 /dev/... 引用设备。/etc/crypttab 的多个加密映射。当出现问题时,Booster 会为你提供有用的方式来查看发生了什么。
使用 booster.log=debug,console 获取详细的启动日志,添加 busybox 以获得紧急 shell,或启用网络支持来从无法启动的机器上取回日志。
Booster 还内置了镜像检查命令,让你可以在重启前验证构建出的内容:
booster ls /boot/booster-linux.img
booster cat /boot/booster-linux.img /init
booster unpack /boot/booster-linux.img /tmp/booster-image
安装官方软件包:
pacman -S booster
该软件包会在 /boot/ 中创建 Booster 镜像:
$ ls -lh /boot/booster-*.img
-rwxr-xr-x 1 root root 3.9M Dec 10 20:51 /boot/booster-linux.img
使用以下命令安装 Booster:
xbps-install -S booster
然后为已安装的内核重新生成 initramfs:
xbps-reconfigure -f linux
使用以下命令安装 Booster:
apk add booster
然后阅读 /usr/share/doc/booster/README.alpine,获取针对该发行版的引导加载程序配置说明。
你也可以直接构建镜像:
booster build /boot/booster-linux.img
如需更便携、硬件覆盖更广的镜像:
booster build --universal /boot/booster-linux.img
创建镜像后,将你的引导加载程序指向它。 完整的配置细节请参阅 Booster 手册页。
创建主机专属镜像:
booster build booster.img
为特定内核创建镜像:
booster build --kernel-version 6.8.9-arch1-1 /boot/booster-linux.img
检查生成的镜像:
booster ls /boot/booster-linux.img
修改 /etc/booster.yaml 后,重新生成已打包的镜像:
/usr/lib/booster/regenerate_images
当你的发行版提供 systemd-ukify 时,生成统一内核镜像(Unified Kernel Image):
/usr/lib/booster/regenerate_uki build /boot/EFI/Linux
Booster 的配置刻意保持精简。 一台简单的加密笔记本通常完全不需要大型配置文件。 只添加你的启动路径所需的功能即可:
compression: zstd
vconsole: true
enable_fido2: true
enable_lvm: true
enable_mdraid: true
如需通过 SSH 远程解锁:
network:
dhcp: on
ssh_host_key: /etc/booster/ssh_host_ed25519_key
ssh_authorized_keys: /etc/booster/authorized_keys
ssh_listen: :22
当登记了多种硬件解锁方式时,如需更顺畅的 token 顺序:
serialize_tokens:
enabled: true
clevis_timeout: 45s
tpm2_timeout: 15s
fido2_timeout: 30s
如需 Plymouth 启动画面支持:
enable_plymouth: true
modules_force_load: amdgpu
在内核命令行中使用 quiet splash;如需图形化启动界面,请避免使用 booster.log=console。
完整的用户文档位于 Booster 手册页。 其中涵盖:
/etc/booster.yaml 选项。/etc/crypttab 集成。Booster 与 mkinitcpio 和 dracut 处于同一问题领域。 它的重点是打造一个快速、紧凑、基于 Go 的 initramfs 生成器,具备出色的加密启动易用性和自动主机发现能力。
该项目由三个主要部分组成:
init - 启动期间运行的早期用户空间程序。generator - 构建 initramfs 镜像的工具。tests - 基于 QEMU 的生成镜像集成测试。使用标准 Go 工具链构建:
go build ./...
运行单元测试:
go test ./generator ./init
运行完整测试套件:
go test ./...
./tests 包包含 QEMU 集成测试,要求宿主机已安装所需的启动与虚拟化工具。
该项目的工作始于 Twitter 的黑客周期间。 衷心感谢 Twitter 对开源开发的支持,并特别感谢 Ian Brown。
Booster 的架构受到了 Michael Stapelberg 的 distri 的启发,初始版本也借鉴了 distri 的 initramfs 生成器的许多设计思路。
参见 LICENSE。