核心架构:什么是 UKI?#
UKI(Unified Kernel Image)把 UEFI 启动桩、Linux 内核、初始化内存盘及可选资源组合成单一 .efi 可执行文件。微码、命令行、系统标识和启动画面可包含其中。
选择 UKI 的理由
- 签名覆盖组件:签名且经 Secure Boot 验证的 UKI 可保护其中的内核和 initramfs。保护范围仍取决于信任的证书、固件策略和启动链,不能保证任意配置文件都不可被利用。
- 版本绑定:内核与 initramfs 放在一起,减少分离文件不一致的问题;生成和升级失败仍然需要恢复入口。
- 自动发现:systemd-boot 能发现 ESP 或 XBOOTLDR 的
/EFI/Linux/下符合规范的 UKI。
UKI 生成工作流#
工具选择
mkinitcpio 能生成 UKI;安装 systemd-ukify 时可由 ukify 组装。选择一条生成流水线即可,避免多个工具互相覆盖。
sudo pacman -S systemd-ukify sbctl tpm2-tools这些是采用本文方案时的工具示例,并不意味着所有 Arch 安装都必须使用 TPM。
内核命令行
例如 /etc/kernel/cmdline:
root=UUID=<ROOT_FILESYSTEM_UUID> rw quiet loglevel=3替换占位符并按加密、子卷布局添加所需参数。loader.conf 仍控制菜单、默认条目等引导器设置;它不是 UKI 内嵌命令行的配置文件。
mkinitcpio 预设
保留已安装内核提供的完整 preset 中的内核路径等字段,调整 UKI 输出,例如:
PRESETS=('default' 'fallback')
default_uki="/efi/EFI/Linux/arch-linux.efi"
default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"
fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi"
fallback_options="-S autodetect"/efi 是此例的 ESP 挂载点。确认它已挂载、目录存在,且对应 preset 已禁用不需要的重复 initramfs 输出。不是所有版本都生成 fallback preset,应按实际版本选择。
sudo mkinitcpio -P生成成功不等于已经从该镜像启动,重启后还需检查运行内核及引导条目。
systemd-boot 的初始化与检查#
在 UEFI 环境、正确挂载 ESP 且具备恢复介质的前提下:
sudo bootctl install
bootctl list安装会写入 ESP 和可能的固件启动项。自动更新还应检查实际的 systemd-boot-update.service 启用状态与签名流程,不能把执行 bootctl install 当作全部维护配置完成。
Secure Boot 签名流程#
创建、注册与保存签名路径
先阅读设备固件说明,备份现有密钥和恢复方式。固件需允许进入 Setup Mode;若替换密钥不当,某些设备的 Option ROM、显示或其他系统可能无法启动。
sudo sbctl create-keys
sudo sbctl enroll-keys -m
sudo sbctl sign -s /efi/EFI/Linux/arch-linux.efi
sudo sbctl verify-m 加入微软证书,是兼容性与信任范围的权衡。sign -s 保存文件路径以供后续签名流程使用;更新后的自动重签还依赖 sbctl 的 mkinitcpio、kernel-install 或 pacman hook 实际生效。
TPM2 测量与磁盘解锁#
systemd-stub 会将 UKI 组件测量到 PCR 11。静态 PCR 绑定将密钥解封与选定测量值绑定;它不是笼统地证明“系统从未被篡改”。
# 示例:必须替换设备并先保留可用的 LUKS 口令或恢复密钥
sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7+11 /dev/EXAMPLE_LUKS_PARTITION直接绑定 PCR 11 可能在更新 UKI 后失效,且启动阶段测量值会继续变化。应按实际 systemd 版本设计签名 PCR policy 或其他受支持策略,并测试更新、固件变更和恢复路径。TPM 自动解锁也不能取代运行中的访问控制。
引导流程#
graph TD
UEFI[UEFI 固件] --> SB{验证启动文件签名}
SB -- 成功 --> UKI[运行 UKI]
SB -- 失败 --> HALT[拒绝此启动文件]
UKI --> TPM[扩展 TPM PCR 测量]
TPM --> POLICY{解锁策略匹配}
POLICY -- 成功 --> LUKS[解锁 LUKS]
POLICY -- 失败 --> RECOVERY[口令或恢复密钥]
LUKS --> OS[进入系统]参考与延伸
- ArchWiki:Unified kernel image ↗
- ArchWiki:Systemd-boot ↗
- ArchWiki:Unified Extensible Firmware Interface/Secure Boot ↗
- ArchWiki:Trusted Platform Module ↗
根据技术笔记重新整理,示例使用通用名称。
沿专题继续阅读
Arch Linux
- 01Arch Linux 的哲学与安装规划
- 02内核管理、systemd-boot 与 UKI
- 03Pacman Hook、AUR 与构建安全
- 04Btrfs 子卷布局与 Snapper 快照
- 05LUKS2、Secure Boot 与 TPM2 加固
- 06性能选择与日常维护清单
- 07Pacman 常用命令与参数记忆
- 08Pacman 下载慢的诊断与镜像选择
- 09informant:Arch 新闻与 Pacman Hook
- 10Arch Linux 与 Btrfs:手动安装和 archinstall
- 11GNOME 桌面、输入法与快照配置
- 12GNOME 笔记本管理与桌面美化
- 13Arch Linux 的 KVM、GPU 直通与游戏
- 14Arch 桌面的交换空间、内核与排障