前面寫過一篇修複Ubuntu14.04啟動時黑屏卡死的文章。自以為知道如何解決問題,于是嘗試了用nvidia-settings切換到核心顯示卡省電。在又要用CUDA的時候切換回來,卻發現又黑屏了。而且前面的方法無法解決。經過7個小時的探索,有了新解決方案,記錄如下。
(注意:本方法僅适用于雙顯示卡筆記本。)
1. 軟體版本
我使用的軟體版本如下:
系統 | 核心版本 | Nvidia 驅動版本 | CUDA版本 |
---|---|---|---|
Ubuntu 14.04 | 3.13.0-61 | 352.63 | 7.5 |
2. 故障現象及原因
故障現象:
- 直接啟動系統時,直接黑屏,并出現了一個Null Pointer的Kernel Bug,系統卡死在進入登陸界面前。
- 用Recovery Mode啟動系統時,也會看到顯示卡驅動加載出現Bug,然後有”Vga Codecs Changed”的提示,并卡上40秒左右(可以按Ctrl+C跳過),最終可以看見登陸界面。但是一旦登陸仍然會黑屏卡死。
回顧一下:筆記本啟動時黑屏卡死一定是顯示卡驅動問題(Nvidia驅動經常出現這種問題)。對于Kernel Bug,除了換硬體,一般隻能換核心版本或者驅動來嘗試了。
3. 解決方案
本人嘗試了更換核心版本(3.13.0-85, 3.13.0-19…)和驅動版本(nvidia-340),并且按照上次的方法反複重裝Nvidia驅動,均無法解決問題。因為本人的目的是為了用CUDA,無奈之下想到了屏蔽Nvidia驅動。
具體方法:
1. 用Recovery Mode啟動系統
2. 在登陸界面按下 Ctrl + Alt + F1進入指令行登陸
3. 禁用Nvidia驅動。執行如下指令:
sudo vi /etc/modprobe.d/blacklist.conf
按下i,并在尾部添加如下内容
blacklist nvidia
按下Esc,在控制欄輸入:wq,按下回車。儲存修改。之後重新開機電腦,就可以進入系統了。
進入系統後輸入lsmod指令,可以看到如下内容:
...
drm i915,drm_kms_helper,nvidia
alx
libahci ahci
mdio alx
video i915
video一欄隻有核心顯示卡驅動i915,而獨顯驅動nvidia并沒有被加載。
經過本人測試,CUDA程式可以正常運作。但是顯示卡失去了自動變頻的功能,耗電量和發熱量都有所增加。于是本人嘗試再嘗試取消禁用nvidia顯示卡禁用。按上面的方法将blacklist.conf中的blacklist nvidia去掉。同時手動運作指令加載驅動:
sudo modprobe nvidia-
用nvidia-settings檢視可以發現顯示卡又可以自動變頻了,并且溫度和發熱量恢複正常。重新開機系統後也正常使用。
4.總結
Nvidia顯示卡驅動與Ubuntu系統的配合并不是很穩定,建議一旦安裝好就不要更新核心;雙顯示卡機器不要切換顯示卡,否則就容易引發各種問題。
5.更新
最近發現,更新核心到3.16.0-70可以解決N卡驅動導緻Null Pointer Kernel Bug的問題。
打開終端,運作
注意去掉 blacklist.conf 檔案中 blacklist nvidia這一行。重新開機電腦即可正常使用Nvidia驅動。