Ubuntu14.04+Cuda7.5驱动BUG的解决方案

来源:互联网 发布:淘宝天下传媒 诈骗 编辑:程序博客网 时间:2024/05/22 07:41

前面写过一篇修复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                   303102  5 i915,drm_kms_helper,nvidiaalx                    32452  0 libahci                32716  1 ahcimdio                   13807  1 alxvideo                  19476  1 i915

video一栏只有核心显卡驱动i915,而独显驱动nvidia并没有被加载。

经过本人测试,CUDA程序可以正常运行。但是显卡失去了自动变频的功能,耗电量和发热量都有所增加。于是本人尝试再尝试取消禁用nvidia显卡禁用。按上面的方法将blacklist.conf中的blacklist nvidia去掉。同时手动运行命令加载驱动:

sudo modprobe nvidia-352

用nvidia-settings查看可以发现显卡又可以自动变频了,并且温度和发热量恢复正常。重启系统后也正常使用。

4.总结

Nvidia显卡驱动与Ubuntu系统的配合并不是很稳定,建议一旦安装好就不要更新内核;双显卡机器不要切换显卡,否则就容易引发各种问题。

5.更新

最近发现,升级内核到3.16.0-70可以解决N卡驱动导致Null Pointer Kernel Bug的问题。
打开终端,运行

sudo apt-get install 3.16.0-70-generic

注意去掉 blacklist.conf 文件中 blacklist nvidia这一行。重启电脑即可正常使用Nvidia驱动。

0 0