Повреждение экрана после спящего режима. Есть ли другой способ обновить дисплей X11?


23

При восстановлении из спящего режима экран часто повреждается. Я подозреваю, что графическая память не сохраняется. Suspend-to-ram отлично работает в противном случае.

Также похоже, что кэш шрифтов поврежден, так как все буквы повреждены последовательно. Эффект, кажется, нацелен на шрифт определенного размера. Например, если ударить окно моего терминала, изменение шрифта и / или размера шрифта исправит это, если только этот шрифт с таким размером уже не поврежден.

Если шрифт используется в другом месте (другие приложения, диспетчер окон и т. Д.), То проблема также существует. Иногда используется шрифт, используемый для заголовков окон, тогда все заголовки окон показывают одинаковые поврежденные буквы.

Выход из системы и повторный вход исправляют это , но я не хочу этого делать. Я выходил из системы, а затем находился в спящем режиме, но это требует больше усилий и устраняет большинство преимуществ гибернации.

Есть ли другой способ обновить дисплей X11? Ctrl+ Alt+ F1... не исправить ни. Он переключает терминал, но ничего не перерисовывает: он просто показывает старый поврежденный экран.

Я использую Debian 6.

В этом случае заголовок окна плохой: шрифт заголовка окна

Содержимое терминала плохое, но с названием (все еще) все в порядке: текст искажается систематически, но затрагиваются только некоторые шрифты


1
Какой графический чип / драйвер вы используете? Distro?
Калеб

1
Debian 6, интегрированная графика Acer Aspire 5338. У меня было это работает в Ubuntu, и приостановить на RAM работает отлично. Я подозреваю, что мы просто не сохраняем графическую память на диск.
Ctrl-Alt-Delor

1
Это не совсем отвечает на этот вопрос, поскольку эта модель поставляется с опциями видеокарт Intel, Nvidia и ATI. Под «интегрированным» вы подразумеваете, что у вас есть видеокарта Intel GMA?
Калеб

Из того, что вы сказали, непонятно - пытались ли вы выполнить ctrl-alt-F1 перед переходом в спящий режим (т. Е. Переходить в спящий режим из текстового режима и переключаться только на X11 после возобновления)? вам может понадобиться найти команду для спящего режима из командной строки.
Random832

1
Я обновился до debian7, теперь он работает. @terdon скриншоты, добавленные к вопросу, похожи на то, что у меня было.
Ctrl-Alt-Delor

Ответы:


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трюка просто приводит к другой ошибке.
Церин

@Cerin в моей системе, я назначил ярлык для этой команды, чтобы я мог запустить его вслепую, нажав Alt + F.
terdon

Спасибо, это сделало это для меня (получая причудливые глюки экрана, так как я начал использовать приемник Citrix; это исправило, когда все остальное потерпело неудачу). Обратите внимание, что если вы запустите команду из другого VT на том же компьютере, вы можете получить Configure crtc 0 failedошибку; просто добавьте небольшой сон перед командой и переключите VT, чтобы он был активен при запуске xrandr. @ Керин, это, вероятно, твоя проблема. sleep 5; xrandr --output VGA-1 --off; xrandr --output VGA-1 --auto
Томас Гайот-Сионнест

Оказывается, это не было моей проблемой; при переключении VT кажется, что менеджер окон или оболочка gnome догоняют события и остаются без ответа в течение некоторого времени; времени, потраченного на выполнение этих действий, было достаточно, чтобы наверстать упущенное и обновить экран. OTOH это помогло однажды, когда я столкнулся с проблемой фокуса, где я не мог нажать на что-либо, и сочетания клавиш были проигнорированы - выключение и включение дисплея исправили это.
Томас Гайот-Сионнест

Нормально ли для приведенной выше команды (для одного дисплея) оставить экран с низким разрешением (черный) с указателем мыши? Если так, как я могу это исправить?
Крутые персонажи

7

Вы пробовали xrefreshкоманду?


Да, не работает,
Ctrl-Alt-Delor

