Мобильные юниксы vol.1 Anton Karpov Xakep, номер #066, стр. 066-104-3 ACPI в Linux 2.6 В 2.6 полноценная поддержка ACPI доступна, что называется, "из коробки" - никаких патчей не надо. Помимо того же swsusp2, в ядро включены swsusp и pmdisk, которым соответствуют конфигурационные опции CONFIG_SOFTWARE_SUSPEND и CONFIG_PM_DISK соответственно. Обе технологии позволяют в качестве кроватки для пингвина указывать раздел диска (опять-таки опцией в lilo.conf). Для swsusp это будет resume=/dev/hda4, для pmdisk - pmdisk=/dev/hda4. Кроме этого, swsusp умеет снимать питание с процессора и винчестера, оставляя под напряжением лишь оперативку, то, что называется suspend to RAM. Активировать режим swsusp можно все той же командой "echo 4 > /proc/acpi/sleep" (для суспенда на винт) либо "echo 3 > /proc/acpi/sleep" (для суспенда в ОЗУ). Однако в 2.6 рекомендуется использовать новую псевдофайловую систему /sys, таким образом, засыпание на винт будет выглядеть как "echo -n disk > /sys/power/state" (это и есть pmdisk), а в оперативку - "echo -n mem > /sys/power/state". Что же делать, если что-то пошло не так, а ядро упорно хочет resume'ться с раздела диска и от этого сходит с ума, впадая в панику? Swsusp можно отключить, передав ядру параметр загрузки noresume, swsusp2 – noresume2, а pmdisk – pmdisk=off. Помимо различных тонкостей настройки, а также того факта, что одна технология у тебя может работать, а другая – нет, отмечу, что только swsusp2 умеет засыпать в существующий раздел подкачки, работать с ядрами с включенной опцией HIGHMEM (т.е. на машинах с объемом оперативки от 1 до 4 Гб), и только он умеет работать с многопроцессорными машинами (как ни странно, только с ядрами 2.4). Вот и выбирай, что тебе по вкусу. ACPI Actions и Linux Не надо забывать, что ACPI – это не только засыпание и пробуждение, но и управление питанием всей машины. Подсистема реагирует на события (вроде закрывания дисплея ноутбука), сообщая изменения операционке. Стало быть, нужно ПО, воспринимающее эти изменения и реагирующее соответствующим образом. Для этого в Linux есть демон acpid. Скорее всего, для твоего любимого дистрибутива есть подходящий пакет, так что установку рассматривать не будем. А вот настройку – непременно. По умолчанию каталог настроек демона - /etc/acpi. В нем содержатся управляющие скрипты и папка events, в которой располагаются конфиги событий. Каждый конфиг состоит из двух строчек - событие (event) и сопоставляемое ему действие (action). Каждое отслеживаемое событие представляется своей подсистемой. Состояния всех возможных подсистем содержатся в соответствующих файлах в каталоге /proc/acpi псевдофайловой системы proc. Действие – это обычный shell-скрипт, запускаемый при изменении состояния подсистемы, или просто команда. Поясню на примере с уже упомянутым дисплеем ноутбука. Создадим файл /etc/acpi/events/lidbtn следующего содержания: |