写在前面:第一次安装的时候还算顺利,按照网上的教程,先在bios里面禁用Security boot,而后添加ppa源,然后直接点击software&Update进行安装,直接就成功了。所以也就没想着整理这个过程。但是期间在安装内存条的过程中重启了,不知道提前更新哪些东西或更改了什么操作导致nvidia驱动挂了,直接报错如下:
[FAILED] Failed to start Load Kernel Modules. ...
之前还以为是内存条不兼容导致的,后来仔细分析是显卡驱动挂了。如果遇到这个情况恢复很容易,**进入命令行模式(ctrl + alt + F2)**然后直接卸载之前安装的nvidia驱动,reboot,卸载命令参考步骤3,这次我遇到了很多坑,所以必须整理出来,任何Ubuntu操作系统严格按照这个顺序安装应该不会有问题。
# 官网链接:
https://www.nvidia.cn/Download/index.aspx?lang=cn
# Ubuntu查看NVIDIA显卡版本的命令:
lspci|grep NVIDIA
# 1. 加入显卡驱动到 ppa
sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update
# 2. 查看Ubuntu推荐的驱动版本
ubuntu-drivers devices
我的recommended显卡版本为440
然后根据你自己的操作系统和显卡版本下载合适的驱动文件NVIDIAxxx.run
# 1. 新建一个文件如下:
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
# 2. 在上面的文件中写入如下内容:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
# 3. 更新一下内核
sudo update-initramfs -u
# 4. reboot 重启之后,(ctrl+alt+F2)进入命令行界面输入如下命令,如果没有任何输出说明禁用成功。
lsmod | grep nouveau
这个步骤我做了n次,每次安装不成功就需要清理一遍,安装之前一定要把之前按照的nvidia驱动清楚干净。
sudo apt-get purge nvidia*
sudo apt-get autoremove nvidia*
# 我把amd驱动也卸了
sudo apt-get purge amd*
# 也可以用nvidia提供的卸载工具来卸载
sudo /usr/lib/nvidia-uninstall
如果重新安装nvidia驱动就必须要删除之前安装的结果。
# 给驱动文件加操作权限
chmod a+x NVIDIAxxx.run
# 执行安装
bash ./NVIDIAxxx.run --no-opengl-files --no-x-check --no-nouveau-check
# -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?
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?
Install NVIDIA's 32-bit compatibility libraries?
XXXXXXX sign the NVIDIA kernel module?
… 接下来一路ok
如果没有问题执行命令:nvidia-smi,出现如下结果,表示安装成功,有问题参考后面。
# 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 继续就会使用 gcc 来 build module,如果gcc的版本有改动的话和系统不匹配就会出现问题。
结束安装后查看gcc版本,gcc --version,果然是之前安装的gcc4.8.5,果断改为gcc7.0,切换gcc的命令:
sudo update-alternatives --config gcc
本文的系统和驱动版本下需要用gcc7.0,所以更改gcc的版本之后继续安装。
解决方法:修改BIOS里面的secure boot改为disable即可,如下图所示:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
不用慌张,也不要急着重做系统,不过是显卡驱动的问题,你禁用了nouveau的驱动,又没安装上nvidia的显卡驱动所以就进不去图形界面了。
直接进入命令行模型卸载nvidia驱动,然后删除/etc/modprobe.d/下的禁用nouveau的文件blacklist-nouveau.conf和nvidia-installer-disable-nouveau.conf后reboot即可,然后就默认使用nouveau驱动了,这个是保底方案保证安装不成功也不影响图形界面使用。