Я попробую это в следующий раз ... FWIW большую часть времени я получаю сбой, влияющий на отображение, либо переключение между текстовым и графическим интерфейсом VT, либо использование опции переключения пользователя (которая блокирует один VT и разблокирует другой) решает мои проблемы ... но в редких случаях кажется, что только xrandr может это исправить. Обычно я переключаю VT, CTRL-ALT-F<n>поэтому мне не нужно все время разблокировать.
Томас Гайот-Сионнест

6

В GNOME 3 , AltF2renterобновляет GUI. AltF2запускает командную строку « Выполнить» , и rкоманда вызывает обновление.


Похоже, вы также можете запустить rс консоли. У меня нет rустановленного. - Что это должно бежать, вы говорите? Т.е. какой пакет? Какое полное название этой rпрограммы?
Роберт Симер

1
@RobertSiemer это не программа, это внутренняя вещь GNOME, которая перезапускает DE. Я предполагаю, что это работает gnome --replaceв фоновом режиме, но я не знаю.
Terdon

3
rили restart(это то же самое). Консольный эквивалент был бы gnome-shell --replace.
don_crissti

Я запускаю гном-панель с метасити.
Роберт Симер

@ Richard, это сработало?
Северин Козак

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 с интегрированной графикой. Ноутбук Acer OP был также продан с этим чипсетом (хотя не все).

(Это не имеет ничего общего с приостановкой.)


3

Если драйвер не может возобновить работу устройства должным образом, то, я полагаю, единственное решение, которое вы найдете, это отладка и выявление проблемы, чтобы вы могли решить, что делать дальше. Например, я не вижу, как можно обновить, если видеокарта не была повторно инициализирована.

ACPI обрабатывает приостановку / возобновление и отображение. Например, следующая проблема ACPI, возникающая на некоторых ThinkPad, может устранить симптомы, которые вы описываете:

При возобновлении из режима ожидания приостановки текстовая консоль может отображать мусор вместо реального текста. В остальном машина по-прежнему отзывчива, и X показывает нормально. Если все это верно, то добавление опции ядра acpi_sleep = s3_bios, s3_mode в вашем menu.lst или lilo.conf может решить проблему.

Проблемы с ACPI приостановить в оперативной памяти - ThinkWiki

Если вы используете thinkpad_acpiмодуль, к которому относится приведенная выше цитата, это может быть все, что вам нужно. Для получения дополнительной информации об этом решении, см. Suspend2Ram - Документация Powersave

Во-первых, есть несколько параметров ядра, которые можно опробовать. Просто добавьте их в свою строку "kernel" в /boot/grub/menu.lst . Дополнительную информацию об этом можно найти в /usr/src/linux/Documentation/power/video.txt .

Из видео.txt:

Во время возобновления S3, аппаратное обеспечение должно быть повторно инициализировано. Для большинства устройств это легко, и драйвер ядра знает, как это сделать. К сожалению, есть одно исключение: видеокарта. Обычно они инициализируются BIOS, и ядру не хватает информации для загрузки видеокарты. (Ядро обычно даже не содержит драйвера видеокарты - широко используются vesafb и vgacon).

Больше на video.txt Обратитесь к таблице здесь, чтобы увидеть, есть ли в acpi_sleep=<hack>списке известные модели вашей видеокарты.

Debian Suspend и KMS Вики Debian предлагает отключить KMS из-за проблемы «поврежденное видео при возобновлении». 1

Очень распространенная проблема, обнаруженная после возобновления работы компьютера, - это поврежденное видео (или черный экран, или отсутствие подсветки ЖКД). Первым шагом является проверка того, работает ли система по-прежнему, что можно сделать простым нажатием кнопки Capslock и проверить, изменяется ли светодиод Capslock соответствующим образом. Если система все еще работает, в большинстве случаев нам нужно добавить причуду для вашей видеокарты.

В Debian теперь включена настройка режима ядра (KMS) по умолчанию для большинства видеокарт Intel, nVidia и ATI. Но особенность видео pm-utils пока не поддерживает KMS. Поэтому в большинстве случаев вам следует сначала отключить KMS. Подробные шаги для вашей конкретной видеокарты можно найти на странице KernelModesetting.

