从睡眠模式唤醒计算机后,沿着窗口边界的奇怪伪像


118

注意:Nvidia已发布官方修复程序;请参阅ByteCommander的答案我自己的答案和/或Kaz Wolfe的答案


从Suspend唤醒Ubuntu 16.04后,所有窗口,上下文菜单及类似内容周围都会出现以下图形故障:

在此处输入图片说明


目前已知这会影响以下运行专有驱动程序的NVIDIA卡:

  • NVIDIA GeForce 610M,驱动程序版本375.39,340.102
  • NVIDIA GT 630M,驱动程序版本375.39
  • NVIDIA GTX 650,驱动程序版本375.39
  • NVIDIA GT 740M,驱动程序版本378.13
  • NVIDIA GTX 745,未知驱动程序版本
  • NVIDIA GTX 850M,驱动程序版本375.39,378.13
  • NVIDIA GT 940M,驱动程序版本375.39
  • NVIDIA GTX 950M,未知驱动程序版本
  • NVIDIA GTX 960M,驱动程序版本378.13
  • NVIDIA GTX 970,驱动程序版本375.39
  • NVIDIA GTX 970M,驱动程序版本375.39
  • NVIDIA GTX 980 TI,未知驱动程序版本
  • NVIDIA GTX 1060,驱动程序版本375.26、375.39、378.09
  • NVIDIA GTX 1070,驱动程序版本378.09

上面的列表来自AU,线程和线程上其他用户的报告。

注意:这绝不是排他性清单。它可能会影响几乎所有Nvidia卡。

此外,此问题已在全新安装中复制,其中唯一的变化是软件更新和最新NVIDIA驱动程序的安装。


发生了什么事,如何解决?


您正在使用什么图形驱动程序,以及您拥有哪种图形卡型号?最近,我再次挂起并唤醒笔记本电脑后,我的940M卡和某些版本的nvidia专有驱动程序遇到了相同的问题。请编辑问题,并添加lspci -k | grep -iEA3 '3d|vga'包含所有要求信息的输出。谢谢。
Byte Commander

1
呵呵,其实我也有这个问题再次,因为nvidia-367我使用的驱动成为一个过渡包自动升级到nvidia-375,这是造成这个错误的版本之一。是时候n nvidia和编写错误报告了。
字节指挥官

2
这确实是一个混音,但尝试使用Google之类的“奇怪的事情指日可待”之类的东西。无论如何,这些问题的答案很差,而下面的解决方案却很有吸引力。
伊凡(Ivan)

1
@taylorswift-看起来至少还有41个人也有此问题:bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-375/…我想我们只需要等待Nvidia修复它即可。
Android Dev

也影响GeForce GTX 950M
conualfy

Answers:


77

注意:在Nvidia发布修补的驱动程序之前,这是一个临时解决方法。向下滚动以查找具有实际解决方案的其他答案。-Android开发人员


我在使用GPU时遇到了相同的问题:在Ubuntu 16.04.2 LTS上具有Nvidia 375.39驱动程序的Nvidia GTX 970

自从最近升级nvidia驱动程序以来,我已经观察到了这一点。因此,我怀疑这是驱动程序中的错误。

在nvidia主板上找到了答案。这是驱动程序中已确认的错误,nvidia显然已在对其进行处理。同时,您可以使用以下命令重新启动compiz

compiz --replace

摆脱文物。

该错误位于Ubuntu错误跟踪系统中,其中包括一个解决方法脚本,可在恢复后自动重启compiz。


另一个解决方案是降级到以前的驱动程序版本:askubuntu.com/a/896544/657603
安托万Dusséaux

解决方法。我不确定,但是由于我遇到了这个问题,所以我也遇到了另一个问题:笔记本电脑在设定的一小时后并不能始终正确挂起。
Skalár摇尾

从睡眠状态恢复时,它会自动登录,然后提示输入密码,以解决此问题?
Hatem Jaber

