cat /proc/driver/nvidia/version 是唯一能确认当前正在运行的 nvidia 驱动版本的命令,它直接读取内核模块运行时信息;其他方法如 nvidia-smi 或 modinfo nvidia 分别依赖缓存或磁盘文件,无法反映真实加载状态。

cat /proc/driver/nvidia/version 是唯一能确认当前**正在运行**的 NVIDIA 驱动版本的命令。其他方法要么缓存、要么不反映真实加载状态。
别信 nvidia-smi 顶部显示的 Driver Version
它只是 NVML 接口报告的版本号,可能滞后、未刷新,甚至在驱动崩溃后仍显示旧值。比如你刚升级驱动但没重启,nvidia-smi 可能还显示 525.85.12,而实际加载的是 535.129.03。
-
nvidia-smi依赖用户态 daemon 和内核模块通信,一旦其中一环断开(如nvidia-persistenced没启),它就 fallback 到缓存值 - 若
nvidia-smi报错NVIDIA-SMI has failed because it couldn't communicate...,那顶部版本号完全不可信 - 真正代表“驱动已就位”的信号是
/proc/driver/nvidia/version文件存在且可读
modinfo nvidia | grep ^version 查的是磁盘上的驱动文件版本,不是运行时版本
这个命令读取的是 /lib/modules/$(uname -r)/kernel/drivers/video/nvidia.ko(或类似路径)的元信息,和当前加载的模块未必一致——尤其当你用 DKMS 安装多个版本、或手动替换过 ko 文件但没 reload 模块时。
- 常见于系统更新内核后忘记重新编译 NVIDIA 模块:
modinfo显示新版驱动,但lsmod里还是旧模块,/proc/driver/nvidia/version会报错或为空 - AMD 用户对应命令是
modinfo amdgpu | grep ^version,Intel 是modinfo i915 | grep ^version,但它们不像 NVIDIA 那样有/proc/driver/*/version这种运行时接口,所以更需交叉验证
查不到 /proc/driver/nvidia/version?说明驱动根本没加载
这不是权限问题,而是内核模块缺失或加载失败。此时 lsmod | grep nvidia 输出为空,nvidia-smi 必然报错。
- 先确认硬件存在:
lspci | grep -E "(VGA|3D|Display)"—— 如果无输出,检查物理连接或 BIOS 设置 - 再看加载日志:
dmesg | grep -i nvidia,常见失败原因包括 Secure Boot 启用、nouveau 未彻底屏蔽、或内核头文件不匹配 - 不要只看
systemctl status nvidia-persistenced,它起不来往往是因为底层模块根本没 load 成功
AMD/Intel 用户没有统一的 /proc/driver/*/version,得拼几条命令
开源驱动不提供类似 NVIDIA 的运行时版本接口,必须组合判断:
- AMD:
cat /sys/module/amdgpu/version(模块编译版本)、lspci -k | grep -A3 -i vga(看Kernel driver in use:行)、rocm-smi --showtemp 2>/dev/null || echo "ROCm not installed" - Intel:
modinfo i915 | grep ^version(模块版本)、glxinfo | grep "OpenGL renderer"(确认 Mesa 正在用 i915)、vainfo(验证 VA-API 是否通) - 注意:
glxinfo | grep "OpenGL version"显示的是 Mesa 实现的 OpenGL 版本,和底层驱动版本无关;它可能显示 4.6,但i915模块仍是老版本,硬解会失效











