在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服务器设置。应该就可以看到新的驱动程序版本了: