使用背景
使用带有 RTX 3050 的笔记本将移动硬盘制成了 Ubuntu to go ,并正确安装了显卡驱动(驱动版本:595,此驱动同时适配RTX 5060 Ti)。
将 Ubuntu to go 换机到带有 RTX 5060 Ti 的主机使用时,lspci可以识别显卡硬件,nvidia-smi无法正确识别驱动。
问题现象
将 Ubuntu to go 接入新的电脑后,无法正确识别 NVIDIA 显卡驱动(安装的驱动适配两台电脑的显卡)。
产生原因
- Secure Boot 开启导致驱动所需的内核模块未经签署,被 UEFI 固件阻止加载。
- 制作 Ubuntu to go 时生成的 MOK 密钥没有被正确导入到当前电脑的 MOK 数据库,导致找不到公钥。
解决办法
-
确认密钥文件存在
sudo find /boot /var/lib -name "MOK*" 2>/dev/null发现密钥位于
/var/lib/shim-signed/mok/MOK.der。 -
手动导入密钥并设置临时密码
sudo mokutil --import /var/lib/shim-signed/mok/MOK.der系统会要求设置一个8-16位的临时密码(例如
12345678,仅使用一次)。 -
重启电脑
sudo reboot -
在蓝色 MOK 管理界面完成注册
- 选择
Enroll MOK(或Enroll key from disk) - 选择
Continue - 选择
Yes - 输入之前设置的临时密码
- 选择
Reboot
- 选择
-
验证驱动
nvidia-smi正常打印显卡信息,问题解决。
原理补充
每台新电脑需要做一次 MOK 注册,之后驱动就能在该电脑上正常加载,不会影响其他电脑。
