服務器(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提供的例子
見文章:http://www.lxweimin.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閱讀 228,156評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,908評論 2 372

推薦閱讀更多精彩內容