Ubuntu断电/重启显卡驱动消失:“NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver....“
单位有一台用于运行人脸识别服务的高性能服务器,操作系统是ubuntu,一直存在一个问题:断电重启抽显卡驱动就会消失。以往每次显卡驱动消失后,都是请开发商对显卡驱动进行重新安装,麻烦又费时费力。
昨天(1月15日)停电恢复后再次出现了此问题,今天恰逢年底,抽时间对本问题进行了搜索并进行尝试,详细情况记录一下:
1.再现问题
执行命令:nvidia-smi
提示信息:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver....
2.问题原因
自己不具备这方面的知识,从网络上进行了搜索了解:这个问题通常是由电脑重启后切换到了新的内核版本上,由于linux内核升级,之前的Nvidia驱动就不匹配连接了,但是此时Nvidia驱动还在,可以通过命令 nvcc -V 找到答案。
3.解决方案
搜索了多个博客,找到了两个解决方案,如下:
一、下载DKMS,由它维护内核外的驱动程序,并在内核版本变化后自动生成新的模块。 相关命令如下:
(1)安装sudo apt-get install dkms
(2)查看本机连接不上的驱动版本:ls -l /usr/src/
图中明细可以看出,nvidia-470.57.02
(3) 使用dkms重新安装适合驱动:sudo dkms install -m nvidia -v 470.57.02
(4) reboot后,再次执行nvidia-smi 验证。
二、固定内核版本,禁止内核更新
(1)查看已有的内核版本:sudo dpkg --get-selections | grep linux-image
本截图是后补的,200后面带了hold。
(2)查看正在用的内核: uname -r
系统当前使用的内核是4.15.0-202-generic版本。
(3)固定内核(固定到你在用的版本):sudo apt-mark hold linux-image-4.15.0-200-generic
此处我选择了200进行了固定,重启后发现200-generic 出现了hold字样,但 uname -r 发现仍然是202-generic。
4.问题现状
前述两种方案都进行了尝试,重启reboot之后,执行nvidia-smi,如图,问题得到了解决(至于是哪种方案起了作用,目前没有想明白)。