ubuntu服务器Nvidia-smi掉驱动|重装大法|NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA
Ubuntu NVIDIA 驱动重装大法
1. 事故原因
在 Ubuntu 系统中,NVIDIA 驱动通常以 DKMS 模块 的形式安装,这样可以在内核升级后自动重新编译显卡驱动。出现 dkms install 报错的常见原因包括:
-
DKMS 配置文件缺失
/usr/src/nvidia-目录存在,但缺少/ dkms.conf文件,说明驱动源码目录不完整。可能是之前手动安装.run文件,或者升级/卸载时残留。 -
APT 与 .run 混装
一部分驱动通过 APT(官方仓库)安装,另一部分来自 NVIDIA 官网.run安装包,造成环境不一致。 -
内核与 headers 不匹配
当前运行的内核版本与系统已安装的linux-headers不对应,导致 DKMS 无法编译。 -
残留文件未清理
/usr/src/nvidia-*里残留旧版本目录,DKMS 会尝试加载,结果找不到完整源码。 -
系统更新后未重启
内核升级后仍运行旧内核,headers 却对应新内核,导致编译目标和实际运行环境不一致。
按照网上的方法搞了一大圈 也没弄好,索性不装了直接彻底卸载重装,居然搞定了!
PS: 该方法是在ChatGPT的帮助下解决的,请各位自行取用。
2. 重装流程
以下步骤以 APT 软件包管理器安装 为基准(推荐方式,方便维护)。
步骤 1:卸载旧驱动
sudo apt-get purge -y 'nvidia-*'
sudo apt-get autoremove -y
sudo apt-get autoclean
清理残留源码目录:
sudo rm -rf /usr/src/nvidia-*
步骤 2:更新系统并安装依赖
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y build-essential dkms linux-headers-$(uname -r)
确保
uname -r输出的内核版本与/lib/modules/$(uname -r)/build存在并指向正确 headers。
步骤 3:安装驱动
自动选择推荐版本
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
或手动指定版本(示例:550)
sudo apt-get install -y nvidia-driver-550
步骤 4:更新启动镜像并重启
sudo update-initramfs -u
sudo reboot
步骤 5:验证
重启后执行:
nvidia-smi
应显示 GPU 信息和驱动版本。
检查 DKMS 状态:
dkms status
应看到:
nvidia/550.163.01, 6.14.0-xx-generic, x86_64: installed
3. 可能存在的坑
在驱动重装过程中,有以下常见问题需要注意:
-
内核 headers 不匹配
- 表现:
make.log提示缺少头文件。 - 解决:
sudo apt-get install linux-headers-$(uname -r)并重启。
- 表现:
-
APT 与 .run 混装
- 表现:重复安装、DKMS 报错、目录缺失。
- 解决:二选一,推荐使用 APT。若换用 APT,请先彻底卸载
.run驱动(sudo ./NVIDIA-Linux-*.run --uninstall)。
-
Secure Boot 签名问题
- 表现:
modprobe nvidia报未签名模块。 - 解决:关闭 BIOS Secure Boot,或者自己注册 MOK key 并签名。
- 表现:
-
系统未重启
- 表现:
uname -r显示旧内核,但/usr/src已经是新版本 headers。 - 解决:必须重启进入新内核,再编译驱动。
- 表现:
-
磁盘空间不足
- 表现:DKMS 编译中途失败。
- 解决:检查
/usr或/tmp所在分区,df -h确认有足够空间。
总结
- 事故原因:大多是驱动安装不完整、APT 与
.run混用、内核 headers 不匹配。 - 解决思路:先彻底卸载 → 清理残留 → 更新依赖 → 用 APT 重新安装驱动。
- 注意事项:确保 headers 匹配、Secure Boot 配置正确、避免混装,最后重启。









