休眠后屏幕损坏—还有另一种刷新X11显示的方法吗?


23

从休眠状态恢复时,屏幕经常损坏。我怀疑图形内存没有被保存。Suspend-to-ram可以正常工作。

由于所有字母都一致损坏,因此字体缓存也似乎已损坏。效果似乎是针对特定大小的字体。例如,如果点击了我的终端窗口,则更改字体和/或字体大小将解决该问题,除非该大小的字体已损坏。

如果该字体在其他地方(其他应用程序,窗口管理器等)使用,那么问题也在那里。有时会命中用于窗口标题的字体,然后所有窗口标题都显示损坏的相同字母。

注销并再次登录可以解决此问题,但我不想这样做。我一直在注销然后进入休眠状态,但是这样做比较费力,并且消除了休眠状态的大部分好处。

还有另一种刷新X11显示的方法吗?Ctrl+ Alt+ F1...没有任何解决它。它切换终端,但不重绘任何内容:它仅显示旧的损坏的屏幕。

我正在使用Debian 6。

在这种情况下,窗口标题不好: 窗口标题字体混乱

终端内容不好,但标题还可以: 文本被系统扭曲,但仅某些字体受到影响


1
您使用什么图形芯片/驱动程序?发行版?
Caleb

1
Debian 6,宏cer aspire 5338集成显卡。我曾在Ubuntu中使用过它,并暂停使用ram的效果非常好。我怀疑我们只是没有将图形内存保存到磁盘。
ctrl-alt-delor

1
由于该型号似乎已经随Intel,Nvidia和ATI视频卡选项一起提供,因此并不能完全回答这个问题。“集成”是指您拥有Intel GMA视频卡吗?
Caleb

从您所说的内容还不清楚,您是否尝试过休眠之前执行ctrl-alt-F1 (即从文本模式休眠,并在恢复后仅切换回X11)?您可能需要从命令行中找到要休眠的命令。
Random832 2011年

1
我已经更新为debian7,现在可以使用了。@terdon添加到问题的屏幕快照,看起来和我的差不多。
ctrl-alt-delor

Answers:


12

我的笔记本电脑也有类似情况。从暂停状态唤醒时,屏幕通常会保持黑色。我的解决方案是用于xrandr重置显示器。您需要找到xrandr设置布局的命令并运行它。例如,在我的系统上,我有两个屏幕,然后根据需要进行设置:

xrandr --output DP-3 --auto --output VGA-0 --auto --right-of DP-3 --primary

如果只有一个屏幕,则可以尝试将其关闭然后再打开:

xrandr --output VGA-1 --off; xrandr --output VGA-1 --auto;

您可以通过不运行xrandr任何参数来查看屏幕的名称。在我现在使用的系统上(一个VGA屏幕),我得到:

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
VGA-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080      60.0*+
   1680x1050      60.0  
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
DVI-I-1 disconnected (normal left inverted right x axis y axis)

找到正确的命令后,为其分配一个快捷方式,以便即使屏幕空白时也可以运行它。


我不知道这怎么工作。您得到黑屏,没有界面...但是您运行命令?怎么样?进行alt + Fn将不起作用,因为即使所有X命令都抛出错误“无法打开显示”。尝试该export DISPLAY=:0技巧只会导致其他错误。
塞林2015年

@Cerin我的系统上,我已经分配的快捷方式的命令,所以我可以通过按下Alt + F.盲目地运行它
terdon

谢谢,这为我做到了(自从我开始使用citrix接收器以来,屏幕出现了一些小故障;当其他所有操作都失败时,它得到了解决)。请注意,如果您在同一台计算机上从其他VT运行命令,则可能会收到Configure crtc 0 failed错误消息。只需在命令前添加一小段睡眠并切换VT,以便在运行xrandr时将其激活。@Cerin可能是您的问题。sleep 5; xrandr --output VGA-1 --off; xrandr --output VGA-1 --auto
Thomas Guyot-Sionnest

事实证明,这并不是我真正的问题。切换VT时,似乎Windows管理器或gnome Shell赶上了事件,并在一段时间内保持无响应;这些操作花费的时间足以赶上并刷新屏幕。OTOH一旦遇到焦点问题,即我什么都无法单击,键盘快捷键被忽略了,则确实起到了帮助-先关闭然后再打开显示器,即可解决该问题。
Thomas Guyot-Sionnest'1

上面的命令(一次显示)用鼠标指针离开低分辨率(黑色)屏幕是否正常?如果是这样,我该如何解决?
Cool Charac '17

7

您是否尝试过该xrefresh命令?


是的,没有用,
ctrl-alt-delor

