2016年8月16日 星期二

在Ubuntu 16.04上用apt-get安裝Nvidia 驅動程式(Nvidia driver), 重開機後螢幕會全黑/黑屏(black screen或blank screen)或卡在登入畫面的解決辦法(不重灌系統)

(2017/2/22更新)
增加了更詳細的說明, 解決方式不變

(2016/11/5更新)
更新了抓驅動的方式, 並修正mount --all這邊的錯誤(all前面要2個減號), 重新測試一遍後放上相關圖片

---------------------------------------------------------------------------------------

http://www.allaboutlinux.eu/remove-nouveau-and-install-nvidia-driver-in-ubuntu-15-04/
我後來找到一位作者的安裝方法
看來是nouveau在作怪
所以把nouveau禁用
照他的方法, 不用改grub也可以用
正常安裝應該可以照他的步驟作
如果不想改, 也可以只設定nomodeset(修改grub, 底下會說明), 之後手動安裝

如果螢幕黑屏或是卡在登入畫面請照下面的方式安裝官方驅動, 可恢復正常, 不用重灌

注意:如果是手動安裝官方驅動, 在Ubuntu每次更新後畫面很可能會全黑或卡在登入畫面
此時可以照本文再重新安裝一次官方驅動
所以記得保留驅動程式在電腦中(我是放在家目錄下)

---------------------------------------------------------------------------------------
在Ubuntu 16.04上用apt-get或軟體更新等方式安裝Nvidia的驅動程式, 可能會在重開機後, 畫面全黑.或卡在登入畫面此時可按下鍵盤的NumLock確定是否可以亮
並按下Ctrl + Alt + F1(或F2~F6都可) 進入TTY文字模式

1.若進入TTY文字模式可以看到login的文字
可以輸入自己的登入帳號, 按Enter鍵
之後輸入登入密碼
然後, 如果已經有抓NVIDIA的官方驅動, 並放在家目錄下
可以先輸入sudo service lightdm stop 關掉X server
然後
輸入 sudo bash ./你抓的NVIDIA驅動檔名
手動安裝驅動程式
可以先用 ls 指令查檔案名稱
例如
如果抓的是367.57版的NVIDIA驅動, 輸入 ls 應該可以看到
NVIDIA-Linux-x86_64-367.57.run 這個檔案
就輸入
sudo bash ./NVIDIA-Linux-x86_64-367.57.run
即可安裝官方驅動

之後修改grub

輸入
sudo nano /etc/default/grub
在此檔案中
找到GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改成GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
按Ctrl O 存檔
按Ctrl X 離開

改完grub後輸入
sudo update-grub
以更新grub
之後開機就可以正常使用(輸入 reboot 後按Enter鍵 即可重開機)


2.如果按下Ctrl + Alt + F1(或F2~F6都可)進入TTY時螢幕還是全黑
可按下Ctrl + Alt + Del 重開機(多按幾次, 在文字模式下可如此重開)
並在重新啟動時
按下Esc鍵 , 以進入grub選單
通常會有
Ubuntu
Ubuntu進階選項
System Setup

這三個選項

選"Ubuntu的進階選項"按Enter, 然後選有recovery mode的選項(選版本比較新的)
https://wiki.ubuntu.com/RecoveryMode
(連結為Ubuntu 的recovery mode英文說明)
進入 Recovery Mode 手動安裝nvidia官方驅動


進入Recovery Mode後
會出現一個選單, 有root選項



root選它按Enter後
輸入
mount -o remount,rw /
然後是
mount --all
讓根目錄可以讀寫, 並掛載一些必要資料夾
就可手動安裝驅動程式.
(注意 mount --all的輸入, all前面是兩個減號, 沒輸入正確時驅動會無法打開tmp資料夾)

先到驅動程式在的目錄
如果是放在家目錄下
輸入
cd /home/使用者名稱

例如
cd /home/i7
(我的使用者名稱是i7)

先用 ls 指令查檔案名稱
例如
如果抓的是367.57版的NVIDIA驅動, 輸入 ls 應該可以看到
NVIDIA-Linux-x86_64-367.57.run 這個檔案
就輸入
sudo bash ./NVIDIA-Linux-x86_64-367.57.run
即可安裝官方驅動

之後修改grub
輸入
sudo nano /etc/default/grub
在此檔案中
找到GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改成GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
按Ctrl O 存檔
按Ctrl X 離開

改完grub後輸入
sudo update-grub
以更新grub
之後開機就可以正常使用(輸入 reboot 後按Enter鍵 即可重開機)


