Hibernate и suspend с помощью pm-utils

By Igor

Введение

Недавно в ArchLinux произошла замена пакета powersave, предназначенного для выполнения hibernate и suspend, на пакет pm-utils. На место демона справедливо стали утилиты.

Настройка hibernate (suspend to disk, спящий режим)

Для того чтобы спящий режим работал, необходимо выделить swap раздел достаточно большой (не меньше, чем размер оперативной памяти) и настроить /boot/grub/menu.lst, указав в строчке kernel опцию resume=/ваш/swap/раздел:
# (0) Arch Linux
title Arch Linux
root (hd0,0)
kernel /boot/vmlinuz26 root=/dev/sda1 ro resume=/dev/sda10
initrd /boot/kernel26.img

Дополнительные настройки

При отработке suspend и hibernate последовательно (в алфавитном порядке, специально для этого перед каждым файлом в указанном каталоге стоят две цифры =)) запускаются так называемые хуки (hooks), которые можно найти в /usr/lib/pm-utils/sleep.d, при выполнении операции resume (это антиsuspend) и thaw (антиhibernate) хуки запускаются в обратном порядке.

Изменять файлы в /usr/lib/pm-utils не следует, если вас не устраивает конфигурация pm-utils по умолчанию, то следует вносить изменения в /etc/pm.

Если вы хотите выгружать определённые модули перед suspend или hibernate, то создайте файл в /etc/pm/config.d (например, /etc/pm/config.d/modules) и внесите в него
SUSPEND_MODULES="button uhci_hcd"
(соответственно, модули button и uhci_hcd будут выгружены).

Логи доступны в /var/log/pm-suspend.log

Отключение хуков

Если требуется отключить какой-то хук (или вы считаете его бесполезным), то можно просто создать пустой файл:
touch /etc/pm/sleep.d/45pcmcia
Делать файл исполняемым не следует.

Создание нового хука

Если вы хотите создать свой хук, то просто создайте файл скрипта и положите его в /etc/pm/hooks. Например:
#!/bin/bash
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/sleep.d/66dummy, сделать его исполняемым и во время операций вы увидите вывод.

NB: создавать хуки я не пробовал, но исправлю это в ближайшее время

Возможные проблемы

Обратите внимание, что все хуки выполняются от рута, поэтому будьте внимательны с переменными PATH.

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

4 коммент. на “Hibernate и suspend с помощью pm-utils”

  1. Hrafn:

    Просто ради информации :) Может, пригодится кому… Переводил статейку с wiki openSUSE, как раз на эту тему. Лежит тут: http://hrafn.ru/?page_id=21

  2. Van:

    о, большущее спасибо за такой быстрый и развернутый ответ

  3. Управление событиями ACPI « linux in cheer’s eyes:

    [...] linux in cheer’s eyes linux and IT « Hibernate и suspend с помощью pm-utils [...]

  4. Power management in linux « linux in cheer’s eyes:

    [...] эффективно управлять питанием на linux системе. 1. Hibernate и suspend с помощью pm-utils 2. Управление событиями ACPI 3. Управление частотой [...]

Коментарии отменены.