Linux 命令速查
系统管理 man mokutil

mokutil

管理 UEFI Secure Boot 的 Machine Owner Key(MOK)。

返回

补充说明

mokutil 由 shim 项目提供,用于在启用 UEFI Secure Boot 的机器上管理 MOK(Machine Owner Key)。MOK 是介于固件密钥与发行版密钥之间的一层信任机制,允许用户为自己编译的驱动或内核模块签名。

典型场景:安装 NVIDIA 私有驱动、VirtualBox、DKMS 模块时,需要生成密钥对,用 mokutil --import 把公钥加入待注册队列,重启后在 MokManager 界面完成注册,再用该密钥签名模块。

导入或删除操作只是“排队”,必须重启并在蓝色 MokManager 界面确认才会真正生效。导入时会要求设置一次性密码,重启时输入同一密码。操作前请确认 Secure Boot 状态,非 UEFI 或已关闭 Secure Boot 的机器不需要 MOK。

语法

mokutil [选项]

选项

  • --sb-state:显示 Secure Boot 是否启用
  • --import 文件:排队导入 DER 格式公钥
  • --delete 文件:排队删除指定公钥
  • --list-enrolled:列出自注册的密钥
  • --list-new:列出等待注册的密钥
  • --password 密码:为本次导入设置一次性密码
  • --timeout 秒:设置 MokManager 等待时间,-1 表示不超时
  • --disable-validation:请求关闭 shim 的签名校验
  • --enable-validation:恢复签名校验
  • --reset:清除待处理的请求
  • --version:显示版本

实例

# 查看 Secure Boot 状态
sudo mokutil --sb-state

# 生成密钥(示例路径)
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.key -out MOK.crt \
  -nodes -days 36500 -subj "/CN=My MOK/"
openssl x509 -in MOK.crt -outform DER -out MOK.der

# 排队导入,按提示设置一次性密码
sudo mokutil --import MOK.der

# 重启前确认请求已入队
sudo mokutil --list-new

# 查看已注册的密钥
sudo mokutil --list-enrolled

# 排队删除(重启后确认)
sudo mokutil --delete MOK.der

注意事项

  • 忘记一次性密码会导致注册失败,需要重新执行导入。
  • 删除密钥可能使已签名的模块无法加载,操作前确认影响范围。
  • 部分发行版将 mokutil 放在 shim 或 mokutil 包中,最小化系统可能未安装。

参考链接