SDB:Отладка ACPI спящего режима

(перенаправлено с «ACPI Suspend debugging»)
Перейти к: навигация, поиск
Эта статья о "жесткой" отладки ACPI-suspend (засыпание с сохранением состояния на диске (suspend to dick) или в памяти (suspend to RAM)).

Отладка ACPI спящего режима

Начиная с SUSE 9.3 режим засыпания с сохранением на диск должен работать на большинстве машин. Могут возникнуть проблемы с SATA- и SCSI-дисками и закрытыми X-драйверами, преимущественно с ATI fglrx.

Эти советы помогут в организации suspend режима, но надеемся, они Вам не потребуются.

Спящий режим с сохранением в памяти немного сложнее в настройке. Хотя он работает на многих ноутбуках (и на некоторых десктопах), оно редко работает прямо из коробки. Проблемы возникают в том, что, в большинстве случаев, графические карты некорректно выполняют возврат из режима засыпания, это приводит к тому, что экран так и остается отключенным. Множество советов Вы можете найти в статье SDB:Suspend_to_RAM. SDB:Suspend_to_RAM представляет из себя инструкцию, которая содержит самые известные способы вернуть "свечение монитора обратно" после засыпания. Она упакована в пакет suspend. Дополнительная документации пакета может быть найдена в документации к ядру (пакет kernel-source) в файле /usr/src/linux/Documentation/power/video.txt.

Для первой попытки настроить «suspend to RAM» (если он не работает из коробки)удобно начать с минимальной системы и двигаться шаг за шагом к полнофункциональной системе. Это и описано здесь. Изменим параметр vga=... в строке GRUB (ядро принимает только первый по счету параметр) для этого сместим этот параметр в файле /boot/grub/menu.lst за ключевое слово "showopts", так удобнее будет видеть и редактировать его при каждой загрузке. Соответствующий блок файла настроек должен выглядеть примерно так:

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE LINUX 9.3
    kernel (hd0,4)/vmlinuz root=/dev/hda7 selinux=0 splash=silent sysrq=yes resume=/dev/hda6 showopts vga=0x342 
    initrd (hd0,4)/initrd

Загрузитесь с минимальными настройками добавив в строку GRUB'а kernel "init=/bin/bash". После этого система загрузится напрямую в командный интерпретатор без запуска стартовых скриптов. Попробуйте активировать suspend режим вручную.

# mount /proc and /sys:
mount /proc
mount /sys
# for suspend to disk, activate swap here. Not necessary for suspend to RAM:
# swapon -a
# invoke suspend to RAM ("disk" for suspend to disk):
echo mem > /sys/power/state

Машина должна перейти в спящий режим (обычно мерцает светодиод питания). Разбудите (зависит от компьютера) нажав кнопку питания, закрыв/открыв крышку или нажав на Fn клавишу (светодиод питания должен загореться). Лампочка жесткого диска возможно немного помигает, но должна потухнуть. Если дисплей включился и мы видим тоже что и было на экране до засыпания - значит эксперимент завершен. Все работает. Если экран остался темным - необходимо продолжить.

Во-первых проверьте, возможно просто не включился монитор или же машина повисла. Введите вслепую:

find /

Если лампочка жесткого диска светится, значит система все-таки работает, просто надо немного повозиться с видеокартой. Команду find нельзя прервать в однопользовательском режиме (init=/bin/bash), поэтому Вы должны перезагрузить или выключить компьютер.

Если система не зависта дополнительные подсказки вы найдете в статье SDB:Suspend_to_RAM.


Для инициализации графической карты установите параметр ядра "acpi_sleep=s3_bios", чаще всего этого достаточно. Этот параметр использует функции BIOS для инициализации карты в момент пробуждения. Это возможно не сработает, но очень часто этого хватает.

Если вы видите только "Linu" в левом верхнем углу, значит карта готова к работе, но в текстовом режиме. Для исправления этого используйте параметр "acpi_sleep=s3_mode". Если раньше вы уже использовали s3_bios, то результирующая строка для установки параметра должна быть такой "acpi_sleep=s3_bios,s3_mode". Если ничего не помогло и компьютер по-прежнему не включается, тогда воспользуйтесь vbetool. Эта статья пока не полная, но в любом случае ее можно использовать как «первую помощь».