下次,我将尝试...在大多数情况下,FWIW会干扰显示,在文本和GUI VT之间切换或使用切换用户选项(锁定一个VT并解锁另一个VT)都可以解决我的问题...但是在极少数情况下,似乎只有xrandr可以解决它。我通常使用来切换VT,CTRL-ALT-F<n>因此不必一直解锁。
Thomas Guyot-Sionnest

6

GNOME 3中AltF2renter刷新GUI。AltF2启动“ 运行命令”提示,r命令强制刷新。


听起来您也可以r从控制台运行。我没有r安装。–你说应该跑什么?即哪个包?该r程序的全名是什么?
罗伯特·西默

1
@RobertSiemer不是程序,而是内部GNOME重启DE的东西。我猜它gnome --replace在后台运行,但我不知道。
terdon

3
rrestart(相同)。控制台等效为gnome-shell --replace
don_crissti

我使用metacity运行gnome-panel。
罗伯特·西默

@richard,这个工作吗?
Severyn Kozak

5

我也遇到了这个问题(Debian Squeeze和Wheezy)。

以我的经验,它主要在大多数内存已满并且系统正在使用交换内存时发生。

作为部分解决方法:如果更改默认字体,则损坏会消失。(虽然不是很好,但是当腐败再次出现时,我必须再次进行更改。)

(在Debian Wheezy上,这是通过gnome-tweak-tool完成的。)


4

升级到内核3.19。–我使用了Ubuntu主线内核软件包,可以在这里找到:

http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/(也可在Ubuntu 14.04上可靠运行)

以下错误报告评论提到了它

https://bugs.freedesktop.org/show_bug.cgi?id=45092#c37

...并通过以下消息跟踪提交:

https://github.com/torvalds/linux/commit/656bfa3afc14e45e2d9e1624bf60d79b3beb12f2

“ ...因为我们只在gm45和i965gm上看到过。”

我有带集成显卡的Intel GM45移动芯片组。OP的Acer笔记本电脑也随该芯片组一起出售(尽管不是全部)。

(与暂停无关。)


3

如果驱动程序无法正确恢复设备,那么我相信您将找到的唯一解决方案是调试并确定问题出在哪里,以便您可以从那里决定要做什么。例如,如果视频卡没有重新初始化,我看不到如何刷新。

ACPI处理暂停/恢复和显示。例如,某些ThinkPad上发生的以下ACPI问题可能会解决您所描述的症状:

从suspend-to-ram恢复时,文本控制台显示的内容可能显示为乱码而不是实际文本。否则,机器仍会响应,并且X可以正常显示。如果所有这些都成立,那么在menu.lstlilo.conf中添加内核选项acpi_sleep = s3_bios,s3_mode可能会解决此问题。

ACPI暂停到内存的问题-ThinkWiki

如果您使用的thinkpad_acpi是上面引用的地址所在的模块,则可能仅此而已。有关此解决方案的更多信息,请参见Suspend2Ram-Powersave文档

首先,有几个内核参数可以尝试。只需将它们添加到/boot/grub/menu.lst中的 “内核”行中即可。关于这些的更多信息可以在/usr/src/linux/Documentation/power/video.txt中找到 。

从video.txt中:

在S3恢复期间,需要重新初始化硬件。对于大多数设备来说,这很容易,内核驱动程序也知道该怎么做。不幸的是,有一个例外:视频卡。这些通常由BIOS初始化,并且内核没有足够的信息来启动视频卡。(内核通常甚至不包含视频卡驱动程序-vesafb和vgacon被广泛使用)。

有关更多信息,请参见video.txt。请参阅此处的表,以查看是否acpi_sleep=<hack>为您的视频卡型号列出了已知信息。

Debian挂起和KMS Debian Wiki建议禁用KMS来解决“恢复时的视频损坏”问题。1个

计算机恢复后发现的一个非常常见的问题是视频损坏(或黑屏,或者没有LCD背光灯)。第一步是检查系统是否仍在运行,只需按Capslock按钮,然后检查Capslock LED是否在相应地改变,即可完成操作。如果系统仍在运行,则在大多数情况下,我们需要为您的视频卡添加视频怪癖。

Debian现在为大多数Intel,nVidia和ATI视频卡默认启用了内核模式设置(KMS)。但是pm-utils的视频怪癖还不支持KMS。因此,在大多数情况下,您应该首先尝试禁用KMS。特定视频卡的详细步骤可以在KernelModesetting页面上找到。

禁用KMS后,如果恢复后的视频仍然损坏,则可以尝试使用一些视频怪癖来挂起系统。阅读pm-suspend程序的联机帮助页,以获得对所有可用功能的非常详细的解释,然后从命令行尝试将其组合。如果成功找到一种适用于您系统的怪癖组合,则可以将它们添加到/ usr / lib / pm-utils / video-quirks中,以使其永久存在。同时,请帮助您针对pm-utils软件包提交一个错误,并附上有关您所做更改的补丁程序,以使大量用户受益。

