Ubuntu16.04下安裝驅動,cuda8.0,cudnn,ffmpeg等

安裝驅動

驗證自己的電腦是否有一個可以支持CUDA的GPU

ubuntu的終端中輸入命令: lspci | grep -i nvidia ,會顯示出你的NVIDIA GPU版本信息,不過不是很詳細。
安裝相關依賴:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev  
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev  
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

驗證系統是否安裝了kernel header和 package development

在終端中輸入: uname -r
然後查看顯示結果是否和自己的要安裝要求的一樣,下載cuda安裝文件的時候,在那個界面的最下方有一個安裝指導書( Installation Guide for Linux),按照官網的指導應該是可以正確安裝的。

絕大部分人裝不上驅動,後面安裝不上cuda可能就是系統內核的版本過高,cuda要求系統內核是4.4,而現在的系統是4.15,降低系統內核後,問題一般就解決了

降低系統內核的方法就是直接用新內核替換舊內核,參考鏈接:
https://favoorr.github.io/2017/02/11/update-kernel-for-ubuntu/
https://oldpan.me/archives/install-cuda9-1-unable-to-locate-the-kernel-source
https://zhuanlan.zhihu.com/p/36979657

安裝內核
sudo apt-get install linux-headers-4.4.0-98-generic linux-image-4.4.0-98-generic
卸載舊內核
查詢目前安裝的內核
sudo dpkg --get-selections |grep linux

卸載舊內核
sudo apt remove linux-image-4.15.0-29-generic linux-image-4.15.0-45-generic等
卸載與4.15.0-29和4.15.0-45相關的linux-image*-generic,linux-headers*-generic
更新啓動引導
sudo update-grub
確認最新內核安裝情況
ls /boot/vmlinuz*
重啓
reboot
重啓後驗證
uname -a

如果上述方法不OK,進入/boot/, 執行sudo rm -rf *4.15.0-45*sudo rm -rf *4.15.0-29*
修改/etc/default/grub中GRUB_DEFAULT="Ubuntu,Linux 4.4.0-98-generic"
最後執行sudo update-grub來對你之前的設置進行更新

我的sudo dpkg --get-selections |grep linux結果如下:
在這裏插入圖片描述

換內核後,建議執行以下更新:

sudo apt-get install build-essential
apt-get install linux-source
apt-get source linux-image-$(uname -r)
apt-get install linux-headers-$(uname -r)

禁用 nouveau驅動

終端中運行:$ lsmod | grep nouveau,如果有輸出則代表nouveau正在加載。需要我們手動禁掉nouveau。

Ubuntu的nouveau禁用方法:
a、在/etc/modprobe.d中創建文件blacklist-nouveau.conf

輸入命令:$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf (利用vi編輯器編輯和保存文件),個人覺得應gedit更方便

在文件中輸入一下內容:

blacklist nouveau
options nouveau modeset=0

b、執行:sudo update-initramfs -u

c、再執行:lsmod | grep nouveau

若無內容輸出,則禁用成功,若仍有內容輸出,請檢查操作,並重覆上述操作。如果重複多次還是不行,建議重啓電腦查看結果

安裝驅動

首先去官網 http://www.nvidia.com/Download/index.aspx?lang=en-us,
查看適合自己顯卡的驅動並下載:我的顯卡型號是GTX1080 Ti,系統是linux 64位,按照要求選擇後點擊search.,點擊下載就好了。查找的過程中可能需要翻牆,不翻牆可能點擊search沒反應
這裏我下載的是NVIDIA-Linux-x86_64-418.43.run

安裝顯卡驅動要先切換到文字界面,(按Ctrl+Alt+F1~F6).所以,啓動電腦後,先進入文字界面。然後,輸入命令 sudo service lightdm stop

現在可以安裝驅動了,進驅動目錄 ,然後: sudo sh ./NVIDIA-Linux-x86_64-418.43.run,按照提示一步步來~
在這裏插入圖片描述
此處選擇NO