2
compiz --replace在工作空间中表现不佳。它将所有工作区的所有窗口放入第一个工作区:(
AlikElzin-kilaka

1
您必须使用此命令使终端保持打开状态。如果关闭终端,它将再次重新启动compiz。这将一直工作到下一个挂起,这不是一个真正的解决方案,我每天运行几次此命令实际上无法发挥作用。转到上述解决方案,更改驱动程序。
conualfy

58

更新2:

Nvidia现在还将其nvidia-375驱动程序更新为版本375.66可从所有当前受支持版本的标准Ubuntu存储库中获得该驱动程序。

这意味着从现在开始,除了像往常一样进行常规系统更新之外,您不再需要执行任何特殊操作graphics-drivers如果您不需要PPA 的驱动程序包,则不需要它们。

这是16.04主仓库中有关此错误的软件包更改日志摘录:

$ apt changelog nvidia-375=375.66-0ubuntu0.16.04.1

  [...]
    - Fixed a regression that caused corruption in certain
      applications, such as window border shadows in Unity, after
      resuming from suspend.
  [...]

更新:

Nvidia终于解决了这个问题,并发布了新的工作驱动程序版本: nvidia-381

此答案中描述的解决方案也已更新,现在建议升级到此固定版本,而不是在错误之前降级到最新版本。但是,它仍然是相同的过程,只是您切换了软件包名称。


问题原因:

某些适用于Ubuntu的专有Nvidia图形驱动程序包(即nvidia-375nvidia-378)存在漏洞,并会在问题的屏幕快照中显示的窗口边框周围产生白色假象。每次您暂停并再次从中唤醒时,都会重复发生这种情况。

直到大约几天前nvidia-367,Xenial存储库中的程序包运行良好且可靠,但是现在他们对其进行了更新并将其转换为过渡程序包,该程序包会自动安装错误nvidia-375版本。

解决方案(从Nvidia发布错误修正后更新):

确保您确实有Nvidia显卡,这会引起问题,而不是来自其他品牌的显卡同时发生类似问题。为非Nvidia显卡安装Nvidia驱动程序将无济于事。

您可以通过检查以下命令的输出来验证这一点:

lspci -k | grep -iEA3 '3d|vga'

我现在的解决方案是从降级nvidia-375nvidia-378nvidia-370,这似乎很好地工作至今。
由于Nvidia nvidia-381修复了该错误,因此发布了新的升级驱动程序版本,我们可以(并且应该)安装该版本而不是降级。

该软件包在标准存储库中不可用,但是您可以通过运行以下命令从PPA轻松获取它并用它替换当前的驱动程序:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt purge nvidia*

sudo apt install nvidia-370

sudo apt install nvidia-381

完成该过程之后,重新启动计算机并测试是否仍然存在任何问题。对我来说,他们走了。祝好运。


1
对于一般用户,我宁愿在这里快速进行非驱动程序更改而不要降级驱动程序。鉴于修复被释放(可能不是从现在远),它实际上只是短暂的不适感。但是,如果您将驱动程序降级,则必须记住要恢复apt到自动再次收到进一步升级的状态。您还必须继续积极检查要发布的新的正确固定版本,而不是仅仅等待自动获得它-容易出问题且不方便。
Jason C

1
@JasonC不会。这nvidia-370将很可能也nvidia-367已经变成一个过渡包,因此该更新将自动安装驱动程序版本nvidia /图形驱动程序团队认为是合适的后续产品。370是不受此错误影响的最新(且可能仅)当前受支持的驱动程序,那么为什么不使用它呢?与升级之前引入此错误的367相比,它仍然是升级。此外,您似乎认为,我们没有保留任何软件包或覆盖任何适当的配置。
字节指挥官

1
@ByteCommander我将在两种情况下删除我的注释。1)只要你有100%的信心,它变成一个过渡包,我会相信你(我不是在我的发言100%的信心); 或者,如果您不是100%自信,则在答案中添加提及风险的内容; 2)如果您提及它成为过渡性软件包,将如何影响将来的更新,以及执行一次操作修复程序已发布,可以解决。
Jason C

1
@JasonC无需删除您的评论。由于明显的原因,我不能保证graphics-driversPPA 的维护者将来会如何处理他们的软件包,我只能根据他们过去的所作所为做出假设。只要支持370,即使他们修复了375和378,也无需采取任何行动。我的强烈猜测是,一旦nvidia淘汰了370(就像他们最近对367所做的那样),PPA维护人员将把它改掉。到过渡包中,这意味着更新的版本将不再包含任何代码,但会向较新的驱动程序添加依赖性。
字节指挥官

2
@Matsmath我不知道。只有时间证明一切。也许它永远不会被添加到该驱动程序包之前发布的“较旧” Ubuntu版本的存储库中。我认为在实际发生之前不可能给出准确的答案。
字节指挥官

36

Nvidia驱动程序中的错误。

