本文记录在Ubuntu16.04安装NVIDIA的驱动过程中遇到的问题及解决方法,希望对看到的人有所帮助。

1、显卡驱动安装

(1) 禁用nouveau驱动

sudo vim /etc/modprobe.d/blacklist.conf

在最后添加下面的两行

blacklist nouveau
options nouveau modeset=0

(2) 更新initramfs

sudo update-initramfs -u

(3) 确认nouveau已经禁用

重启后执行下面的命令,没有输出的话表明禁用成功

lsmod | grep nouveau

(4) 进入控制台字符界面安装显卡

在NVIDIA官网下载驱动,https://www.nvidia.cn/Download/index.aspx?lang=cn,建议放在一个没有中文的路径下,进入控制台字符界面之后中文无法显示。

Ctrl+Alt+F1 进入字符界面,然后通过下面的命令停止lightdm服务(lightdm在ubuntu中负责启动X servers)。

sudo service lightdm stop

通过下面命令卸载系统中原有的nvidia程序

sudo apt-get remove --purge nvidia*

切换到驱动文件所在目录,首先给安装文件加上执行权限,然后执行安装文件

sudo chmod +x NVIDIA-Linux-x86_64-430.40.run
sudo ./NVIDIA-Linux-x86_64-430.40.run –no-opengl-files 

关于安装选项 –no-opengl-files,我之前安装一直没加过这个参数,直到有一次出现循环登录进不去系统,查看日志是显卡的问题,多次重装显卡驱动都不行,然后加上–no-opengl-files参数重装之后,就可以顺利登录系统了。

安装过程中如果没有报错,重启即可,如果出现了报错,可能和我遇到的情况一样,下面分解。

2、问题解决方法

(1) Unable to find the kernel source tree for the currently running kernel

sudo reboot 黑屏怎么办_重启

出现这个问题可能是新安装的系统,缺少某些包,解决的方法是安装下面的4个包。

  1. build-essential:安装之后c/c++编译所需的包都会被安装。
  2. xserver-xorg-dev:提供X server开发所需的包。
  3. pkg-config:用于获得模块编译相关的信息。
  4. linux-headers-`uname -r`:提供 Linux kernel headers,注意包住uname -r的符号不是单引号,而是键盘上数字1左边那个按键。

sudo apt-get install build-essential xserver-xorg-dev pkg-config linux-headers-`uname -r`

安装完后重启,再次尝试安装驱动,应该就不会再报这个错。如果出现了新的错误,请继续向下看。

(2) Unable to load the kernel module 'nvidia.ko'

ERROR: Unable to load the kernel module 'nvidia.ko'.   This happens most frequently when this kernel module was built against the wrong or improperly configured kernel sources, with a version of gcc that differs from the one used to build the target kernel, or if a driver such as rivafb, nvidiafb, or nouveau is present and prevents the NVIDIA kernel module from obtaining ownership of the NVIDIA graphics device(s), or no NVIDIA GPU installed in this system is supported by this NVIDIA Linux graphics driver release.

查看日志之后,发现是内核签名导致的

nvidia: module verification failed: signature for required key missing - tainting kernel

网上有的资料说对nvidia的模块进行签名,实际上有一个很简单的方法,首先进bios关闭安全启动,然后执行下面的命令,重启之后再安装应该就好了。

sudo update-initramfs -u