Secure Boot 在核什么
UEFI Secure Boot 要求引导链上的每一环(固件、引导程序、内核、内核模块)都带受信任的签名。开启之后,未签名或签名不受信任的内核模块会被拒绝加载,第三方 RAID 卡、网卡与自编译驱动的适配问题就出在这里。核查安全启动状态,本质是在确认这套信任链是开着还是关着。
基本信息
| 检查命令 | mokutil --sb-state、mokutil --list-enrolled |
|---|---|
| 适用平台 | UEFI 启动的 x86_64/aarch64 服务器与桌面(legacy BIOS 无此项) |
| 相关概念 | MOK:由机器所有者登记的自签名密钥 |
| 生效方式 | 开关在固件设置界面,需重启生效 |
| 权限要求 | 查询普通用户;登记密钥需 root |
典型使用场景
- 安全基线核查要求提供安全启动开关状态的证据
- 部署自研或第三方内核模块前,确认是否会被签名校验拦住
- 登记自签名密钥(MOK)以便加载自己编译的驱动
- 整机到货验收时核对固件里的安全启动是否按交付要求设置
- 排查 dmesg 中模块加载被拒的报错
状态与密钥检查
状态与密钥检查
mokutil --sb-state # SecureBoot enabled / disabled
mokutil --list-enrolled | head -20 # 已登记的公钥列表
dmesg | grep -iE 'secure boot|lockdown|verification failed' | head
ls /sys/firmware/efi 2>/dev/null # 目录存在即以 UEFI 方式启动
modinfo <模块名> | grep -iE 'sig|vermagic' # 查看模块签名与版本标识
mokutil --import mykey.der # 登记自签名公钥
# 登记后重启,在 MOK 管理界面完成确认才算生效输出逐项读法
| 检查项 | 输出 | 含义 |
|---|---|---|
| mokutil --sb-state | SecureBoot enabled | 信任链开启,未签名模块无法加载 |
| mokutil --sb-state | SecureBoot disabled | 信任链关闭,需进固件界面开启并重启 |
| mokutil --list-enrolled | 列出若干条目 | 已登记的信任密钥,自签名驱动依赖它 |
| /sys/firmware/efi | 目录存在 | 系统以 UEFI 方式启动,才可能有该项 |
安全启动的开关在固件设置界面,不在操作系统里:mokutil 只能查询状态与登记密钥,真正切换需要重启进固件界面操作,属于要排变更窗口的动作。
虚拟机里 mokutil 可能没有输出或提示不支持,因为虚拟固件未实现该接口;这种情况改去虚拟化平台的固件配置项确认,不要据此判断机器有故障。