Nvidia能够重现该问题,并且他们正在研究修复程序,该修复程序将包含在其下一个驱动程序版本中。(此修复程序现已发布,请参阅以下部分)。

有关更多信息,请参阅Nvidia开发人员论坛上的该线程。此错误也已在Launchpad上报告

感谢@Stefan发现这些信息方面的出色技巧!


Nvidia终于发布了官方修复程序!

  • 该修复程序来自beta驱动程序381.09来自changelog的相关屏幕截图: 在此处输入图片说明

  • 该驱动程序当前不在任何存储库中

  • 在上述更改之前,您将需要手动安装新的驱动程序更新: 381.09驱动程序现在位于非官方存储库中。您可以从非官方的PPA安装修补的驱动程序,也可以手动安装它。

  • 更新-立即在官方回购中修复:

    荣誉对@ ubfan1报告这个!有关详细信息,请参见以下部分


1.从官方存储库中安装修补的[release]驱动程序(推荐):

Nvidia在2017年5月4日对他们的发行驱动程序进行了更新,其中包括您所寻找的错误修复。已为更新的发行版驱动程序提供了版本375.66

由于它375.66位于官方存储库中,因此加载修补的驱动程序非常简单。

  • 如果您当前使用的是越野车375.39版本,那么所需要做的只是一个简单的操作:

    sudo apt-get update
    sudo apt-get upgrade
    

  • 如果您使用的是旧版驱动程序,则应执行以下操作:

    sudo apt-get update
    

    随后在“其他驱动程序”中切换到新的驱动程序版本:

    在此处输入图片说明


  • 如果当前正在使用手动安装的驱动程序,则应将其卸载,重新启动,然后执行上述步骤。

重新启动后,您应该发现Nvidia驱动程序已更新为375.66


2.如果不需要较新的驱动程序来与GPU兼容:*

*请注意,本节已被第1节取代

如果您的图形卡已经足够旧,可以被驱动程序的v340支持,则无需从非官方的PPA安装较新的版本。但是对于拥有更新的显卡(例如GTX 9系列或10系列)的人,您将需要更新的驱动程序。

为方便起见,这是驱动程序340版支持的卡的完整列表:

GeForce 800M Series (Notebooks):
GeForce GTX 880M, GeForce GTX 870M, GeForce GTX 860M, GeForce GTX 850M, GeForce 845M, GeForce 840M, GeForce 830M, GeForce 825M, GeForce 820M, GeForce 810M

GeForce 700 Series:
GeForce GTX TITAN Z, GeForce GTX TITAN Black, GeForce GTX TITAN, GeForce GTX 780 Ti, GeForce GTX 780, GeForce GTX 770, GeForce GTX 760, GeForce GTX 760 Ti (OEM), GeForce GTX 750 Ti, GeForce GTX 750, GeForce GTX 745, GeForce GT 740, GeForce GT 730, GeForce GT 720, GeForce GT 710, GeForce GT 705

GeForce 700M Series (Notebooks):
GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GT 755M, GeForce GT 750M, GeForce GT 745M, GeForce GT 740M, GeForce GT 735M, GeForce GT 730M, GeForce GT 720M, GeForce GT 710M, GeForce 720M, GeForce 710M, GeForce 705M

GeForce 600 Series:
GeForce GTX 690, GeForce GTX 680, GeForce GTX 670, GeForce GTX 660 Ti, GeForce GTX 660, GeForce GTX 650 Ti BOOST, GeForce GTX 650 Ti, GeForce GTX 650, GeForce GTX 645, GeForce GT 645, GeForce GT 640, GeForce GT 635, GeForce GT 630, GeForce GT 620, GeForce GT 610, GeForce 605

GeForce 600M Series (Notebooks):
GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 675M, GeForce GTX 670MX, GeForce GTX 670M, GeForce GTX 660M, GeForce GT 650M, GeForce GT 645M, GeForce GT 640M, GeForce GT 640M LE, GeForce GT 635M, GeForce GT 630M, GeForce GT 625M, GeForce GT 620M, GeForce 610M

GeForce 500 Series:
GeForce GTX 590, GeForce GTX 580, GeForce GTX 570, GeForce GTX 560 Ti, GeForce GTX 560 SE, GeForce GTX 560, GeForce GTX 555, GeForce GTX 550 Ti, GeForce GT 545, GeForce GT 530, GeForce GT 520, GeForce 510

GeForce 500M Series (Notebooks):
GeForce GTX 580M, GeForce GTX 570M, GeForce GTX 560M, GeForce GT 555M, GeForce GT 550M, GeForce GT 540M, GeForce GT 525M, GeForce GT 520M, GeForce GT 520MX

GeForce 400 Series:
GeForce GTX 480, GeForce GTX 470, GeForce GTX 465, GeForce GTX 460 SE v2, GeForce GTX 460 SE, GeForce GTX 460, GeForce GTS 450, GeForce GT 440, GeForce GT 430, GeForce GT 420, GeForce 405

GeForce 400M Series (Notebooks):
GeForce GTX 485M, GeForce GTX 480M, GeForce GTX 470M, GeForce GTX 460M, GeForce GT 445M, GeForce GT 435M, GeForce GT 425M, GeForce GT 420M, GeForce GT 415M, GeForce 410M, GeForce 405M

GeForce 300 Series:
GeForce GT 340, GeForce GT 330, GeForce GT 320, GeForce 315, GeForce 310

GeForce 300M Series (Notebooks):
GeForce GTS 360M, GeForce GTS 350M, GeForce GT 335M, GeForce GT 330M, GeForce GT 325M, GeForce GT 320M, GeForce 320M, GeForce 315M, GeForce 310M, GeForce 305M

GeForce 200 Series:
GeForce GTX 295, GeForce GTX 285, GeForce GTX 280, GeForce GTX 275, GeForce GTX 260, GeForce GTS 250, GeForce GTS 240, GeForce GT 230, GeForce GT 240, GeForce GT 220, GeForce G210, GeForce 210, GeForce 205

GeForce 200M Series (Notebooks):
GeForce GTX 285M, GeForce GTX 280M, GeForce GTX 260M, GeForce GTS 260M, GeForce GTS 250M, GeForce GT 240M, GeForce GT 230M, GeForce GT 220M, GeForce G210M, GeForce G205M

GeForce 100 Series:
GeForce GT 140, GeForce GT 130, GeForce GT 120, GeForce G100

GeForce 100M Series (Notebooks):
GeForce GTS 160M, GeForce GTS 150M, GeForce GT 130M, GeForce GT 120M, GeForce G 110M, GeForce G 105M, GeForce G 103M, GeForce G 102M

GeForce 9 Series:
GeForce 9800 GX2, GeForce 9800 GTX/GTX+, GeForce 9800 GT, GeForce 9600 GT, GeForce 9600 GSO, GeForce 9600 GSO 512, GeForce 9600 GS, GeForce 9500 GT, GeForce 9500 GS, GeForce 9400 GT, GeForce 9400, GeForce 9300 GS, GeForce 9300 GE, GeForce 9300 SE, GeForce 9300, GeForce 9200, GeForce 9100

GeForce 9M Series (Notebooks):
GeForce 9800M GTX, GeForce 9800M GTS, GeForce 9800M GT, GeForce 9800M GS, GeForce 9700M GTS, GeForce 9700M GT, GeForce 9650M GT, GeForce 9650M GS, GeForce 9600M GT, GeForce 9600M GS, GeForce 9500M GS, GeForce 9500M G, GeForce 9400M G, GeForce 9400M, GeForce 9300M GS, GeForce 9300M G, GeForce 9200M GS, GeForce 9100M G

GeForce 8 Series:
GeForce 8800 Ultra, GeForce 8800 GTX, GeForce 8800 GTS 512, GeForce 8800 GTS, GeForce 8800 GT, GeForce 8800 GS, GeForce 8600 GTS, GeForce 8600 GT, GeForce 8600 GS, GeForce 8500 GT, GeForce 8400 GS, GeForce 8400 SE, GeForce 8400, GeForce 8300 GS, GeForce 8300, GeForce 8200, GeForce 8100 /nForce 720a

GeForce 8M Series (Notebooks):
GeForce 8800M GTX, GeForce 8800M GTS, GeForce 8700M GT, GeForce 8600M GT, GeForce 8600M GS, GeForce 8400M GT, GeForce 8400M GS, GeForce 8400M G, GeForce 8200M G, GeForce 8200M

Quadro Series:
Quadro K6000, Quadro K5200, Quadro K5000, Quadro K4000, Quadro K4200, Quadro K2200, Quadro K2000, Quadro K2000D, Quadro K620, Quadro K600, Quadro K420, Quadro 6000, Quadro 5000, Quadro 4000, Quadro 2000, Quadro 2000D, Quadro 600, Quadro 410, Quadro 400