完成後,再次重啓電腦。

安裝完成之後輸入以下指令進行驗證: sudo nvidia-smi,若列出了GPU的信息列表則表示驅動安裝成功

如果遇到了下圖所示的情況,說明驅動裝的有問題,先卸載後重新安裝
在這裏插入圖片描述

NVIDIA驅動卸載:

sudo /usr/bin/nvidia-uninstall

runfile安裝cuda

CUDA提供兩種安裝方式:package manager安裝和runfile安裝,個人覺得runfile安裝更方便一點
下載完後,用MD5 檢驗,如果序號不和,得重新下載
輸入命令:md5sum cuda_9.0.176_linux.run

安裝cuda

重啓電腦,進入登錄界面的時候,不要登錄進入桌面(否則可能會失敗,若不小心進入,請重啓電腦),直接按Ctrl+Alt+F1進入文本模式(命令行界面),登錄賬戶。

安裝cuda也需要禁用 nouveau驅動和 sudo service lightdm stop 關閉圖形化界面

切換到cuda安裝文件的路徑,執行sudo sh cuda_*_linux.run,根據提示一步步操作:

注意

選擇是否安裝nvidia驅動時,一定要選擇否: Install NVIDIA,因爲前面我們已經安裝了更加新的驅動了,所以這裏不要選擇安裝。其餘的都直接默認選擇是即可。

添加cuda路徑

輸入sudo vi /etc/profile在最後添加

export PATH="/usr/local/cuda-8.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"

並執行sourvc /etc/profile
如果後面使用pythonimport tensorflow時報錯ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory,大概率是沒有添加cuda路徑

輸入sudo service lightdm start 重新啓動圖形化界面。

同時按住Alt + ctrl +F7,返回到圖形化登錄界面,輸入密碼登錄。

驗證cuda是否安裝成功

編譯samples例子:

#編譯並測試設備 deviceQuery:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

#編譯並測試帶寬 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest

如果這兩個測試的最後結果都是Result = PASS,說明CUDA安裝成功啦。

參考鏈接:
https://blog.csdn.net/qlulibin/article/details/78714596
https://blog.csdn.net/wanzhen4330/article/details/81699769#%E5%A4%8D%E6%9D%82%E7%9A%84%E6%96%B9%E6%B3%95%E2%80%94%E2%80%94%E5%B8%A6%E9%A9%B1%E5%8A%A8%E7%9A%84%E5%AE%89%E8%A3%85%E6%96%B9%E6%B3%95

CUDA卸載

CUDA默認安裝在 /usr/local/cuda-8.0下,用下面的命令卸載::

sudo /usr/local/cuda-8.0/bin/uninstall_cuda-8.0.pl
sudo rm -rf /usr/local/cuda-8.0/

安裝cudnn

cuda地址:https://developer.nvidia.com/rdp/cudnn-download
下載需要的cudnn,需先登錄

下載完cudnn-8.0-linux-x64-v6.0.tar將其解壓tar -xf cudnn-8.0-linux-x64-v6.0.tar,可得到一個名爲cuda的文件夾
複製該文件夾下內容至cuda安裝路徑

