目录
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.
排查过程
先按常规思路排除了几个常见坑:
- nouveau 冲突 ——
lsmod | grep nouveau无输出,排除。 - 内核版本不匹配 ——
uname -r与 dkms 编译目标内核一致,排除。 - 手动加载模块看真实报错:
输出:bashsudo modprobe nvidiamodprobe: ERROR: could not insert 'nvidia': Key was rejected by service
这行报错才是关键。Key was rejected by service 是 Secure Boot 在拦截未注册签名的内核模块 —— 驱动本身没问题,是系统不信任这个 out-of-tree 模块的签名。
确认:
bashmokutil --sb-state
# SecureBoot enabled
解决方法
装驱动时(尤其是 dkms 方式)会生成一个本地签名密钥用于给内核模块签名,但如果安装过程中弹出的 MOK 注册蓝屏被跳过或没注意到,密钥就没有被系统信任,导致模块加载时被拒。
补救办法是手动重新注册 MOK:
bashsudo mokutil --import /var/lib/shim-signed/mok/MOK.der
# 设置一个临时密码(输入两次)
sudo reboot
重启后,在 GRUB 之后、系统正常启动前,会出现一个蓝色的 MOK Manager 界面(这一步很容易一闪而过被忽略,需要盯着屏幕):
Enroll MOKContinueYes- 输入刚才设置的密码确认
完成后系统会继续正常启动。登录后验证:
bashsudo 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 许可协议。转载请注明出处!