Quadro Series (Notebooks):
Quadro K5100M, Quadro K5000M, Quadro K4100M, Quadro K4000M, Quadro K3100M, Quadro K2100M, Quadro K3000M, Quadro K2000M, Quadro K1100M, Quadro K1000M, Quadro K610M, Quadro K510M, Quadro K500M, Quadro 5010M, Quadro 5000M, Quadro 4000M, Quadro 3000M, Quadro 2000M, Quadro 1000M

Quadro FX Series:
Quadro CX, Quadro FX 370, Quadro FX 370 Low Profile, Quadro FX 380, Quadro FX 380 Low Profile, Quadro FX 570, Quadro FX 580, Quadro FX 1700, Quadro FX 1800, Quadro FX 3700, Quadro FX 3800, Quadro FX 4600, Quadro FX 4700 X2, Quadro FX 4800, Quadro FX 5600, Quadro FX 5800

Quadro FX Series (Notebooks):
Quadro FX 3800M, Quadro FX 3700M, Quadro FX 3600M, Quadro FX 2800M, Quadro FX 2700M, Quadro FX 1800M, Quadro FX 1700M, Quadro FX 1600M, Quadro FX 880M, Quadro FX 770M, Quadro FX 570M, Quadro FX 380M, Quadro FX 370M, Quadro FX 360M

Quadro NVS Series:
Quadro NVS 290, Quadro NVS 295, NVS 510, NVS 315, NVS 310, NVS 300, Quadro NVS 420, Quadro NVS 450

Quadro NVS Series (Notebooks):
NVS 5400M, NVS 5200M, NVS 5100M, NVS 4200M, NVS 3100M, NVS 2100M, Quadro NVS 320M, Quadro NVS 160M, Quadro NVS 150M, Quadro NVS 140M, Quadro NVS 135M, Quadro NVS 130M

Quadro Plex Series:
Quadro Plex Model II, Quadro Plex D Series, Quadro Plex Model IV, Quadro Plex 7000

Quadro Sync Series:
Quadro Sync, Quadro G-Sync II

Quadro SDI:
Quadro SDI

GRID Series:
GRID K2, GRID K520

NVS Series:
Quadro NVS 290, Quadro NVS 295, NVS 510, NVS 315, NVS 310, NVS 300, Quadro NVS 420, Quadro NVS 450

NVS Series (Notebooks):
NVS 5400M, NVS 5200M, NVS 5100M, NVS 4200M, NVS 3100M, NVS 2100M, Quadro NVS 320M, Quadro NVS 160M, Quadro NVS 150M, Quadro NVS 140M, Quadro NVS 135M, Quadro NVS 130M

ION (Desktops):
ION

ION (Notebooks):
ION

ION LE (Desktops):
ION LE

ION LE (Notebooks):
ION LE

因此,如果340支持您的GPU,那么您只需在附加驱动程序中切换到版本340。(版本340没有此错误。)

在此处输入图片说明

切换驱动程序版本后,请确保重新启动。


3.要从非官方的PPA安装修补的β驱动程序(推荐):

  1. CTRL+ ALT+ 启动终端T

  2. 运行以下命令:

    sudo -i
    add-apt-repository ppa:graphics-drivers/ppa
    apt-get update
    apt-get install nvidia-381
    
  3. 重新启动计算机,您应该一切顺利!重新启动计算机后,打开“ Nvidia X服务器设置”。运气好的话,您会看到新的驱动程序版本:

    在此处输入图片说明


4.要手动安装修补的β驱动程序(推荐):

*.run文件安装Nvidia驱动程序通常不是一个好主意。它倾向于破坏事物。因此,如上所述,最好从PPA安装它们。不过,如果您正在冒险并且想要手动安装它们,那么这个过程对我来说适用于Ubuntu 16.04和GTX650。

在安装修补的驱动程序之前,必须卸载当前的专有驱动程序并切换到Nouveau驱动程序:

在此处输入图片说明