cp ./cuda/include/cudnn.h /usr/local/cuda-8.0/include/
cp ./cuda/lib64/* /usr/local/cuda-8.0/lib64/

在後面python倒入tensorflow時,遇到個bug,ImportError: /usr/local/cuda-8.0/lib64/libcudnn.so.6: invalid ELF header,可能是是由於我在Mac系統下解壓的cudnn文件,然後上傳到Linux系統,這樣導致的bug。直接在Linux系統執行tar -xf cudnn-8.0-linux-x64-v6.0.tar,解決了問題

bug Ctrl+Alt+F1到F6黑屏

想通過Ctrl+Alt+F1到控制檯,得到的是黑屏。按Ctrl+Alt+F7可以返回到正常的圖形界面。
解決:
1.修改grub文件

sudo gedit /etc/default/grub
在打開的文件裏找到找到變量GRUB_CMDLINE_LINUX_DEFAULT,並修改
#GRUP_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUP_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1 nomodeset vga=791"

2.更新grub並重啓電腦

sudo update-grub
sudo reboot

ubuntu16.04配置網卡

查看網卡信息

輸入ifconfig命令查看網卡信息

配置網卡文件

輸入下面命令進行編輯網卡文件sudo vi /etc/network/interfaces
默認的文件內容如下:

auto lo
iface lo inet loopback

現在修改配置文件。修改方式有兩種

方式一:靜態ip

修改內容如下:下面的enp0s3需要改成自己的網卡名稱,就是上面第一步得到的信息。ip地址,掩碼網關,dns自己合理配置就行了。記得wq!保存退出。

auto enp0s3
iface enp0s3 inet static
address 192.168.0.1
netmask  255.255.255.0
gateway  192.168.0.1
dns-nameservers 159.226.39.1 8.8.8.8

方式二:動態獲取ip配置

auto enp0s3
iface enp0s3 inet dhcp

注意上面的網卡寫成自己的網卡名稱。記得wq!保存退出。

重啓網卡,重啓電腦

/etc/init.d/networking restart
service networking restart
reboot

重啓電腦後,ifconfig查看配置是否生效。測試ping www.baidu.com

參考鏈接:
https://blog.csdn.net/stay_zezo/article/details/80718369
https://www.cnblogs.com/yudar/p/4446975.html

Ubuntu實現遠程登陸之ssh

ssh: connect to host ****** port 22: Connection refused有以下兩種原因

  1. 檢查是否安裝了openssh-server
ps -e|grep ssh

如果只出現了一個ssh,說明沒有安裝,通過sudo apt install openssh-server安裝

  1. sshd未啓動
service sshd restart
  1. 重新連接時,可能遇到的問題
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:GeXlCMdx5LINJhGZ+vEq+G97JqJtEGJ1PnYiZn3l/NE.
Please contact your system administrator.
Add correct host key in /Users/*/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/*/.ssh/known_hosts:9
ECDSA host key for 192.168.227.5 has changed and you have requested strict checking.
Host key verification failed.

解決辦法:
在正在操作的機器上執行

vi ~/.ssh/known_hosts

進入此目錄,刪除的192.168.227.5.**相關rsa的信息即可.

ffmpeg

https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

掛載大於2T的硬盤

通過sudo fdisk -lu可以看到將要掛載的硬盤
因fdisk分區最大隻能2T,所以這裏使用parted來分區.
執行命令parted /dev/sdX,X替換成自己的盤符,這裏以sdb爲例

mcg@mcg:~$ sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sdb: unrecognised disk label
Model: LSI MRSASRoMB-8i (scsi)
Disk /dev/sdb: 4000GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mklabel gpt
(parted) print
Model: LSI MRSASRoMB-8i (scsi)
Disk /dev/sdb: 4000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart primary 0 -1
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) quit
Information: You may need to update /etc/fstab.

格式化新硬盤: sudo mkfs.ext4 /dev/sdb1
創建硬盤將掛載位置:sudo mkdir /media/sdb1
掛載分區:sudo mount /dev/sdb1 /media/sdb1
查看磁盤分區的UUID:sudo blkid

/dev/sda1: UUID="a3d6a764-6c22-4c5a-b46c-08af57eecb6c" TYPE="ext4" PARTUUID="608683da-01"
/dev/sda5: UUID="2dbbd27f-cf0d-4af4-906d-5a1ab91e4000" TYPE="swap" PARTUUID="608683da-05"
/dev/sdb1: UUID="e4a6735c-bede-4baf-acd5-b5f2efb92678" TYPE="ext4" PARTLABEL="primary" PARTUUID="60873b4f-a21e-485b-9987-d8a59473a0b0"
/dev/sdc1: UUID="4d6e16bf-e399-42f0-a063-1960abc4bf7c" TYPE="ext4" PARTLABEL="primary" PARTUUID="5b94dc17-7646-4ce3-b8c2-7ec2c677b78f"

配置開機自動掛載:sudo vim /etc/fstab
因爲mount命令會在重啓服務器後失效,所以要將分區信息寫到/etc/fstab文件中讓它永久掛載:
加入:

UUID=e4a6735c-bede-4baf-acd5-b5f2efb92678 /media/sdb1     ext4    defaults        0       1

指令的具體說明:

<fs spec> <fs file> <fs vfstype> <fs mntops> <fs freq> <fs passno>
具體說明,以掛載/dev/sdb1爲例:
<fs spec>:分區定位,可以給UUID或LABEL,例如:UUID=6E9ADAC29ADA85CD或LABEL=software
<fs file>:具體掛載點的位置,例如:/data
<fs vfstype>:掛載磁盤類型,linux分區一般爲ext4,windows分區一般爲ntfs
<fs mntops>:掛載參數,一般爲defaults
<fs freq>:磁盤檢查,默認爲0
<fs passno>:磁盤檢查,默認爲0,不需要檢查

重啓系統:
修改完/etc/fstab文件後,運行sudo mount -a,命令驗證一下配置是否正確。如果配置不正確可能會導致系統無法正常啓動。然後重啓系統

重啓系統後,通過df -lh可以看出新掛載的硬盤:

Filesystem      Size  Used Avail Use% Mounted on
udev             63G     0   63G   0% /dev
tmpfs            13G   11M   13G   1% /run
/dev/sda1       228G   15G  202G   7% /
tmpfs            63G  200K   63G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs            63G     0   63G   0% /sys/fs/cgroup
/dev/sdc1       2.7T   73M  2.6T   1% /media/sdc1
/dev/sdb1       3.6T   68M  3.4T   1% /media/sdb1
tmpfs            13G   28K   13G   1% /run/user/108
tmpfs            13G     0   13G   0% /run/user/1000

參考鏈接:
https://www.cnblogs.com/EasonJim/p/7447000.html

vi命令的編輯模式下不能正常使用方向鍵和退格鍵的問題

步驟一,輸入下述命令以卸載vim-tiny:

sudo apt-get remove vim-common

步驟二,輸入下述命令以安裝vim-full:

sudo apt-get install vim

參考鏈接:https://blog.csdn.net/xiangwanpeng/article/details/54341229

添加用戶

adduser

首先用adduser命令添加一個普通用戶,命令如下:
#adduser tommy  //添加一個名爲tommy的用戶
#passwd tommy   //修改密碼
Changing password for user tommy.
New UNIX password:     //在這裏輸入新密碼
Retype new UNIX password:  //再次輸入新密碼
passwd: all authentication tokens updated successfully.

賦予root權限

修改sudo vi /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

root    ALL=(ALL)     ALL
tommy   ALL=(ALL)     ALL

無桌面聯網

打開chrome瀏覽器,進去https://gw.ict.ac.cn/srun_portal_pc.php?ac_id=1&,右鍵,進入檢查,將腳本粘貼到 “console”裏面,回車

var qData = {"action": "login", "username": "xxx", "password": "xxxxxx", "ac_id": "1", "ip":"x.x.x.x"}
$.getJSON("https://gw.ict.ac.cn/cgi-bin/srun_portal", qData, function(data) {
    if (data.error == "ok") {
        $.cookie('access_token', data.access_token)
        location.href = location.protocol + "//" + location.hostname + "/srun_portal_pc_succeed.php?ac_id=1&username=xxx&ip=x.x.x.x&access_token="+data.access_token
    }
})

將username password ip換成自己的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章