Hibernate и suspend с помощью pm-utils
Введение
Недавно в 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.
Август 29, 2007 at 10:26 дп
Просто ради информации :) Может, пригодится кому… Переводил статейку с wiki openSUSE, как раз на эту тему. Лежит тут: http://hrafn.ru/?page_id=21
Август 30, 2007 at 11:05 дп
о, большущее спасибо за такой быстрый и развернутый ответ
Сентябрь 3, 2007 at 10:47 пп
[...] linux in cheer’s eyes linux and IT « Hibernate и suspend с помощью pm-utils [...]
Сентябрь 3, 2007 at 11:50 пп
[...] эффективно управлять питанием на linux системе. 1. Hibernate и suspend с помощью pm-utils 2. Управление событиями ACPI 3. Управление частотой [...]