Secure Boot需完整签名信任链才生效,仅开启开关会导致黑屏或“Invalid signature”错误;必须确认UEFI模式、安装微软签名的shim与GRUB、注册MOK密钥,并验证各环节签名有效性。

Secure Boot 不是开关一开就自动生效的机制,它依赖完整的签名信任链。如果你只在UEFI里把 Secure Boot 设为 Enabled,但没签名 bootloader 和内核,系统大概率直接黑屏或报 Invalid signature 错误。
确认当前启动模式是否支持 Secure Boot
Secure Boot 是 UEFI 功能,BIOS(Legacy/CSM)模式下完全无效。别跳过这步——很多“配置失败”其实卡在第一步。
- 运行
ls /sys/firmware/efi:有输出即为 UEFI 模式;空输出说明仍在 BIOS 模式 - 若为 BIOS 模式,需进固件设置(开机按
Del/F2/F10),找到Boot Mode或CSM选项,禁用Compatibility Support Module,并确保Boot Mode设为UEFI Only - Windows 共存时,建议先暂停
BitLocker(否则密钥冲突会导致 Windows 无法启动)
安装 shim、签名 GRUB 并更新 NVRAM 引导项
主流发行版(Ubuntu/Fedora/Debian)靠 shim-signed 作为信任链入口,它被 Microsoft 签名,能加载 Canonical/Red Hat 签名的 grubx64.efi。跳过 shim 或直接用未签名 GRUB,Secure Boot 会拒绝执行。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- Ubuntu 执行:
sudo apt install --reinstall shim-signed grub-efi-amd64-signed mokutil - 确认 EFI 系统分区挂载点:
df -h | grep efi(通常是/boot/efi) - 重装 GRUB 时必须加
--no-nvram:sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu-secureboot --no-nvram。不加这个参数会覆盖 NVRAM 中原有启动项(比如 Windows Boot Manager),导致双系统变单系统 - 最后运行
sudo update-grub扫描并生成菜单
注册 Machine Owner Key(MOK)以加载自定义驱动
Secure Boot 默认只认发行商签名的模块。你装 NVIDIA 驱动、DKMS 内核模块、VirtualBox Guest Additions 时,它们没被 Canonical 签名,必须手动导入自己的密钥,否则模块加载失败,dmesg 里会出现 Required key not available。
- 推荐方式:安装驱动时终端自动弹出蓝紫色
Configuring Secure Boot界面,设密码 → 重启 → 进入 MOK Manager(蓝色背景)→Enroll MOK→ 输入密码 →Done - 手动方式(如需批量部署):
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=My_Ubuntu_MOK/",再执行sudo mokutil --import MOK.der - 注意:MOK 密钥仅影响内核模块,不影响 bootloader 或内核本身——那两者的签名由
shim和发行版控制
验证签名是否生效及常见失败原因
配置完别急着关机,先验证关键组件是否真被签名且被固件接受。很多问题不是配置错,而是签名没生效或被 dbx 黑名单拦截。
- 检查 GRUB 是否被 shim 加载:
sudo dmesg | grep -i "shim\|grub",应看到类似shim: Loading grubx64.efi的日志 - 查看当前 Secure Boot 状态:
mokutil --sb-state(输出SecureBoot enabled才算成功) - 若启动失败,常见原因:固件中
dbx数据库已将旧版shim或grub列入黑名单(尤其 Ubuntu 22.04 早期 shim 版本);此时需升级shim-signed包,并确保grub-efi-amd64-signed同步更新 - 调试时可临时进 UEFI 设置,切换到
Setup Mode(需清空 PK),再用sbctl(Arch)或mokutil(Ubuntu)重新管理密钥,避免反复重启进 MOK Manager
最易被忽略的是:Secure Boot 只管引导阶段代码签名,不管磁盘内容是否被篡改。如果攻击者物理接触设备,仍可拔下 SSD 直接读取 /boot 分区里的 vmlinuz 和 initrd 并替换——这意味着你得配合 dm-verity 或全盘加密(LUKS)才能闭环。Secure Boot 是启动链的第一道锁,不是整扇门。

















