nvidia-smi能运行不代表驱动装对,失败也不代表未安装;需依次验证硬件识别(lspci)、模块加载(/proc/driver/nvidia/version)、工具包、用户组权限及nouveau禁用五项闭环。

nvidia-smi 能跑出来,不代表驱动就装对了;它跑不出来,也不代表驱动没装——得拆开看模块、设备节点、权限三块,缺一不可。
先确认显卡硬件是否被系统识别
这是所有后续判断的前提,不依赖任何驱动。如果这步失败,后面全白搭。
-
lspci | grep -E "(VGA|3D|Display)"必须有输出,比如01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] - 若完全无输出,检查物理连接、PCIe 插槽、BIOS 中是否禁用了独显(如 “Discrete Graphics” 或 “PEG” 设置)
- 别只用
lspci | grep vga,AMD 显卡常标为 “3D controller”,Intel 核显可能是 “Display controller”
查内核模块是否真正加载
nvidia-smi 显示的版本号可能缓存或错位,/proc/driver/nvidia/version 才是唯一权威依据。
- 运行
lsmod | grep nvidia:应看到nvidia、nvidia_modeset、nvidia_uvm三个模块同时存在 - 运行
cat /proc/driver/nvidia/version:成功输出形如NVRM version: NVIDIA UNIX x86_64 Kernel Module 535.129.03才算驱动就位 - 若报
No such file or directory,说明模块根本没加载,此时dmesg | grep -i nvidia常能看到Secure Boot rejected或签名验证失败等线索
nvidia-smi 找不到或通信失败怎么办
模块加载了但 nvidia-smi 报 command not found 或 failed to communicate with the NVIDIA driver,大概率是工具链或权限问题,不是重装驱动的理由。
-
command not found:Ubuntu/Debian 系统中,nvidia-smi属于nvidia-utils-*包,不是驱动本体;运行sudo apt install nvidia-utils-535(版本号需与/proc/driver/nvidia/version一致) -
failed to communicate:重点检查groups输出是否含video和render;若缺失,执行sudo usermod -aG video,render $USER并重新登录 - 检查设备节点:
ls -l /dev/nvidia*应有/dev/nvidia0、/dev/nvidiactl、/dev/nvidia-uvm;若缺失,手动触发sudo modprobe nvidia-uvm
为什么 nouveau 会悄悄抢位
哪怕你装了官方驱动,只要 lsmod | grep nouveau 还有输出,nvidia-smi 就可能静默失效——nouveau 会抢占 GPU 设备节点,把 NVIDIA 模块挤到“加载但不可用”状态。
- 新建
/etc/modprobe.d/blacklist-nouveau.conf,写入两行:blacklist nouveau和options nouveau modeset=0 - Ubuntu/Debian 执行
sudo update-initramfs -u;RHEL/CentOS 执行sudo dracut --force - 重启后必须验证:
lsmod | grep nouveau输出为空,且lsmod | grep nvidia有输出,才算真正清场
最容易被忽略的是:/proc/driver/nvidia/version 存在 ≠ nvidia-smi 可用,nvidia-smi 可用 ≠ CUDA 能跑通。驱动、工具包、用户组、设备节点、nouveau 状态,五者必须全部闭环,GPU 才算真正上线。











