前言
这两天把实验室服务器给装成了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驱动官网下载(http://www.nvidia.cn/Download/index.aspx?lang=cn)
卸载掉原有驱动
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
再结合各个框架官网的安装教程,相信大家会拥有一个好的开发环境了。那么让我们开始好好调教系统吧。