早上更新系统,晚上 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 了才发现又挂了。