После отключения KMS, если видео после возобновления все еще повреждено, вы можете попытаться приостановить работу системы, используя некоторые причуды видео. Прочитайте man-страницу программы 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. По умолчанию он содержит умеренно подробную информацию. Более подробная информация может быть включена для отладки, вставив линию экспорт PM_DEBUG = True в начало файла / USR / Lib / PM-Utils / PM-функции .

Для получения дополнительной информации ознакомьтесь с информацией о средствах тестирования ядра, упомянутой в Suspend - Debian Wiki . Это может помочь вам отладить и изолировать проблему.

Некоторые примеры и более подробную информацию об отладке, которая может помочь вам «драйверам, которые не могут приостановить или возобновить работу своих устройств», можно найти по адресу https://www.kernel.org/doc/Documentation/power/basic-pm-debugging.txt.

Еще несколько идей по отладке pm-utilsв pm-utils - ArchWiki и /unix//a/29090/87728

Вот полный список параметров ядра, многие из которых имеют отношение к acpi и suspend.

Удачи.


X дисплей не в порядке; Виртуальные текстовые терминалы в порядке
Роберт Симер

Вы проверяли /var/log/pm-suspend.log? Вы включили отладку /usr/lib/pm-utils/pm-functionsи проверили ее после этого?
Айрин

Вы можете проверить приостановку с причудами из терминала, используя pm-suspend --quirk-s3-bios --quirk-s3-mode. Смотрите раздел опций в man pm-action.
Айрин

Я проверил /var/log/pm-suspend.log. Ничего необычного Я использую KMS. - Отключение KMS в настоящее время не вариант (это необходимо для драйвера xorg intel); та вики, на которую вы указали, последний раз обновлялась в 2012 году.
Роберт Симер

Просто хочу сказать, что dmesg | tail -50команда может быть полезна для отладки. На самом деле я обнаружил повреждение памяти, связанное с приостановкой, которую мне удалось разрешить с помощью параметров ядра в grub memmap=64K$0 memory_corruption_check=0. Я полагаю, он сообщит вам, если произошла ошибка при инициализации видеокарты.
Айрин

2

Кажется, это ошибка, о которой сообщают, проверьте ссылку, которая следует.

В случае Ubuntu проверьте эту ссылку

В случае Debian прочитайте эту другую ссылку, особенно Исправление поврежденного видео в части резюме

В случае, если проблема в текстовой консоли: вы пытались обновить кэш шрифтов?

fc-cache -f -v


Не помогает ...
Роберт Симер

1
Кажется, это ошибка, о которой сообщают, проверьте ссылку, которая следует. Если ваш дистрибутив не Ubuntu, ошибка может относиться не только к дистрибутиву, но к некоторым библиотекам, которые могут повлиять на другие дистрибутивы. Покопайтесь в баге / с и посмотрите, решено ли это для вашего дистрибутива ... bugs.launchpad.net/ubuntu/+source/linux/+bug/659434
YoMismo

Извините, я не видел, чтобы ваш дистрибутив был 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выполнить команду, затем переключитесь обратно на vty Xorg с помощью Ctrl_Alt_Fn или sudo chvt N(где N обычно 7 или 8). В случае, если chvtэто сработает, вы можете даже попробовать написать сценарий.


извини мне было не понятно ctrl + alt + f1 работает. Это решение ctrl + alt + f1 этого не делает. Я могу переключать виртуальные терминалы, но это не исправляет коррупцию. Спасибо.
Ctrl-Alt-Delor

0

Попробуйте повернуть или перевернуть экран xrandr, например, вверх ногами, а затем вернуться в нормальное состояние. Этого может быть достаточно, чтобы полностью перерисовать.


-1

Попробуй Crtlalt-тогда Crtlalt+. Это меняет разрешение экрана вперед и назад.


ничего такого. Может быть, ключи не связаны.
Ctrl-Alt-Delor
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.