编辑
2026-07-12
Linux
00

目录

Ubuntu 26.04 装 NVIDIA 580 Secure Boot MOK 签名
环境
现象
排查过程
解决方法
一个无关的报错
小结

Ubuntu 26.04 装 NVIDIA 580 Secure Boot MOK 签名

环境

  • Ubuntu 26.04 LTS,内核 7.0.0-27-generic
  • GPU: RTX 2080 Ti
  • 驱动: nvidia-driver-580 (580.159.03)

现象

驱动包正常装上(dpkg -l 能看到 nvidia-driver-580,modinfo nvidia 也能查到模块信息),但 nvidia-smi 报错:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

排查过程

先按常规思路排除了几个常见坑:

  1. nouveau 冲突 —— lsmod | grep nouveau 无输出,排除。
  2. 内核版本不匹配 —— uname -r 与 dkms 编译目标内核一致,排除。
  3. 手动加载模块看真实报错:
    bash
    sudo modprobe nvidia
    输出:
    modprobe: ERROR: could not insert 'nvidia': Key was rejected by service

这行报错才是关键。Key was rejected by serviceSecure Boot 在拦截未注册签名的内核模块 —— 驱动本身没问题,是系统不信任这个 out-of-tree 模块的签名。

确认:

bash
mokutil --sb-state # SecureBoot enabled

解决方法

装驱动时(尤其是 dkms 方式)会生成一个本地签名密钥用于给内核模块签名,但如果安装过程中弹出的 MOK 注册蓝屏被跳过或没注意到,密钥就没有被系统信任,导致模块加载时被拒。

补救办法是手动重新注册 MOK:

bash
sudo mokutil --import /var/lib/shim-signed/mok/MOK.der # 设置一个临时密码(输入两次) sudo reboot

重启后,在 GRUB 之后、系统正常启动前,会出现一个蓝色的 MOK Manager 界面(这一步很容易一闪而过被忽略,需要盯着屏幕):

  1. Enroll MOK
  2. Continue
  3. Yes
  4. 输入刚才设置的密码确认

完成后系统会继续正常启动。登录后验证:

bash
sudo modprobe nvidia nvidia-smi

nvidia-smi 正常输出驱动版本、GPU 型号和显存信息即代表成功。

一个无关的报错

排查过程中在 dmesg 里看到一堆:

nvidia-gpu 0000:01:00.3: i2c timeout error e0000000 ucsi_ccg 6-0008: i2c_transfer failed -110 ucsi_ccg 6-0008: ucsi_ccg_init failed -110 ucsi_ccg 6-0008: probe with driver ucsi_ccg failed with error -110

这个是显卡 USB-C VirtualLink 接口上的 Cypress CCG 控制器 i2c 握手超时,和主驱动加载完全无关,不影响 GPU 计算功能,可以忽略。

小结

  • 如果 nvidia-driver 包装好了但 nvidia-smi 找不到驱动,先别急着重装,用 sudo modprobe nvidia 看真实报错。
  • 报错是 Key was rejected by service,基本可以断定是 Secure Boot 没信任 dkms 签名密钥
  • 两种解法:
    • 重新走一遍 MOK 注册流程(保留 Secure Boot)
    • 直接在 BIOS 里关掉 Secure Boot(homelab/本地机器可以这么偷懒)
  • 无关的 ucsi_ccg / i2c timeout 报错可以无视,不影响驱动加载。
分享:

本文作者:Casear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!