确保切换后重启。如果您未能卸载当前的专有驱动程序,则新驱动程序将与旧驱动程序发生冲突,并且您会遇到麻烦!

  1. 从Nvidia下载修补的驱动程序文件。这是直接链接。

  2. 将文件保存到下载文件夹

  3. 从GUI会话中注销(继续之前,您应该在登录屏幕上结束)

  4. 火起来tty1CTRL+ ALT+F1

  5. 使用您的普通凭据登录

  6. 运行以下命令:

    sudo service lightdm stop
    cd Downloads
    chmod +x NVIDIA-Linux-x86_64-381.09.run
    sudo ./NVIDIA-Linux-x86_64-381.09.run
    
  7. 接受许可协议:

    在此处输入图片说明

  8. 它将抱怨该发行版提供的预安装程序脚本失败。仍然继续:

    在此处输入图片说明

  9. 选择Yes当被问及如果你想注册DKMS的内核模块:

    在此处输入图片说明

  10. 选择Yes当被问及如果你想安装32位兼容性库:

    在此处输入图片说明

  11. 构建内核模块将需要一些时间,请耐心等待!

    在此处输入图片说明

  12. 选择Yes当被问及如果您想运行nvidia-xconfig

    在此处输入图片说明

  13. 选择Ok退出安装程序

  14. 快好了!现在只需运行以下命令:

    rm ~/.Xauthority
    rm ~/.config/dconf/unity
    sudo shutdown -r now
    
  15. 重新启动计算机后,打开“ Nvidia X服务器设置”。运气好的话,您会看到新的驱动程序版本:

    在此处输入图片说明


1
注意:如Ask Ubuntu聊天室所述,当答案的Unity桌面未显示时,使用步骤14。可能没有必要,但是如果您的Unity桌面没有出现,请将该步骤用作解决方案。
Sergiy Kolodyazhnyy

抱歉,但我必须对此解决方案争论不休。这导致我遇到一个错误,导致我无法登录并与Wine安装的Windows软件不兼容。如果您从nvidia网站安装.run文件而不是使用ubuntu中的可用资源,则这种登录问题很常见。解决此问题的一种简单得多的方法是使用版本340,该版本可在“软件和更新”菜单中的可选驱动程序之间找到。至少它为我解决了所有问题。
Giorgio Vitanza'4

@GiorgioVitanza-我知道安装.run文件并不是推荐的操作方式。但是,对于拥有10系列等较新卡的用户,不可以选择使用340驱动程序。我在自己的计算机上测试了该解决方案,效果很好。
Android Dev

@GiorgioVitanza尝试我的答案-它从PPA安装驱动程序,该驱动程序应比运行文件更具兼容性。
卡兹·沃尔夫

@GiorgioVitanza-现在驱动程序在PPA中,我已经更新了答案,以包括这两种方法。
Android Dev

7

375和378驱动程序中存在此问题...


鉴于简单地杀死compiz进程即可解决不良边界问题,因此我测试了一种在每次系统唤醒后均可在我的Ubuntu 16.04系统上运行的解决方案。

第1步:

fixbadborders在目录中创建了一个脚本/lib/systemd/system-sleep。它包含以下内容:

#!/bin/sh
## This file (or a link to it) must be in the folder /lib/systemd/system-sleep/
## Purpose: Kill compiz after system wakes up from sleep.
## This will fix bad window borders caused by Nvidia driver 375.39.
kill $(ps -C compiz -o pid=)

第2步:

允许脚本具有以下执行权限:

sudo chmod +x fixbadborders

要删除此脚本:

sudo rm /lib/systemd/system-sleep/fixbadborders

所有鸣谢归创建此脚本的Sun Bear 注释13


最好将问题标记为重复,而不是一次又一次发布相同的解决方案
Zanna