从旧版本的Debian升级系统时发现的一个常见问题是,启用quirk-s3-bios会在挂起期间冻结系统。如果您的系统在挂起期间冻结,请在启用调试后仔细检查pm-suspend.log并确保未使用quirk-s3-bios。

如果您认为这与您的问题有关,则可以尝试根据建议禁用KMS。有关卡的说明,请参见KernelModesetting-Debian Wiki

调试挂起

挂起和恢复过程的日志位于文件 /var/log/pm-suspend.log中。默认情况下,它包含适度的详细信息。通过将行export PM_DEBUG = true插入文件/ usr / lib / pm-utils / pm-functions的开头, 可以启用更多调试信息。

有关更多信息,请查看Suspend-Debian Wiki中提到的有关内核测试工具的信息。这可以帮助您调试和隔离问题。

https://www.kernel.org/doc/Documentation/power/basic-pm-debugging.txt上提供了一些示例和更深入的调试信息,这些信息可以帮助您“无法暂停或恢复其设备的驱动程序”。

一些更调试想法pm-utilsPM-utils的- ArchWiki/unix//a/29090/87728

这是内核参数的完整列表,其中许多与acpi和suspend相关。

祝好运。


X显示不正常;虚拟文本终端很好
Robert Siemer

你检查了/var/log/pm-suspend.log吗?您是否启用了调试/usr/lib/pm-utils/pm-functions并在之后进行检查?
iyrin 2015年

您可以使用从终端测试异常暂停pm-suspend --quirk-s3-bios --quirk-s3-mode。请参阅中的选项部分man pm-action
iyrin

我查了一下/var/log/pm-suspend.log。没什么异常。我正在使用KMS。–如今,禁用KMS已无济于事(xorg intel驱动程序需要它);您指向的那个Wiki最近更新于2012
Robert Siemer

只是想说该dmesg | tail -50命令对于调试很有用。我实际上发现了与挂起有关的内存不足错误,我可以使用grub中的内核参数解决该问题memmap=64K$0 memory_corruption_check=0。我相信它会告诉您初始化视频卡是否出错。
iyrin

2

这似乎是一个已报告的错误,请检查下面的链接。

如果是Ubuntu,请检查此链接

如果是Debian,另外阅读此链接修复恢复部分的损坏的视频

如果问题出在文本控制台中:您是否尝试过刷新字体缓存?

fc-cache -f -v


无济于事...
罗伯·西默2015年

1
这似乎是一个已报告的错误,请检查下面的链接。如果您的发行版不是Ubuntu,则该错误可能并非特定于发行版,而是某些可能影响其他发行版的库。挖掘bug / s,看看它是否可以解决您的发行版 bugs.launchpad.net/ubuntu/+source/linux/+bug/659434
YoMismo 2015年

抱歉,我没有看到您的发行版本是Debian。检查下一个链接:wiki.debian.org/Suspend 在简历部分专门修复损坏的视频
YoMismo

我有Ubuntu 14.04。
罗伯·西默

好的,问题提示“我正在使用Debian 6”。在第一个屏幕截图之前。然后,我想您会在启动板的错误中找到答案。总之,Ubuntu是基于Debian的,因此也许Debian链接中的解决方案可以为您提供帮助。
YoMismo

0

这几乎可以肯定是因为图形驱动程序存在显示设备的错误。它到底有多大无关紧要,因为无论哪种方式,它都不是您可以解决的问题。但是,您应该提交有关设备内核驱动程序的错误(一旦您弄清了它的含义(lspci可能会有所帮助))。

不过,您可以尝试以下解决方法:退出休眠状态后,尝试按“ ctrl-alt-F4”切换到另一个虚拟终端,然后再切换回去(这可能是ctrl-alt-F1或ctrl- alt-F7或F8)。这可能足以进行屏幕刷新,从而使显示恢复。也许。


尝试了ctrl-alt-F1,但是没有用。
ctrl-alt-delor

0

Ctrl + Alt + F1 ...不起作用

好吧……然后尝试发出sudo chvt 1,然后使用Ctrl_Alt_Fn或sudo chvt N(其中N通常为7或8)切换回Xorg的vty 。万一chvt可行,您甚至可以尝试编写脚本。


对不起,我不清楚ctrl + alt + f1的工作原理。不是ctrl + alt + f1解决方案。我可以切换虚拟终端,但不能修复损坏。谢谢。
ctrl-alt-delor 2012年

0

尝试使用旋转或翻转屏幕xrandr,例如上下颠倒,然后恢复正常。这可能足以完全重绘它。


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.