ubuntu18.04 内核自动更新导致驱动掉了

环境:
CPU:[email protected]*6–64 位
GPU:GeForce GTX 1060 6GB
推荐显卡驱动 430版本,因为配置深度学习环境,Tensoeflow ,pytorch ,GCC,等版本问题,而且因为初次安装驱动通过“软件更新“图形界面方式,的附加驱动安装,尝试命令行安装430 版本报错,无法定位,因为sudo apt install nvidia-driver-430 ,写成sudo apt install nvidia-430 ,或者旧版本驱动没有卸载干净。最后安装的是390 版本。
各种安装驱动方法:本人只尝试过两种简单的方式,一是图形界面(先添加源),二是通过命令行,自动安装推荐版本,或者选择指定版本。网上的第三种方式.run ,官网下载驱动,禁用 集显,关闭图形界面,自觉复杂,容易迁出其他很多不懂的问题和麻烦,暂时不敢尝试.

显卡驱动:nvidia-driver -390.116
配置Anaconda3.7,由于版本问题,回退至python3.6
安装好Anaconda之后,有一个默认base 虚拟环境
没有创建其他的虚拟环境,就在base环境中安装tensorflow和pytorch

conda 安装tensorflow1.12
conda install tensorflow-gpu==1.12.0
自动安装相应版本的cuda和cudnn,可以在安装过程中查看到安装的包名,完成后,查询到安装的版本是cuda9.1 和cudnn7.3

conda安装pytorch1.1.0
官网选择相应版本:https://pytorch.org/
我的是 :stable(1.1) +Linux+conda安装+python3.6+cuda9.0
相应安装命令:conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
安装过程中可以看到也会自动下载调整安装匹配的cuda ,cudnn ,甚至调整tensorflow的版本??
这些具体过程我不是很清楚,只是记录了自己安装的过程,没有跟网上教程自己安装CUDA ,CUDNN,再安装tensorflow,pytorch,现在也不是很清楚为什么。如果有小伙伴愿意不吝赐教,可以留言私信!!

至于网上通常配置深度学习环境方式有时间再亲自实践一遍:安装cuda, cudnn 等环境
分别用tensorflow,pytorch,用GPU 跑了测试模型,都没有问题。

然后

一次重启,卡住很长时间无法进入界面,通过机箱重启按钮,再次重启才启动成功,然后就是800*600的屏幕分辨率,很卡,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.

然后开始百度查了网上好多的教程和博客,有的说是bios需要设置安全权限,大多数人说重新安装一遍驱动程序就可以了。
重装驱动好多遍,分别通过软件更新图形界面,和命令安装,尝试安装了390,430 版本都是一样的报错,nvidia setting打开是空白。
之后查询到是因为ubutnu内核升级了,新版本内核和显卡驱动不匹配出现了上面的问题.

有博客称只需要在进行ubuntu启动引导的界面时,就是刚开始叫你选择操作系统的界面,选择“ubuntu高级选项”,选择上一个内核版本启动,就可以。
例如我的最新版本是4.18.0-20-generic版本,然后在进入GRUB 界面时选择上一个版本4.18.0-18-generic
启动后,再使用nvidia-smi命令看看
我觉得可以试一试,可能很简单的就解决了,如果没有其他问题的话。
但我还存在gcc b版本的问题,所以这个方式并没有解决我的问题
但不足之处每次开机启动都要手动选择,

通过设置默认内核启动版本

查看已安装内核
dpkg --get-selections |grep linux-image
或者
该命令显示内核的顺序,比如显示为:
grep menuentry /boot/grub/grub.cfg

查看当前正在使用的内核
uname -a或者 uname -r

1、打开grub配置文件
sudo gedit /etc/default/grub(或者vi,vim打开)

2.修改GRUB

默认为GRUB_DEFAULT=0
特定版本的内核
则将上述语句修改为:
GRUB_DEFAULT=“Advanced options for Ubuntu > Ubuntu, with Linux 4.18.0-18-generic”(注意是自己想要的内核版本)

GRUB_DEFAULT=“gnulinux-advanced-5b5cabf4-e78b-457c-b10f-b662ba4c57d9>gnulinux-4.18.0-18-generic-advanced-5b5cabf4-e78b-457c-b10f-b662ba4c57d9”

根据内核版本顺序填写对应数字

3.更新GRUB并重启
sudo update-grub
sudo reboot

4.uname -r 查看内核版本是否切换成功

我通过以上方式均仍然不能切换内核版本,我觉得有可能是WIN10+ubuntu18.04双系统的原因。

最后采用删除最新内核的方法

删除内核(注意不要删除当前系统正在使用的内核
sudo apt-get remove linux-image-xxx-xx-generic

sudo dpkg --purge linux-image-x.x.x-xx-generic

如需要升级内核安装新内核
sudo apt-get install linux-headers-x.x.x-x-generic linux-image-x.x.x-x-generic

阻止内核自动更新:(需要时间验证)
sudo apt-mark hold linux-image-generic linux-headers-generic

sudo apt-mark hold linux-image-x.xx.x-xx-generic
sudo apt-mark hold linux-image-extra-x.xx.x-xx-generic

解除阻止自动更新:
sudo apt-mark unhold linux-image-generic linux-headers-generic

sudo apt-mark unhold linux-image-x.xx.x-xx-generic
sudo apt-mark unhold linux-image-extra-x.xx.x-xx-generic

通过删除新内核,GRUB-DEDAULT=0 的方式切换到上一个版本4.18.0-18-generic。
再次安装驱动,仍然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.

再次查询,偶然在评论区看到一个小伙伴有相同的问题,是因为GCC版本问题,想到之前因为配置深度学习环境,GCC,G++版本降到4.8.就去试一试切换到ubuntu的默认gcc版本之一7.3,再次重装驱动,成功了。
GCC,G++版本切换:https://blog.csdn.net/qq_43222384/article/details/90296328

思考;很多时候我们会采用重装方式解决问题,这是一个解决问题的思考方向,尝试还原,即逆向过程,把一些设置和做的改变还原去发现问题去代替真的重装(真的很费时间和耐心)。这次GCC版本问题体现了。

声明:主要作记录对抗遗忘,不敢保证所说所写都是正确的,各位读者伙伴必须经过自己思考,乐意交流。
参考:
https://blog.csdn.net/weixin_43064339/article/details/88370372
https://blog.csdn.net/cf_wu95/article/details/85984956

你可能感兴趣的:(工具)