使用带有 GRUB2 2.04、Shim 15.7 的 Ubuntu 20.4(我认为)
我一直在关注 Simon Ruderich 的指南“使用 GRUB 2 和签名的 Linux 映像和 initrd 实现安全启动”
当使用 shimx64.efi 启动时,我看到“验证失败:(0x1A)安全违规”错误消息。
直接启动 grubx64.efi 时,我看到“未找到 shim_lock 协议”错误。
如果我禁用 SecureBoot,无论是从 UEFI 固件接口(启动期间按 F2)还是使用mokutil --disable-validation
EFI 启动都可以。
我已将我的 PK、KEK 和 db 添加到 UEFI 固件,并且我可以通过删除、添加或尝试启动用其他密钥签名的其他 EFI 来看到它是否按预期工作。
我已经使用 MokManager 界面来注册我的数据库证书,因为这是 grubx64.efi 和 shimx64.efi 签名的。
但我无法再进一步……
我目前正在考虑构建自己的垫片https://github.com/rhboot/shim
我将非常感激有关如何解决这个问题的新想法。
我试图避免的问题是未签名的 /boot/grub/grub.cfg 和 initrd 的漏洞
非常感谢
**编辑我很高兴看到一些“乐于助人的人”没有发表评论就投了反对票,谢谢你 xx
答案1
我找到的解决方案是升级到 Ubuntu 22.04,因为它具有 GRUB2.06,它具有方便的--disable-shim-lock
功能。
禁用 shim lock 的 grubx64.efi 可以直接启动,因为它由我自己的 db.cert 签名,该 db.cert 安装在 UEFI 固件中。这不再显示“未找到 shim_lock 协议”错误。
然后,独立的 GRUB 将检查 GPG 签名的第 2 阶段启动文件,从头到尾一切都是安全的