Ubuntu nvidia-smi 突然失效的解决办法与汇总

之前为了省事,直接用CUDA自带的NVIDIA driver,其间一直没有问题,nvidia-smi可以成功显示显卡情况


图片.png

但是nvidia-settings不能用


图片.png

有一天心血来潮,看到有人安利prime-indicator,可以非常简单切换显卡(苦于我的GPU只能跑程序,什么3D渲染,图形界面全用的服务器自带的集显),所以就下载了一个,settings研究打不开,所以就点击了Quick switch Graphics, 告诉我要log out什么东西,我就确定了,之后跳回登陆界面,输入密码后卡死。(事实证明瞎折腾就是给自己挖坑),之后重启。

对,就是这个重启!!他似乎帮我更新了什么乱七八糟的东西,当我再次使用nvidia-smi时,告诉我

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

之后我就开始了漫长的修复之路(辛酸史)

  1. 查看系统拥有的内核
    grep menuentry /boot/grub/grub.cfg
    只有5.3.0-45-generic和5.3.0-46-generic,切换至5.3.0-45,发现仍然没有解决问题。
  2. dkms大法
ls /usr/src   #查看驱动版本

我的是nvidia-440.64.00
所以果断

sudo dkms install -m nvidia -v 440.64.00

告知,nvidia440.64.00 has already install on 5.3.0-46-generic(大概是这么说的),方法崩溃

  1. 检查bios中的secure boot
    发现是disable 没有问题
  2. 安装旧的内核
    比如5.3.0-28, 安装完毕,修改grub进入!
sudo gedit /etc/default/grub #进入文件
#修改
GRUB_DEFAULT = 0  #原始
GRUB_DEFAULT = "1> 4" #改成这样

这里修改的GRUB_DEFAULT需要根据自己的情况来,通过grep menuentry /boot/grub/grub.cfg来查看自己的内核顺序,然后从上往下,第一个是0。 1代表进入Ubuntu高级选项,4代表选择的内核顺序。中间有个空格。
修改完之后

sudo update-grub #更新
reboot #重启

然后我的服务器就失联了,之后找人去看,发现旧内核里面没有网,ifconfig和ifconfig -a都只有lo一个端口。然后托人下载了网卡驱动,去安装,重启,发现还是没网,(大概是驱动不匹配)。放弃了,回到原来的kernel

  1. 重装nvidia驱动
sudo apt-get --purge remove nvidia-*
sudo apt-get autoremove #删除驱动

这一步不能将CUDNN等删去。
之后通过cuda重装,nvidia-smi依旧不行;
通过ppa重装,nvidia-smi依旧不行;
通过软件与更新安装,还是不行;
通过.run文件安装,安装途中报错,也是关于driver和kernel的问题。

之后也尝试了什么modprobe nvidia等方法,都报错。

解决方法

想着可能是内核不完全的问题,就安装了一下kernel的相关包

sudo apt-get install kernel*

其间发现blacklist里有一个blacklist-nvidia.conf文件,在/etc/modprobe.d下面,里面的内容是

blacklist nvidia
blacklist nvidia-uvm
...
... #记不得了

果断删掉了。

安装kernel包的时候,会新装很多内核,所以需要再次进入grub,把default改回当前使用的版本,否则很可能重启之后再次失联!
再次重启,问题解决,一切都回来了!!
然后我果断的


图片.png

(个人经历,有点无厘头,希望对广大网友有所帮助,毕竟都是板砖工,能不重装就不重装)

你可能感兴趣的:(Ubuntu nvidia-smi 突然失效的解决办法与汇总)