解决Ubuntu 显卡驱动升级导致的 显卡驱动和内核版本(同时内核存在问题)不匹配的问题
不要轻易升级显卡驱动版本!!!!!!!!!!!
一般而言,驱动升级导致的问题直接降低驱动版本就可,内核升级导致的问题降低内核版本就可。
本文遇到的问题为:无意间升级了显卡驱动,但是正在使用的内核又出现了问题,找不到内核路径(坏内核),无法再安装任何驱动和新内核。解决方法为:找到使用系统的其他已安装内核(好内核),使用好内核的情况下安装合适的显卡驱动
1. 完全卸载Ubuntu当前显卡驱动
查看目前显卡驱动版本:sudo dpkg --list | grep nvidia-*
sudo apt-get --purge remove nvidia*
sudo apt autoremove #这句话存在风险 可能把编译好的安装包 依赖给卸载了 请自己斟酌是否使用
sudo apt-get --purge remove “cublas” “cuda*” ###To remove CUDA Toolkit
sudo apt-get --purge remove “nvidia” ###To remove NVIDIA Drivers
如果没有卸载干净 搜索其他卸载方法
2. 查看系统中所有的安装内核
查看目前系统版本(目前内核):cat /proc/version 或者 uname -r
查看内核列表:sudo dpkg --get-selections |grep linux-image
显示如下:
linux-image-4.4.0-21-generic install
linux-image-4.4.0-66-generic install
linux-image-4.4.0-70-generic deinstall
linux-image-4.4.0-71-generic install
linux-image-4.4.0-72-generic install
Tip:查看教程多安装两个内核 自己baidu
3. 手动下载安装显卡驱动
https://www.nvidia.cn/geforce/drivers/
百度:关于何如在英伟达官网上下载历史驱动的方法.根据自己显卡型号下载
下载好的.run文件上传到Ubuntu中。
准备.run显卡驱动安装工作:
{!!!避免sudo apt-get install nvidia-*安装方式造成登录界面循环。
一. ubuntu默认安装了第三方开源的驱动程序nouveau,安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。
- 编辑文件blacklist.conf
sudo vim /etc/modprobe.d/blacklist.conf
若未安装vim则sudo apt-get install vim安装或使用vi - 在文件最后部分插入以下两行内容
blacklist nouveau
options nouveau modeset=0 - 更新系统
sudo update-initramfs -u - 重启系统(一定要重启)
sudo reboot - 验证nouveau是否已禁用
lsmod | grep nouveau
没有信息显示,说明nouveau已被禁用,接下来可以安装nvidia的显卡驱动。 - 下载后的run文件拷贝至home/transformer(8卡)目录下。
- 在命令行界面下输入:
sudo service lightdm stop //这个是关闭图形界面,不执行会出错。 - 然后卸载掉原有驱动:
sudo apt-get remove nvidia-* //再次卸载 - 给驱动run文件赋予执行权限:
sudo chmod a+x NVIDIA-Linux-x86_64-450.66.run - 安装:
sudo ./NVIDIA-Linux-x86_64-450.66.run -no-x-check -no-nouveau-check -no-opengl-files //只有禁用opengl这样安装才不会出现循环登陆的问题
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件 - 安装选项:
The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。
Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。
问题没记住,选项是:install without signing
问题大概是:Nvidia’s 32-bit compatibility libraries? 选择 No 继续。
Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续
这些选项如果选择错误可能会导致安装失败,没关系,只要前面不出错,多尝试几次就好。 - 挂载Nvidia驱动:
modprobe nvidia - 检查驱动是否安装成功:
nvidia-smi
TIP: 如果出现如果您在安装nvidia官方驱动过程中不幸无法安装并提示"Uable to find the kernel source…",那么请重启ubuntu进入recovery mode,选择root选项,并输入apt-get install linux-headers-uname -r
,然后在安装nvidia官方驱动。
如果出现其他安装问题:
-
ERROR: Failed to run
/usr/sbin/dkms build -m nvidia -v 455.38 -k 5.11.0-38-generic
:
Kernel preparation unnecessary for this kernel. Skipping…Building module: cleaning build area... 'make' -j32 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=5.11.0-38-generic IGNORE_CC_MISMATCH='' modules.....(bad exit status: 2) ERROR (dkms apport): binary package for nvidia: 455.38 not found Error! Bad return status for module build on kernel: 5.11.0-38-generic (x86_64) Consult /var/lib/dkms/nvidia/455.38/build/make.log for more information.
-
ERROR: An error occurred while performing the step: “Building kernel modules”. See /var/log/nvidia-installer.log for details.
-
gcc版本不匹配问题
The CC version check failed: The kernel was built with gcc (Ubuntu 10.2.0-13
等等等,尝试更换内核!!!!!!!!!
4. 无界面,远程控制Ubuntu更换内核版本:
内核可能被自动更新后可能出现:
查看显卡状态: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.内核版本与NVIDIA驱动不匹配导致
使用远程连接操作,无法做到手动重启并桌面设置操作:
-
首先查看当前内核版本:
uname -r
-
查看服务器启动内核的顺序
grep menuentry /boot/grub/grub.cfg
红框内就是ubuntu系统目前所拥有的内核版本与启动顺序,menuentry就是每一条,记住这个顺序,下面要用到,图片中有六个。
3. 比如我们要切换成5.8.0-53-generic’这个,它在上图中的启动顺序是第5个。
终端运行命令 : sudo vim /etc/default/grub
红框内GRUB_DEFAULT=0 修改为 GRUB_DEFAULT=“1> 5”。(Ubuntu20。04使用时GRUB_DEFAULT=“1> 5”,要把5换成4)
注意:> 与4之间有个空格
保存并退出。
- 更新grub
sudo update-grub - 重启服务器
sudo reboot - 重启后查看内核版本(uname -r)已修改成5.8.0-53-generic了。
TIP:如果时内核版本更新导致内核和显卡驱动版本并不兼容情况,且未卸载显卡驱动:再运行nvidia-smi就正常了(已经安装了)。
如果执行了本文第一步:“1. 完全卸载Ubuntu当前显卡驱动卸载服务器的显卡驱动”,则需要重新安装显卡驱动,即重复执行本文第三步:“3. 手动下载安装显卡驱动”
总结:1.下载合适的显卡驱动(避免新版本);2. Ubuntun内核切换;3.最终使显卡版本和内核版本相匹配!!!!!!都是坑啊,惨兮兮
感谢:
https://blog.csdn.net/Thanours/article/details/104834536
https://blog.csdn.net/u011304615/article/details/70919711
https://forum.ubuntu.org.cn/viewtopic.php?t=301749
https://blog.csdn.net/xunan003/article/details/81665835
https://www.php.cn/linux-452322.html