3.抓官方驅動程式:
若沒有事先抓NVIDIA官方驅動程式
可從別的電腦到NVIDIA網站抓下來驅動程式檔案(.run檔)
用livecd開機, 將驅動程式檔案存入 家目錄
或用livecd開機上網抓

livecd開機時可按Esc, 進入grub選單, 在Try Ubuntu without installing這個選項按E鍵修改
(此修改只影響這次開機, 不會寫入任何東西到磁碟中)
在Linux 開頭這行的quiet splash後空一格加上nomodeset
然後按F10 開機
即可進入桌面上網抓驅動

抓驅動流程如下:

 livecd 開機

按E鍵修改

在quiet splash 後加上nomodeset 然後按F10進入桌面

進入桌面後
到 Nvidia 網站抓驅動 http://www.nvidia.com/object/unix.html
(或在Google 搜尋 Nvidia  driver Linux)
 如果是使用64位元的電腦
可以抓Linux x86_64/AMD64/EM64T下的檔案
我是抓 Latest Long Lived Branch version:367.57
Latest Long Lived Branch version
Latest Long Lived Branch version
可以點連結進去查看是否清單上有自己的顯示卡型號(我的顯示卡是Geforce GT 630)

 下載後
將檔案放在Ubuntu的根目錄或家目錄下
不要有中文的名稱, 在Recovery Mode下看不到中文



抓下來的檔案預設會存在Downloads中


 接著進入系統碟中, 如果只裝有一個硬碟, 應該就在Computer的上方(我的是231GB的SSD)
 進入home資料夾

我的系統使用者名稱是i7
所以選i7資料夾進入

這裡是我們要放驅動程式檔案的地方
按右鍵選 Open in Terminal 進入終端機



可以看到系統碟下/home/i7的路徑(藍色), 等一下要複製它


然後回到Downloads(抓下來的驅動在這), 按右鍵選 Open in Terminal 進入終端機
 
 用sudo mv 指令搬移驅動程式到系統碟下
在這裡我要把驅動程式放在/home/i7中 (把剛剛找到的系統碟路徑複製, 貼到指令後方)

指令如圖所示
sudo mv 你抓的驅動程式檔名 目的地路徑
每個人的目的地路徑會不同, 請仿照剛剛的步驟, 複製正確路徑

複製完畢
可在/home/i7 看到驅動程式 (我的使用者名稱是i7)

重開機

在開機畫面時按下Esc鍵
進入grub選單
然後選"Ubuntu進階選項"
進入Recovery Mode
選root

輸入
mount -o remount,rw /
按Enter鍵

再輸入
mount --all
按Enter鍵
(注意 mount --all的輸入, all前面是兩個減號, 沒輸入正確時驅動會無法打開tmp資料夾)

接著進入驅動程式檔案所在的資料夾(用cd指令)
例如輸入
cd /home/i7
(我把抓到的驅動安裝檔放在家目錄下, 我的使用者名稱是i7)

然後輸入ls
可看該資料夾的檔案有哪些
如果抓的是367.57版的NVIDIA驅動, 應該可以看到
NVIDIA-Linux-x86_64-367.57.run 這個檔案

然後輸入下列指令

bash ./你抓的NVIDIA驅動程式檔名.run
進行手動安裝

例如

bash ./NVIDIA-Linux-x86_64-367.57.run

 開始安裝



