Booster - 快速安全的 initramfs 生成器
Initramfs 是一个特别制作的小型根文件系统,在 Linux 操作系统启动过程的早期阶段挂载。这个 initramfs 除其他功能外,还负责解锁加密分区并将其挂载为根文件系统。
Booster 是一个用于创建此类早期引导镜像的工具。Booster 的设计考虑了速度和全盘加密使用场景。
Booster 的优势:
- 快速的镜像构建时间和快速的启动时间。
- 开箱即用的全盘加密设置支持。
- Clevis 风格的数据绑定。加密文件系统可以绑定到 TPM2 芯片或网络服务。这有助于自动解锁驱动器,但仅在 TPM2/网络服务存在时才会解锁。
- Systemd-cryptenroll 类型的绑定。Booster 能够检测和解锁 systemd-fido2 和 systemd-tpm2 风格的分区。
- 支持自动发现根分区
- 易于配置。
- 自动主机配置发现。这有助于为当前主机创建最小化的特定镜像。
还有其他类似 booster 的 initramfs 生成器:mkinitcpio 和 dracut。
安装
Arch Linux
从官方仓库安装 booster 包。
安装时,该软件包将在您的 /boot/
目录中创建多个 booster 镜像:
$ ls -lh /boot/booster-*.img
-rwxr-xr-x 1 root root 3.9M Dec 10 20:51 /boot/booster-linux.img
Void Linux
使用 xbps-install -S booster
安装 booster。
运行 xbps-reconfigure -f linux
为之前安装的内核创建 initramfs。
Alpine Linux
使用 apk add booster
安装 booster。
有关引导加载程序配置说明(取决于所需的设置),请参阅 /usr/share/doc/booster/README.alpine
。
手动安装
或者可以手动生成镜像,如 booster build mybooster.img
。请注意,默认情况下,booster 会生成主机特定的镜像,其中包含当前主机所需的最少二进制文件。为 booster
工具提供 --universal
标志将添加更多模块和工具,生成的镜像会更大。
生成镜像后,就该配置引导加载程序了。
使用
有关使用说明,请使用 man booster
查看 booster 手册页,或查看在线可用的相同文档。
构建
该项目由 3 个组件组成:
init
二进制文件,作为机器启动过程的一部分运行。它将成为机器上运行的第一个用户进程。generator
工具,用于创建包含启动计算机所需所有组件的 ramfs 镜像integration_tests
测试,涉及所有组件,并使用 QEMU 从生成的镜像启动
这些组件使用标准的 Golang 工具。要构建任何部分,请执行 go build
;要运行测试,请执行 go test
。
运行测试
cd {init,generator,integration_tests}
go test -v
致谢
这个项目最初是作为 Twitter 黑客周的一部分开始的。非常感谢我的雇主对开源开发的支持。特别感谢 Ian Brown。
Booster 的架构受到 Michael Stapelberg 的 distri 项目的启发。Booster 的初始版本借鉴了 distri 的 initramfs 生成器的许多想法。
许可证
参见许可证