在ubuntu中遇到了很詭異的問題
當從Suspend
模式喚醒Ubuntu 16.04時,所有窗口,上下文菜單和類似的地方都會顯示不正常,出現以下圖形故障:
目前,已知會影響到以下運行專有驅動程序的NVIDIA卡:
- NVIDIA GeForce 610M, driver version 375.39, 340.102
- NVIDIA GT 630M, driver version 375.39
- NVIDIA GTX 650, driver version 375.39
- NVIDIA GT 740M, driver version 378.13
- NVIDIA GTX 745, unknown driver version
- NVIDIA GTX 850M, driver version 375.39, 378.13
- NVIDIA GT 940M, driver version 375.39
- NVIDIA GTX 950M, unknown driver version
- NVIDIA GTX 960M, driver version 378.13
- NVIDIA GTX 970, driver version 375.39
- NVIDIA GTX 970M, driver version 375.39
- NVIDIA GTX 980 TI, unknown driver version
- NVIDIA GTX 1060, driver version 375.26, 375.39, 378.09
- NVIDIA GTX 1070, driver version 378.09
以上列表來自其他用戶的報告,可能還不止這些卡會受到影響。
此外,這個問題已經在一個幹淨的安裝上複現,其中唯一的更改是軟件更新和最新的NVIDIA驅動程序的安裝。
這到底是怎麽回事,如何解決?
臨時的解決方法
注意:這是一個臨時的解決方法,Nvidia可能已經發布了一個修補的驅動程序,可以跳過這一段查找後文中的其他答案與實際修複情況。
我在Ubuntu 16.04.2 LTS使用GPU:Nvidia GTX 970,nvidia 375.39驅動程序時,遇到了同樣的問題
自從最近升級nvidia驅動程序以來,就觀察到了這一點,我懷疑這是驅動錯誤。
後來找到了這個答案on the nvidia board。這是驅動程序中確認的錯誤,nvidia顯然已經在處理它了。在此期間,可以重新啟動compiz
compiz --replace
消除上述錯誤的顯示。
The bug is in the Ubuntu bug tracking system包括一個解決方法的腳本,在恢複後自動重啟compiz。
最佳的解決方法
這是Nvidia驅動的一個BUG。
Nvidia已經能夠重現這個問題,他們正在修複這個問題,這個修複將被包含在下一個驅動程序的版本中。 截止目前2017/10/02, 該修複現已發布了,請繼續閱讀本文後續的介紹。
有關詳細信息,請參閱this thread on the Nvidia developer forums。這個bug也是reported on Launchpad。
Nvidia終於發布了官方修複補丁!
-
該修複程序見試用版驅動程序381.09 changelog的相關屏幕截圖:
1.從官方Repo(推薦)安裝修補的[release]驅動程序:
Nvidia在05/04/2017推出了更新到他們的發行版驅動程序,其中包含您正在尋找的BUG修複。已更新的版本驅動程序版本號為375.66
由於版本375.66
在官方的存儲庫中,因此加載修補的驅動程序非常簡單。
-
如果您目前使用的是
375.39
,那麽隻需要簡單執行:sudo apt-get update sudo apt-get upgrade
-
如果您使用舊版驅動程序,則應執行以下操作:
sudo apt-get update
隨後在其他驅動程序中切換到新的驅動程序版本:
-
如果您當前正在使用手動安裝的驅動程序,則應卸載它,重新啟動,然後執行上述步驟。
重新啟動後,您應該會發現您的Nvidia驅動程序已更新為375.66
。
2.從非官方PPA安裝打補丁的驅動程序:
-
用
CTRL
+ALT
+T
啟動終端 -
運行以下命令:
sudo -i add-apt-repository ppa:graphics-drivers/ppa apt-get update apt-get install nvidia-381
-
重新啟動你的電腦,然後問題應該就已經解決了!計算機重新啟動後,打開Nvidia X服務器設置。你會看到新的驅動程序版本:
3.手動安裝打補丁的驅動程序(不推薦):
從*.run
文件安裝Nvidia驅動程序通常不是一個好辦法。這種做法有可能破壞其他程序。因此,如上所述,最好從PPA安裝它們。不過,如果您樂於冒險並希望手動安裝,那麽下麵所說過程在Ubuntu 16.04和GTX650上是有效的。
在安裝修補驅動程序之前,您必須卸載當前的專有驅動程序並切換到Nouveau驅動程序:
確保切換後重新啟動。如果您無法安裝您當前的專有驅動,則新的驅動將會與舊的有衝突,這回讓事情變得很糟糕!
-
從Nvidia下載修補的驅動程序文件。 這是下載鏈接。
-
將文件保存到您的下載文件夾
-
從您的GUI會話中注銷(您應該在登錄屏幕上結束,然後再繼續)
-
用
CTRL
+ALT
+F1
打開tty1
-
使用正常驗證登錄
-
運行以下命令:
sudo service lightdm stop cd Downloads chmod +x NVIDIA-Linux-x86_64-381.09.run sudo ./NVIDIA-Linux-x86_64-381.09.run
-
接受許可協議:
-
它會抱怨distribution-provided pre-installer腳本失敗。不管這些,仍然繼續:
-
當詢問您是否要使用dkms注冊內核模塊時,請選擇
Yes
: -
當詢問您是否要安裝32位兼容性庫時,請選擇
Yes
: -
構建內核模塊需要一段時間,需要耐心等待!
-
在詢問您是否要運行
nvidia-xconfig
時選擇Yes
: -
選擇
Ok
退出安裝程序 -
差不多了!現在隻需運行這些命令:
rm ~/.Xauthority rm ~/.config/dconf/unity sudo shutdown -r now
-
計算機重新啟動後,打開Nvidia X服務器設置。應該就可以看到新的驅動程序版本了: