早上更新系统,晚上 nvidia-smi 就挂了
homelab 执行完 pacman -Syu 后,系统日志里出现这行:
failed to generate CDI spec: failed to create device CDI specs: failed to construct device spec generators: failed to initialize NVML: Driver Not Loaded
跑 nvidia-smi 直接报错。一开始以为是简单的模块没加载, modprobe nvidia 怎么都不行。
查了一圈发现是内核升级惹的祸 —— 从 6.19.6 到了 6.19.8,而我的 nvidia-580xx-dkms 还停留在 580.119 版本。
为啥用 yay 装 580 版本?因为 Arch 官方仓库的 nvidia 驱动已经放弃支持 Pascal 架构(GTX 1080 Ti 就是 Pascal)。官方驱动只管 Turing 以后的显卡,老卡只能靠 AUR 社区维护的 nvidia-580xx-dkms 续命。
诊断过程很简单:
# 检查当前内核版本
uname -r
# 6.19.6-zen1-1-zen
# 确认 GPU 存在
lspci | grep -i nvidia
# 01:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti]
# 查看驱动版本
pacman -Q nvidia-580xx-dkms
# nvidia-580xx-dkms 580.119.02-2
# 检查模块是否加载(无输出 = 未加载)
lsmod | grep nvidia
# 查看 DKMS 状态
dkms status nvidia
# nvidia/580.119.02: added <- 注意是 added 而非 installed编译日志里的报错很直白(=/var/lib/dkms/nvidia/580.119.02/build/make.log=):
././common/inc/nv-mm.h:209:25: error: 'struct vm_area_struct' has no member named '__vm_flags'; did you mean 'vm_flags'?
6.19 内核移除了这个字段,旧驱动代码直接编译失败。
yay 一查,AUR 上 nvidia-580xx-dkms 已经更新到 580.142。
# 升级驱动到最新版本
yay -S nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils nvidia-580xx-settings
# 如果想手动为当前内核编译模块
sudo dkms install nvidia/580.142 -k 6.19.8-zen1-1-zen
# 手动加载模块(可选,重启后自动加载)
sudo modprobe nvidia nvidia_uvm nvidia_drm升级、编译、重启一气呵成。修复后的 nvidia-smi 输出:
Tue Mar 17 21:30:20 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.142 Driver Version: 580.142 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce GTX 1080 Ti Off | 00000000:01:00.0 Off | N/A |
| 30% 36C P0 58W / 250W | 0MiB / 11264MiB | 0% Default |
+-----------------------------------------+------------------------+----------------------+但这事儿没完。下次内核大版本升级时,AUR 包如果没及时更新,问题还会再现。
# 设置模块自动加载
echo "nvidia
nvidia_uvm
nvidia_drm" | sudo tee /etc/modules-load.d/nvidia.conf
# 验证配置
cat /etc/modules-load.d/nvidia.conf
# nvidia
# nvidia_uvm
# nvidia_drm
# 内核升级后的验证清单
dkms status nvidia
# nvidia/580.142, 6.19.8-zen1-1-zen, x86_64: installed
nvidia-smi
# 应该正常输出 GPU 信息
lsmod | grep nvidia
# nvidia 111632384 1 nvidia_uvm
# nvidia_uvm 3940352 0至少重启时模块能自动加载。另外得养成习惯:内核升级后先检查 dkms status nvidia 和 =nvidia-smi=,别等要用 GPU 了才发现又挂了。