修复3060laptop 6G显存改12G 开启安全启动Nvidia内核模块无法加载的后遗症
打CS2才发现的,刚开始只是注意到Fedora41 开机时短暂提示内核模块missing ,cs2 FPS明显下降特别是丢烟雾弹后直接卡成PPT,执行nvdia-smi还出现:
NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.
reinstall驱动包后问题依旧。
查找原因
dmesg发现
[ 7.518706] nouveau 0000:01:00.0: drm: [DRM/0000000b:kmsOutp] [BL_GET level:0] (ret:-22)
[ 7.518772] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GP17.VGA.LCD._BCM.AFN7], AE_NOT_FOUND (20240827/psargs-332)
[ 7.518777] ACPI Error: Aborting method \_SB.PCI0.GP17.VGA.LCD._BCM due to previous error (AE_NOT_FOUND) (20240827/psparse-529)
[ 7.518785] ACPI: \_SB_.PCI0.GP17.VGA_.LCD_: _BCM evaluation failed
[ 7.519362] acpi device:3c: registered as cooling_device16
[ 7.519507] [drm] Initialized nouveau 1.4.0 for 0000:01:00.0 on minor 0
[ 7.534093] fbcon: nouveaudrmfb (fb0) is primary device
[ 7.534095] fbcon: Deferring console take-over
[ 7.534098] nouveau 0000:01:00.0: [drm] fb0: nouveaudrmfb frame buffer device
[ 11.213679] Bluetooth: RFCOMM TTY layer initialized
[ 11.213687] Bluetooth: RFCOMM socket layer initialized
[ 11.213691] Bluetooth: RFCOMM ver 1.11
[ 12.887666] Loading of module with unavailable key is rejected
这时候又回想起昨天跑ai00server性能有折损,在BIOS发现被独显直连被调成了混合模式。初步怀疑BIOS被重置过。
确定问题
问了问维修师傅换显存的时候BIOS电池拆掉了,瞬间明白怎么回事了,肯定是之前安装n卡驱动的时候导入的签名随着CMOS掉电没了。
开始修复
重新导入即可,遂查找history找到了当时安装和导入签名的操作。
89 sudo dnf install akmod-nvidia
90 sudo dnf install xorg-x11-drv-nvidia-cuda
91 sudo dnf install kmodtool akmods mokutil openssl
92 sudo kmodgenca -a
93 sudo mokutil --import /etc/pki/akmods/certs/public_key.der
94 modinfo -F version nvidia
让ChatGPT给诸位加上注释方便理解:
# 安装 NVIDIA 驱动的动态内核模块 (akmod-nvidia)。
sudo dnf install akmod-nvidia
# 安装 NVIDIA CUDA 驱动组件,提供对 CUDA 应用的支持。
sudo dnf install xorg-x11-drv-nvidia-cuda
# 安装必要的工具:kmodtool 和 akmods 用于驱动模块生成,
# mokutil 用于管理安全启动密钥,openssl 用于生成证书。
sudo dnf install kmodtool akmods mokutil openssl
# 生成用于签名的密钥对,包括私钥和公钥,存储在 /etc/pki/akmods/certs/ 目录中。
sudo kmodgenca -a
# 将生成的公钥 (public_key.der) 导入到安全启动的 MOK 数据库,
# 导入后会提示设置密码,稍后用于在系统重启时完成密钥的注册。
sudo mokutil --import /etc/pki/akmods/certs/public_key.der
# 检查 NVIDIA 驱动模块的版本信息,验证驱动是否安装成功。
modinfo -F version nvidia
这里要注意,我们的驱动已经被之前生成的密钥对签名过了,我们要干的只是重新把密钥导入可信列表
仅需要重复sudo mokutil --import /etc/pki/akmods/certs/public_key.der
即可,千万不要重新生成!
执行后两次输入你要设置的验证密码,重启并选择导入再输入刚设置的验证密码。
后记
为了缓解N卡在运行AI时对显示输出的压力,我最终把A卡也启用了,也就是关掉了独显直连。
会出现奇奇怪怪的问题,故恢复dGPU mode
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld
技术文,不明觉历。