安裝時的提問都選Yes(與PTT討論作法不同), 讓它裝, 會花一點時間暫時沒反應
(PTT的討論 https://www.ptt.cc/bbs/Linux/M.1467572201.A.36F.html )
裝好後離開安裝程式 後重開機
(輸入reboot 可重開機)
(或輸入Exit 後按Enter 回到選單, 之後按Ctrl + Alt + Del 重開機)

接著
在開機畫面出現時按下Esc鍵, 進入grub選單
會出現
Ubuntu
Ubuntu進階選項
System Setup

選Ubuntu, 按下E鍵, 進行開機設定修改

修改時
在Linux開頭的一段文字(很長 末段有quiet splash的文字), 在這行最後空一格加上nomodeset (可以按下 End鍵直接到這行最後的地方, 再空格輸入nomodeset)
之後按下F10鍵, 開機進入Ubuntu.

這樣應該可以看到Ubuntu桌面畫面, 此方法可裝最新的驅動(367.57版)且可正常運作

接著
進入Ubuntu桌面後, 打開終端機
然後看是要禁用nouveau (我文章開頭的連結)
或是修改grub


修改grub:
輸入
sudo nano /etc/default/grub
在此檔案中
找到GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改成GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
按Ctrl O 存檔
按Ctrl X 離開



或用vi修改
sudo vi /etc/default/grub
進入vi修改grub內容
進入vi時記得按下Insert鍵 就可以編輯內容
找到GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改成GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
修改完後
按Esc鍵, 之後輸入:wq
就是冒號,w, 然後是q
再按Enter鍵, 就可以存檔離開vi

若要放棄修改
按Esc鍵, 之後輸入:q!
就可以直接離開vi

改完grub後輸入
sudo update-grub
以更新grub
之後開機就可以正常使用


如果來不及按下Esc直接進入Ubuntu而沒有設定nomodeset, 通常會卡在登入畫面
可以重開機(點右上角圖案選重開機), 再照上述步驟進行
或是按下Ctrl+Alt+F2進入TTY文字模式
輸入 sudo vi /etc/default/grub
照上面的流程修改grub
然後sudo update-grub
更新grub, 之後重開機.即可

若在Ubuntu 16.04上安裝Steam或進行Steam遊戲時遇到問題, 很有可能是顯示卡驅動有問題, 所以我嘗試安裝nvidia的官方驅動程式, 不過之前裝最新的驅動程式開機後會畫面全黑.
所以根據網路的說明進行試驗.
目前可以正常使用Steam以及進行XCOM等遊戲


如果是一開始系統正常時就打算在Ubuntu 16.04手動安裝Nvidia官方驅動程式
可參考我文章開頭放的這個連結
http://www.allaboutlinux.eu/remove-nouveau-and-install-nvidia-driver-in-ubuntu-15-04/ 

Nvidia官方驅動安裝好之後
可以在桌面環境下點Ubuntu圖示, 搜尋Nvidia
可找到 Nvidia X server settings
點它可以查詢目前安裝的Nvidia驅動程式版本以及顯示卡的一些資訊
如溫度, 時脈等




以上是我的安裝經驗

11 則留言:

  1. 那個 文章裡面提到
    "livecd開機時可按Esc, 進入grub選單, 在Ubuntu這個選項按E鍵修改
    (此修改只影響這次開機, 不會寫入任何東西到磁碟中)
    在Linux 開頭這行的quiet splash後空一格加上nomodeset
    然後按F10 開機"

    但是我按下F10 依然沒有進去桌面 一片暗紅
    請問是哪裡出問題

    回覆刪除
    回覆
    1. http://imgur.com/XHv2Y0L
      圖片有點模糊
      紅框處為nomodeset的指令
      請問我有哪邊弄錯嗎xd

      刪除
    2. 應該沒錯 不過nomodeset 我之前試的結果如果沒裝官方驅動, nomodeset只能用livecd開機時修改才有效. 如果是系統內的要先裝好官方驅動程式.

      刪除
  2. 另外一問 那如果說是從別台電腦下載nvidia驅動程式到usb
    我路徑要打什麼才能讀取到那個usb??

    回覆刪除
    回覆
    1. 我是用livecd進入電腦抓的, 如果livecd可以進入桌面, 就可以直接讀取隨身碟.至於Recovery Mode下要怎麼找usb路徑, 我也不清楚...

      刪除
  3. 我後來重灌 依照那個國外網站步驟 重新開機
    按下ctrl+alt+F1 結果什麼事都沒發生 只有一片黑= =
    我又回到這裡了.....
    那時我已下載好nvidia驅動程式 那就繼續依照樓主的文章
    結果......

    http://imgur.com/QsjFOQE

    出現 Unable to create temporary file in /tmp
    求解............

    回覆刪除
  4. http://imgur.com/QsjFOQE

    出現
    unable to create temporary file in /tmp

    求解

    回覆刪除
    回覆
    1. 抱歉, 我今天才看到你的留言, 我文章中mount --all少打了一個減號
      所以會跑出這個問題
      請進入Recovery Mode, 選root後
      執行
      mount -o remount,rw /
      以及
      mount --all
      之後再安裝驅動程式
      all前面是兩個減號
      我有把文章更新加上圖片, 你試試看

      刪除
    2. 是說ubuntu 安裝nvidia顯示驅動 都要這樣玩嗎?

      刪除
    3. 我是用這個方式安裝nvidia官方驅動.網路上還有別的方法.不過我自己試了有問題.所以沒有照他們的方式裝.原來ubuntu有自己的nvidia開源驅動.好像是nouveau.
      如果你不是很在意, ubuntu原來的應該就可以用了.我是為了玩Steam的遊戲才安裝官方驅動. 不知道您的問題解決了嗎?

      刪除