服务器(Dell T360+2块Tesla P100)配置显卡驱动和cuda最终版(终于配置好了)

前言: 一开始我们实验室尝试用deb安装包的方法安装NVIDIA Tesla P100对应的显卡驱动和CUDA,但是总是出现重复登录的问题,迫不得已我们最后采用比较繁琐的用run文件安装显卡驱动和CUDA的方法。(还是建议先用deb文件安装一下试试,因为比较简便。)
首先明确一下,我没有安装NVIDIA驱动程序。我改为运行了cuda.run文件,并在提示我时安装了NVIDIA驱动程序。
1)下载相关CUDA.run文件。
2)安装前准备

$ sudo apt-get update
$ sudo apt-get install build-essential

3)无需创建xorg.conf文件。如果你有一个,删除它(假设你安装了新的操作系统)。

$ sudo rm /etc/X11/xorg.conf 

4)屏蔽系统自带的显卡驱动nouveau

image.png

新建blacklist-nouveau.conf文件,输入命令:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

往文件中写入:

blacklist nouveau
options nouveau modeset=0

保存并退出。这一步是为了禁掉Ubuntu自带开源驱动nouveau。
然后执行命令:

sudo update-initramfs -u

接下来需要重启,输入reboot命令,重启后执行:

lsmod | grep nouveau

查看nouveau模块是否被加载。如果什么都没输出,则已成功禁用。
5)使用下面命令禁用X server

sudo service lightdm stop

会出现黑屏,然后同时按:Ctrl + Alt + F1,然后输入用户名和密码。

6)转到您拥有CUDA驱动程序的目录,然后运行

$ chmod a+x cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb

7)现在,运行命令进行安装,请注意,我明确不希望安装OpenGL标志:

$ sudo bash cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb --no-opengl-libs

8)我的会出现以下问题,如果您的没有问题,可跳过这一步。

Installing the NVIDIA display driver... The driver installation is unable to locate the kernel source. Please make sure that the kernel source packages are installed and set up correctly. 
If you know that the kernel source packages are installed and set up correctly, you may pass the location of the kernel source with the '--kernel-source-path' flag.

参考文章:https://oldpan.me/archives/install-cuda9-1-unable-to-locate-the-kernel-source
参考文章:https://www.cnblogs.com/boyzgw/p/6227430.html
我的解决方案是降低ubuntu16.04系统的内核。网上有很多方法,都是坑,我采用了如下方法,亲测有效!
下面开始将我系统的内核由4.15.0-29降为4.4.0-98
(1)使用下面命令回到图形界面

sudo service lightdm restart

(2)基本知识
linux更换内核很简单,一个系统中可以安装多个内核,也可以在开机的时候通过grub来选择要启动的内核。首先我们要做的是先看自己系统中现在存在几个内核。

使用uname -r查看当前使用的内核。

然后我们明确几个有关内核的文件:

/etc/default/grub 定义了有关启动过程的一系列设置,比如设置内核启动顺序、系统等待启动时间、或者启动过程中相关设置等;
/boot/grub/grub.cfg 注意一下这个文件是由上一个文件而自动生成的,不建议修改这个文件的内容
/etc/grub.d 是操作系统菜单目录,也是由系统生成,我们也不用修改。
(3)开始更换,使用下面命令安装4.4.0的内核

sudo apt-get install linux-headers-4.4.0-98-generic linux-image-4.4.0-98-generic

执行完这个命令之后,可以到/boot中看现在存在的kernels


Screenshot from 2018-10-23 21-30-40.png

(4)修改/boot/grub/grub.cfg中的内容。
使用以下命令打开这个文件:

sudo gedit /boot/grub/grub.cfg

找到如下代码块:

 linux  /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-4.15.0-29-generic
}

将其改为自己想使用的内核,我的如下:

linux   /boot/vmlinuz-4.4.0-98-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-4.4.0-98-generic

然后找到如下代码块:

submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {

将此行代码下的与4.15.0-29相关的代码全部删除:

menuentry 'Ubuntu, with Linux 4.15.0-29-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-29-generic-advanced-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8086863d-2eca-415d-85d1-1bebdcf0ef3a
        else
          search --no-floppy --fs-uuid --set=root 8086863d-2eca-415d-85d1-1bebdcf0ef3a
        fi
        echo    'Loading Linux 4.15.0-29-generic ...'
            linux   /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-4.15.0-29-generic
    }
    menuentry 'Ubuntu, with Linux 4.15.0-29-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-29-generic-init-upstart-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8086863d-2eca-415d-85d1-1bebdcf0ef3a
        else
          search --no-floppy --fs-uuid --set=root 8086863d-2eca-415d-85d1-1bebdcf0ef3a
        fi
        echo    'Loading Linux 4.15.0-29-generic ...'
            linux   /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro  quiet splash $vt_handoff init=/sbin/upstart
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-4.15.0-29-generic
    }
    menuentry 'Ubuntu, with Linux 4.15.0-29-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-29-generic-recovery-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {
        recordfail
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  8086863d-2eca-415d-85d1-1bebdcf0ef3a
        else
          search --no-floppy --fs-uuid --set=root 8086863d-2eca-415d-85d1-1bebdcf0ef3a
        fi
        echo    'Loading Linux 4.15.0-29-generic ...'
            linux   /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-4.15.0-29-generic
    }

然后点击保存!
(5)在/boot目录中,执行以下命令删除掉这个目录内所有4.15内核的文件

sudo rm -rf *4.15.0-29*

(6)执行下面命令来对你之前的设置进行更新。

sudo update-grub

(7)最后重启,输入下面命令检查是否以更换到了4.4.0内核

uname -r

如果显示内核已经更改为4.4.0,则从第5步开始重新安装!
9)安装过程中
接受EULA条件
安装NVIDIA驱动程序说“是”
安装CUDA工具包+驱动程序说“是”
安装CUDA样品说“是”
不用Nvidia重建任何Xserver配置。
10)安装应该完成,但是我有以下小问题,如果您没有问题,可以跳过这一步。

Missing recommended library: libGLU.so 
Missing recommended library: libX11.so 
Missing recommended library: libXi.so 
Missing recommended library: libXmu.so
.......

原因是缺少相关的依赖库,安装相应库就解决了:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

再次执行第7步进行安装,就不再提示了。
11)重启电脑,检查Device Node Verification
执行:

 ls /dev/nvidia*

结果显示

/dev/nvidia0  /dev/nvidiactl  /dev/nvidia-modeset  /dev/nvidia-uvm
或者
/dev/nvidia0      /dev/nvidiactl      /dev/nvidia-uvm

则安装成功。
如果不显示这几个文件,参考以下博客进行解决:
https://blog.csdn.net/QLULIBIN/article/details/78714596
12)添加环境路径变量:
终端中输入

sudo gedit /etc/profile

在打开的文件末尾,添加以下两行:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\
                                                   ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存文件,并重启。因为source /etc/profile是临时生效,重启电脑才是永久生效。
这里有点与官方安装文档稍有不同,需要说明:
官方文档里说只需在终端中运行上述两条export语句即可,但如果不将它们不写入/etc/profile文件的话,这样的环境变量在你退出终端后就消失了,不起作用了,所以写入才是永久的做法。

重启电脑,检查上述的环境变量是否设置成功
a、 验证驱动版本,在终端中输入以下命令:

cat /proc/driver/nvidia/version

结果显示

gs@gs:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.130  Wed Mar 21 03:37:26 PDT 2018
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)

b、 验证CUDA Toolkit,在终端中输入以下命令:

nvcc -V       

会输出CUDA的版本信息
如果是这样的:
The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
可能是环境配置没有成功,请重复上述步骤7)。
13)尝试编译cuda提供的例子
见文章:https://www.jianshu.com/p/71bc5f02ecd2
14)重新启动。一切都应该没问题。

六、远程连接安装

这里安装的是 windows 访问Ubuntu的,你们可以在windows 系统运行mstsc,选择ip端口访问远程Ubuntu桌面。
这个方便所有人一块使用服务器
https://www.linuxidc.com/Linux/2017-09/147112.htm

  1. 安装xrdp
    使用快捷键"Ctrl+Alt+T"打开一个终端窗口,输入"sudo apt-get install xrdp"-->回车-->输入root用户的密码-->回车-->输入"y"-->回车,安装完成。
  2. 安装vnc4server
    输入"sudo apt-get install vnc4server"-->回车-->输入root用户的密码-->回车-->输入"y"-->回车,安装完成。
  3. 安装xfce4
    输入"sudo apt-get install xubuntu-desktop"-->回车-->输入root用户的密码-->回车-->输入"y"-->回车-->输入"echo "xfce4-session" >~/.xsession"-->回车-->输入"sudo service xrdp restart"-->回车,安装完成。
  4. 解决黑屏问题
    vim /etc/xrdp/startwm.sh

在./etc/X11/Xsession前插入

xfce4-session

重启xrdp

cd /etc/init.d/
./xrdp restart

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容