1. 程式人生 > >[work*] 最全面解析 Ubuntu 16.04 安裝nvidia驅動

[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 #若彈出設定對話方塊,亦表示驅動安裝成功