[work*] 最全面解析 Ubuntu 16.04 安裝nvidia驅動
想在Lab的臺機上跑機器學習程式碼, 可以nvidia-smi, but一直報
AssertionError:
Found no NVIDIA driver on your system. Please check that you
have an NVIDIA GPU and installed a driver from
http://www.nvidia.com/Download/index.aspx
這個錯誤, 很是詭異, 於是打算重灌驅動, 按照這個來做十分給力
解析 Ubuntu 16.04 安裝nvidia驅動 各種錯誤
0.環境
作業系統:ubuntu 16.04LTS
顯示卡:nvidia Geforce 970
1.安裝方式說明
1.1ppa源安裝
不建議通過這種方式安裝,因為你無法配置具體選項且成功後需要經常手動更新驅動。當然鑑於其他方式安裝對新手較為繁瑣且 問題很多,如果你僅僅是需要臨時搭建或者運氣非常好,那麼可以嘗試。確實非常簡單。
sudo add-apt-repository ppa:xorg-edgers/ppa #新增ppa源
sudo add-apt-repository ppa:graphics-drivers/ppa #新增ppa源
sudo apt-get update #更新apt-get
然後進入:系統設定->軟體和更新->附件驅動,選擇更新的顯示卡驅動。
1.2手動run檔案安裝
推薦這種方式,我們可以根據具體機器配置具體選項。避免出現黑屏,迴圈登入等問題。
2.run檔案安裝詳解
2.1手動下載驅動
官方顯示卡驅動NVIDIA-Linux-x86_64-390.48.run
選擇合適的引數後可以下載
2.2解除安裝舊驅動
解除安裝可能存在的舊版本 nvidia 驅動(對沒有安裝過 nvidia 驅動的主機,這步可以省略,但推薦執行,無害),如果你安裝失敗了也需要執行這一步。
sudo apt-get remove --purge nvidia*
#若安裝失敗也是這樣解除安裝以及
./NVIDIA-Linux-x86_64-390.48.run --uninstall #確保解除安裝乾淨。
2.3安裝可能需要的依賴(可選,臉紅可以跳過)
這裡是為了確保萬無一失
#其實很多你的環境已經安裝了,所以一般並沒有多少時間。
sudo apt-get update
sudo apt-get install dkms build-essential linux-headers-generic
sudo apt-get install gcc-multilib xorg-dev
sudo apt-get install freeglut3-dev libx11-dev libxmu-dev install libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
2.4禁用noueau驅動
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
#在檔案 blacklist-nouveau.conf 中加入如下內容:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
#儲存 :wq
#禁用nouveau 核心模組
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
reboot #重啟
lsmod |grep nouveau #無顯示則成功 當然驅動沒了你的桌面解析度會比較大。
2.5進入blos關閉secure boot (華碩還有fast boot)
否則無法安裝成功。
2.6進入tty關閉圖形介面
按 CTRL + ALT + F1 鍵登入,從 GUI 轉至終端tty1(全黑色)。為了重建視訊輸出,必須先將其暫停。
sudo service lightdm stop
如果命令列沒有效果,Ubuntu 新版本使用 systemctl 替換 lightdm。
2.7 執行.run檔案選擇合適選項。
cd 下載目錄
chmod a+x NVIDIA-Linux-x86_64-384.90.run #新增許可權
sudo ./NVIDIA-Linux-x86_64-384.90.run --dkms --no-opengl-files
- –no-opengl-files:表示只安裝驅動檔案,不安裝OpenGL檔案。這個引數不可省略,否則會導致登陸介面死迴圈,英語一般稱為”login loop”或者”stuck in login”。
當然臉紅的情況下並不會。
必選引數解釋:因為NVIDIA的驅動預設會安裝OpenGL,而Ubuntu的核心本身也有OpenGL、且與GUI顯示息息相關,一旦NVIDIA的驅動覆寫了OpenGL,在GUI需要動態連結OpenGL庫的時候就引起問題。 - –no-x-check:表示安裝驅動時不檢查X服務,非必需,我們已經禁用圖形介面。
- –no-nouveau-check:表示安裝驅動時不檢查nouveau,非必需,我們已經禁用驅動。
- -Z, –disable-nouveau:禁用nouveau。此引數非必需,因為之前已經手動禁用了nouveau。
- -A:檢視更多高階選項。
- -dkms(預設開啟)在 kernel 自行更新時將驅動程式安裝至模組中,從而阻止驅動程式重新安裝。在 kernel 更新期間,dkms 觸發驅動程式重編譯至新的 kernel 模組堆疊。
2.8 關於pre-script failed
執行時,你可能會收到一條 pre-install script failed 資訊。這沒什麼影響,選擇繼續安裝就行,因為預安裝指令碼包含命令 exit 1,其目標是確保你真的想安裝驅動程式。
具體解釋見我的部落格。https://blog.csdn.net/u014561933/article/details/79958130
當然你前面的工作沒做對,會提示其他報錯資訊。日誌在/var/log/nvidia-install.log
2.9 安裝過程中的選項
- dkms 安裝最好 選yes
- 32位相容 安裝最好 選yes
- x-org 最好別安,選no,有的電腦可能導致登入介面黑屏
2.10安裝完成後驗證
nvidia-smi #若列出GPU的資訊列表,表示驅動安裝成功
若失敗則跳回第一步解除安裝後重新開始。
2.11 重新進入桌面
sudo service lightdm start #沒自動跳的話 crtl+alt+f7
nvidia-settings #若彈出設定對話方塊,亦表示驅動安裝成功