Elam的caffe筆記之配置篇(二):CentOS6.5編譯安裝NVIDIA驅動


配置要求:

系統:centos6.5
目標:基於CUDA8.0+Opencv3.1+Cudnnv5.1+python3.6接口的caffe框架python


編譯安裝過程

顯卡型號:NVS 510c++

1.顯卡驅動安裝程序下載

在root下輸入centos

lspci |grep VGA

能夠看本身的顯卡型號
肯定本身顯卡型號以後登錄NVIDIA官網下載驅動
http://www.nvidia.cn/Download...
根據本身的顯卡型號下載對應的驅動程序
圖片描述bash

2.配置編譯環境

安裝NVIDIA驅動的編譯環境須要:框架

gcc kernel-devel kernel-headers

這一步看似簡單,實際上會出現不少問題。
首先是gcc,若是你沒有在手動編譯安裝更高版本的gcc以後把系統自帶gcc卸載了,那麼沒事,可是若是你卸載了系統自帶的gcc那麼請翻到最後查看解決方法。
第二你若是使用ui

kernel-devel -version

或者centos7

kernel-headers -version

是不能查詢到你是否安裝過這兩個依賴包的。若是你直接利用yum install去安裝kernel-devel,kernel-headers兩個依賴包,那麼你可能會下載到比你內核高一個版本的kernel-devel同時很大機率下載不到kernel-headers。
正確的作法是分別在終端輸入:spa

yum info kernel-devel

code

yum info kernel-headers

若是在Installed Packages 中已經有你當前內核版本的對應的包,那麼就不須要在下載這兩個依賴項了,不然須要從新安裝系統。blog

3.禁用centos6.5自帶的nouveau驅動

nouveau驅動會和NVIDIA驅動衝突,若是nouveau驅動仍是啓用狀態的話,在安裝NVIDIA驅動的過程當中會自動報錯。
在終端輸入:

vi /etc/modprobe.d/blacklist.conf

blacklist viafb下一行加上blacklist nouveau
關於nouveau.modeset=0這句命令,有一種說法是直接加在blacklist nouveau下行,還有一種說法是加入到啓動項裏:gedit /boot/grub/grub.conf加到quiet以後,親測第二種可能會使系統啓動時崩潰,而第一種方法在centos7版本中配置時使用過,是否必要不明,本人直接無視了這句話,仍是可以正常啓動。

4.備份和重建系統鏡像Centos

安裝NVIDIA驅動特有的步驟

備份系統鏡像

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

建立新的系統鏡像

dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

其中$(uname -r)指的是你本身系統對應的內核版本,可在root下輸入uname -r試試。

5.改變系統運行級別

NVIDIA驅動不能在X桌面啓動時安裝,所以要進入文本模式下啓動安裝程序才能順利安裝。

vi /etc/inittab

把最後一行id:5改成id:3,這一行表明的是系統啓動時默認的運行級別,5表明的是圖形界面,3表明的是文本模式。保存退出

5.重啓

reboot

6.安裝

在終端root下

chmod +x NVIDIA-Linux-x86_64-384.69.run
sh ./NVIDIA-Linux-x86_64-384.69.run

開始安裝,根據本身實際狀況選擇一些額外項是否安裝
安裝完成後從新修改系統的運行級別把id:3改成id:5,保存退出
再重啓,安裝完畢

遇到的問題:

在安裝NVIDIA驅動程序以前,我先手動編譯安裝了4.8.2的gcc並把系統自帶的gcc4.4.7版本卸載了。結果在安裝驅動的過程當中出現了沒有安裝development tool cc,if you are sure you have installed gcc , please check cc is in your PATH大概是這段話。當時很納悶我明明裝了新版本的gcc啊,找來找去找不到緣由。索性先用yum 先把原來4.4.7版本的gcc裝回去了,從新運行sh ./NVIDIA-Linux-x86_64-384.69.run,安裝成功!
可是,這並非最最正確的作法。在安裝成功NVIDIA驅動程序後,我又想了這個問題,必須解決這個問題,否則往後確定還會出現找不到gcc的問題。
首先 我先利用全局搜索找出全部名爲gcc的文件夾

find / -name gcc

顯示以下

/usr/local/libexec/gcc
/usr/local/bin/gcc
/usr/local/lib/gcc
/usr/libexec/gcc
/usr/bin/gcc
/usr/lib/gcc

還有幾個home文件夾下的不是問題癥結所在不予顯示
有兩個bin下的gcc說明至少有兩個版本的gcc
輸入

/usr/bin/gcc --version
gcc4.4.7 (GCC) 4.4.7 20120313……………………………………
/usr/local/bin/gcc –version
gcc (GCC) 4.8.2………………………………………………..

在NVIDIA驅動安裝過程當中調用的是/usr/bin/gcc
/usr/bin/gcc是系統自帶的gcc所在的文件夾
所以之後相似狀況仍然會會調用這個文件夾下的gcc
因此,我想了一個辦法
首先將這個文件夾的下的gcc版本移動走,而後在創建4.8.2版本的gcc和這個文件夾的軟連接,這樣下次調用的時候就會直接去找4.8.2版本的gcc了

mv /usr/bin/gcc /usr/bin/gcc-4.4.7
ln -s /usr/local/bin/gcc /usr/bin/gcc

另外,g++, cc, c++這幾個命令也要改

mv /usr/bin/g++ /usr/bin/g++-4.4.7
ln -s /usr/local/bin/g++ /usr/bin/g++

mv /usr/bin/cc /usr/bin/cc-4.4.7
ln -s /usr/local/bin/gcc /usr/bin/cc
(爲何用gcc指向cc能夠參考博客[cc gcc g++三者區別][2])
mv /usr/bin/c++ /usr/bin/c++-4.4.7
ln -s /usr/local/bin/c++ /usr/bin/c++

相應的若是你在更新gcc版本後把之前的gcc卸載了只要創建這幾項的軟連接足矣,並不須要再使用mv命令

相關文章
相關標籤/搜索