Вольный перевод :) Кстати, оригинал лежит здесь. Итак:

1.Pm-utils - инфраструктура спящего режима нового поколения

pm-utils будет новой структурой спящего режима. Обычно используется HAL для выполнения различных хаков в обход багов в драйверах и подсистемах, которые еще не знают про спящий режим.

Хотя pm-utils - структура, которая будет общей среди всех Linux-дистрибутивов в будущем, есть еще некоторые Suse-специфичные особенности и патчи, которые пока неизвестны. Я укажу варианты конфигураций, которые до сих пор относятся только к Suse.

**2.Основные функциональные возможности (или “Как это работает”) **

Концепция очень проста: основной скрипт (pm-action, вызываемый через символическую ссылку как pm-suspend или pm-hibernate) выполняет так называемые “крюки”, скрипты, расположенные в /etc/pm/hooks в алфавитном порядке, с параметрами suspend (suspend to RAM) или hibernate (suspend to disk). Как только все “крюки” сделаны, компьютер отправляется в “сон”. После того, как машина снова пробудилась, все “крюки” выполняются в обратном порядке с параметром resume (resume from RAM) или thaw (resume from disk). “Крюки” делают различные вещи, например, готовят bootloader, останавливают подсистему bluetooth или выгружают критические модули.

Обычно pm-suspend и pm-hibernate вызываются HAL’ом, который в свою очередь вызывается апплетами Рабочего Стола, такими как gnome-power-manager или kpowersave.

3.Конфигурация

Основной файл конфигурации - /etc/pm/config. Дополнительные файлы могут быть расположены в /etc/pm/config.d. Необходимо отметить, что файлы конфигурации и “крюки” должны быть исполняемыми файлами (иметь установленный бит “x”).

Переменные в /etc/pm/config

SUSPEND_MODULES=”button” # список модулей, которые должны быть выгружены до остановки

Suse-специфичные варианты:

HIBERNATE_METHOD={userspace,kernel} # выбирается метод suspend-to-disk. По- умолчанию, userspace.

S2RAM_OPTS= “” # опции, передающиеся s2ram. Смотрите также s2ram для большей информации.

4.Поиск неисправностей

Если suspend или hibernate не сработают корректно, вы вероятно сможете найти некоторую информацию в лог-файле /var/log/pm-suspend.log, например, какие “крюки” были запущены и каков был их выход.

5.Создание собственных “крюков”

Если вы хотите сделать нечто специфического в течение выполния suspend/hibernate, вы можете легко поместить вам собственный “крюк” в /etc/pm/hooks. “Крюки” в этой директории будут вызываться по очереди в алфавитном порядке в течение выполнения suspend (это причина того, что их название начинается с двух цифр, чтобы сделать порядок выполнения более явным) и в обратном порядке в течение выполнения resume.

Я показываю для демонстрации довольно бесполезный “крюк”, который просто поместит некоторую информацию в ваш лог-файл:

    #!/bin/sh
    case $1 in
        hibernate)
            echo “Hey guy, we are going to suspend to disk!”
            ;;

    suspend)
        echo “Oh, this time we’re doing a suspend to RAM. Cool!”
    ;;

    thaw)
        echo “Oh, suspend to disk is over, we are resuming…”
    ;;

    resume)
        echo “Hey, the suspend to RAM seems to be over…”
    ;;

    *)
        echo “somebody is calling me totally wrong.”
    ;;

    esac

Поместите это в /etc/pm/hooks/66dummy, сделайте chmod +x /etc/pm/hooks/66dummy и оно будет изрыгать некоторые ссобщения в течение работы suspend/resume.

Внимание: Все “крюки” запускаются от пользователя root. Это означает, что вы должны быть осторожны, создавая временные файлы, проверьте, чтобы переменные PATH были установлены корректно и т.д., чтобы избежать проблем с безопасностью.

6.Различные tips & tricks

Вызов suspend вручную

Если вы хотите вызвать suspend вручную для отладки, без использования HAL или других структур, вызывайте pm-suspend или pm-hibernate от имени пользователя root.

Внимание: Это полезно для отладки. И было бы хорошо, если бы вы знал, что делаете, используя это.

Использования suspend-to-RAM на машинах, не входящих в whitelist s2ram

Если вы хотите вызвать suspend-to-RAM, вам необходимо добавить -f к переменной S2RAM_OPTS в /etc/pm/config. Вы также должны поместить все другие варианты, которые вам необходимы, в эту переменную. Например:

    S2RAM_OPTS=”-f -a 3″

Это может быть хорошей идеей, чтобы сообщить о вашей машине, как о прописанной в S2RAM-Page, так чтобы вам не пришлось этого делать в дальнейшем.

Отключение “крюка”

Если вам не нравится, как работает “крюк”, или он бесполезен, или даже вреден, мы бы оценили bugreport от вас по этому поводу. Вы можете однако просто отключить “крюк”, удалив бит “x” из файла при помощи

    chmod -x /etc/pm/hooks/the_hook