3
它的缺点是从睡眠进入桌面时我的登录屏幕从不显示:(
Hesam

6

NVIDIA发布了更新的驱动程序版本,该版本已修复此回归问题。在NVIDIA再次混乱之前,任何超过381.09的驱动程序现在将不再具有此问题。

在驱动程序到达主要存储库之前,可以从非官方的NVIDIA驱动程序PPA下载它们。这样做可以确保您无需弄乱安装程序(通常被认为是一个坏主意)或Nouveau。同样,它将允许通过以下方式来安装/卸载驱动程序,apt而不是通过NVIDIA安装程序将驱动程序留在其中的危险的半配置。此外,除非您的系统怪异,否则这不会导致任何登录循环或错误。要安装,请运行:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-381

旧的驱动程序将自动被卸载,新的驱动程序将被加载。接下来,重新启动计算机(因为NVIDIA驱动程序需要放入内核),并且一切正常。您可以通过运行以下命令来检查驱动程序是否已正确安装:

nvidia-settings --version

更新到最新的驱动程序之前,请确保还原本文中描述的所有修补程序。例如,如果您按如下所述安装了修补版本的Unity,请运行以下命令以还原为普通版本:

sudo ppa-purge ppa:kaihengfeng/lp1292830 

请注意,您将需要ppa-purge安装,可以这样进行:

sudo apt install ppa-purge

如果无法进行更新(信用卡太旧,公司政策等):

Launchpad的Kai Kai-Heng Feng非常友善,可以将Unity版本上传到自己的PPA(ppa:kaihengfeng/lp1292830),以解决此问题。为了解决此问题,只需通过运行以下命令来添加他的PPA:

sudo add-apt-repository ppa:kaihengfeng/lp1292830 
sudo apt update
sudo apt full-upgrade

完成后,重新启动系统或通过注销然后重新登录来重新启动X11。

或者,您也可以执行以下任一操作:

  • 切换到Intel卡
    如果您运行的是NVIDIA Prime,则可以切换到Intel卡,这将解决此问题。但是请注意,这将阻止系统使用全部图形功能。
  • 降级驱动程序
    根据对该错误报告的某些评论,降级至NVIDIA驱动程序367.57应该可以完全解决该问题。由于PPA中不再存在此功能,因此您需要直接从NVIDIA (64位) (32位) (32位ARM)下载它。

367在官方的Ubuntu仓库以及graphics-drivers/ppaPPA中似乎都不存在,该软件包是“的过渡性软件包” nvidia-375,因此安装它会自动获得375版本的越野车。如果您知道从何处获得的版本旧的367驱动程序,您应该将其包括在答案中
Byte Commander

@ByteCommander完成
Kaz

仅供参考,以防万一您错过了它,已修补的驱动程序现在已在官方仓库中。
Android Dev

3

Victor A.提出的解决方案很好用。但是,您应该注意,/lib/systemd/system-sleep/当计算机进入睡眠状态或唤醒时,都会执行放置在其中的脚本。鉴于我们只想要后者,因此使用建议的脚本会不必要地减慢进入睡眠过程的速度。我建议以下之一:

#!/bin/sh
if [ "$2" = "suspend" ] || [ "$2" = "hybrid-sleep" ]; then
    case "$1" in
        post) kill $(ps -C compiz -o pid=) ;;
    esac
fi

不过是警告。该脚本(以及Victor A.提出的脚本)将在唤醒时禁用密码提示屏幕,从而构成安全风险。


3

Nvidia 375.66驱动程序也已修复了该问题,该驱动程序位于常规存储库中,应通过常规更新安装。


不错的侦探!我已经更新了我的答案以反映这一新进展,并感谢您发现官方回购中现在有补丁版本:)
Android Dev

2

这不是一个完整的解决方案,但是它可能比使用compiz --replace或重新启动compiz并弄乱您的工作区更好。

当我从暂停状态恢复时,我这样做:

  • 系统->首选项->外观
  • 将主题更改为其他主题
  • 改回原始主题

这将重新加载GPU中看似损坏的纹理。如果有一种方法可以自动强制主题纹理在履历表上重新加载,那可能是一个永久性的解决方案。



1

还有另一种解决此问题的方法。(如果您有很多正在运行的进程,我不建议这样做。)

唤醒计算机后杀死Xorg。

通过以下方式找到Xorg的PID:

top

当您找到Xorg的pid时,按Ctrl + C停止“顶部”进程。

扎根并通过以下方法终止该过程:

sudo su
kill [pid]

之后,登录到您的帐户。

警告:这将关闭所有应用程序。Firefox对此没有任何问题,它只会还原所有选项卡,但我不能保证其他应用程序,因此在执行此过程之前请保存它们。


2
顺便说一句,以最标准的方式关闭,而不是仅仅取消任务(Ctrl + C),您只需点击'q'。
匿名

0

我尝试将驱动程序更改为更新的错误修复程序,但是它使我无法使用张量流进行深度学习,因此我回到了原始的错误软件。

每当我从睡眠中唤醒Ubuntu时,都会发生这种情况。我只是打开一个终端CTRL+ ALT+ T并输入

killall compiz

显示屏复位并且故障消失了。只需要几秒钟。您甚至可以根据自己的~/.bashrc喜好为其添加别名,alias kc='killall compiz'因此只需kc在要执行命令时键入即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.