【解决】Ubuntu安装NVIDIA驱动(咨询NVIDIA工程师的解决方案)

前言

这两天把实验室服务器给装成了Ubuntu16.04+cuda8.0+cudnn5.0,本来以为应该没什么问题,结果那折腾得……不说了,都是泪。具体Caffe,Tensorflow,Mxnet的安装教程已经很多了,我这儿就不说了。本文主要想说说Nvidia驱动和Ubuntu桌面冲突的问题,当时为了解决在网上找了一圈,始终没能解决我的问题,所以这儿特意写篇博客,权当做个记录,希望能给遇到同样问题的人提供一点微小的帮助。
PS:最近和NVIDIA的工程师交流了一下,更完善了一下内容。

环境

一切关于配置的问题不声明环境都是耍流氓

系统:Ubuntu16.04 64bit
显卡:Nvidia GFoce GTX TITAN X
驱动:nvidia 375.20
软件版本:cuda8.0 + cudnn5.0

问题声明

在ubutnu上配置cuda时需要安装nvidia的驱动,所以在安装了驱动后出现了进入Ubuntu循环登录的问题。

问题解释(大概)

以下属于我的猜测

一般而言我们安装的ubuntu 的显示器并没有接到nvidia的显卡上,而是使用了intel的集显。我们安装驱动其实只是想将我们运算的显卡的驱动更新,结果都给搞了,所以产生了冲突。当然,也可能时opengl产生的冲突。

Nvidia驱动正确安装过程

找到适合的正确的驱动

去nvidia驱动官网下载

卸载掉原有驱动

sudo apt-get remove –purge nvidia*

如果使用的是apt-get安装可以使用这种方法卸载,如果使用的是runfile,则使用--uninstall命令,当然runfile安装的时候会卸载掉之前的驱动,所以可以不用手动去卸载。

禁用nouveau

打开编辑配置文件:

/etc/modprobe.d/blacklist.conf

在最后一行添加:

blacklist nouveau
禁用nouveau第三方驱动,之后也不需要改回来

执行:

sudo update-initramfs -u

重启后执行:

lsmod | grep nouveau

没有输出即屏蔽好了

禁用X服务

执行:

sudo /etc/init.d/lightdm stop

安装驱动

进入命令行界面

Ctrl-Alt+F1

给驱动run文件赋予执行权限

sudo chmod a+x NVIDIA-Linux-x86_64-375.20.run

安装(注意 参数)

sudo ./NVIDIA-Linux-x86_64-375.20.run –no-opengl-files

  • –no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要
  • –no-x-check 安装驱动时不检查X服务
  • –no-nouveau-check 安装驱动时不检查nouveau
    后面两个参数可不加。

重启,并不会出现循环登录的问题

禁忌

  1. 安装CUDA时一定使用runfile文件,这样可以进行选择。不再选择安装驱动,以及在弹出xorg.conf时选择NO
  2. 不要使用ubuntu设置中附加驱动中驱动

无法进入桌面的问题

如果出现无法进入桌面的问题,这是因为驱动修改了xorg的配置,可执行一下命令:

cd /usr/share/X11/xorg.conf.d/
sudo mv nvidia-drm-outputclass.conf nvidia-drm-outputclass.conf.bak

提醒

  1. cuda安装时会将源文件装在/usr/local/cuda-8.0下,然后会创建一个/usr/local/cuda的链接,所以在安装tensorflow设置cuda和cudnn路径以及拷贝cudnn文件到cuda文件夹下时,注意使用真实的路径
  2. 在安装了cuda之后再安装nvidia驱动,可能这和网上“流传”的教程有些出入,但是长得帅的人都这样做了,换句话说,这样做的话会避免出现一些奇怪的问题。比如:tf安装好了出现的缺少libcuda.so.1

再结合各个框架官网的安装教程,相信大家会拥有一个好的开发环境了。那么让我们开始好好调教系统吧。

以上。

你可能感兴趣的:(深度学习,环境配置,ubuntu,cuda,caffe)