签署 systemd-boot 文件并注册 PK 以启用安全启动
生成密钥、导入 PK 并启用安全启动的指南
0. 开始之前#
最近我尝试安装 Fedora 来取代 Ubuntu,以摆脱 snap 的烂东西。然后我不知道从哪里冒出一个想法,决定试试 systemd-boot,噩梦就是这样开始的。
这里涉及两个独立的信任操作:
- EFI 签署:固件
db信任 systemd-boot 和你的 UKI。 - 内核模块签署:NVIDIA 模块由内核信任的密钥签署。
当直接通过 systemd-boot 启动时,不需要 MOK,前提是模块证书存在于固件 db 中,且 Fedora 将该密钥导入到模块验证接受的 keyring 中。线上的教程主要针对 grub+shim,通常会要求你注册 MOK 密钥。
如果你对我的安装过程以及我如何为安全启动配置 systemd-boot 不感兴趣,请跳过第 0 章。
安装 Fedora#
systemd-boot 方式只能使用 Everything netinst 镜像进行配置(据说离线镜像也可以做到,但步骤更复杂)。从 USB 密钥启动后,导航到——
创建密钥:
bash
1sudo sbctl create-keys注册 sbctl 密钥同时保留 Microsoft 证书:
bash
1sudo sbctl enroll-keys -m当需要 Microsoft 签署的 Option ROM、Windows 或其他 Microsoft 签署的 EFI 组件时,-m 参数很重要。
签署已注册的 EFI 文件:
bash
1sudo sbctl sign-all
2sudo sbctl verify