ACPI

ssdВ "актив" Windows XP можно занести неплохое использование "sleep state" (режимов энергосбережения). "Рабочий" режим S0 сменяется состоянием остановки S1 ("Stopgrant"), затем - S3 ("Suspend to RAM"), S4 ("Suspend to Disk") и, наконец, S5 - "Soft Off". Ядро Linux переход в S3/S4 обеспечивает, только начиная от версии 2.6. Возможно, потому, что в Linux и без ACPI существует SWSUSP (SoftWare SUSPend). Можно сожалеть о том, что проект SWSUSP так и не стал частью канонического ядра, но факт, что поддержка "sleep state" - не была для пользователей Linux самой заманчивой частью спецификации ACPI.

Спецификация эта, однако, регламентацией энергосбережения не ограничивается: много в ней интересного и помимо этого. И ядро Linux (старше, скажем, 2.4.28 или 2.6.12) кое-чем из этого уже умеет пользоваться. Попытаюсь проиллюстрировать на примере ноутбука HP Invent (он же - Compaq nx6110). Compaq, вообще-то, известен "неординарностью" своих компьютеров: не зря им приходится к имеющимся в Windows XP шести hal*.dll добавлять в поставке ещё один - свой. Так что "откажись" Linux работать с реализацией ACPI на данном ноутбуке - удивляться бы не пришлось. Однако... не отказался!

Разумеется, ядро должно быть собрано с поддержкой ACPI. Сделать это самому или воспользоваться ядром, предлагаемым мейнтейнером дистрибутива - дело вкуса. Что же касается выбора между 2.4 и 2.6, то если цель - использование "sleep state", альтернативы нет: 2.6, в остальном... В моём случае, например, ядро 2.4 продемонстрировало более адекватные результаты. Вывод: пробовать нужно.

Дальше - совсем просто, как и должно быть с подсистемами ядра. Переходим в каталог /proc/acpi и внимательно изучаем его содержимое. Просматриваем файлы наиболее привычным вам образом: cat, less или в mc. При наличии интереса, можно воспользоваться утилитами acpi или acpitool . Безусловно, "раз на раз" не приходится и может статься, что в вашей системе содержимое данного каталога окажется безынтересным, но в моём случае я узнал:
* тип, ёмкость, пределы предупреждения и отказа батареи;......................

Согласитесь: неплохо для начала.

Вентиляторы, как выяснилось, управлялись аппаратно, а вот о том, что ядро "знает" подключен ли AC-adaptor, на сколько времени хватит заряда батареи, не пора ли дать процессору "остыть" и никогда мне об этом не сообщает - я узнал с возмущением. Явно нужен "демон", который следил бы за /proc/acpi и сообщал, если требуется вмешательство Homo Sapiens. И такой "демон", конечно, существует. С непритязательным именем acpid. Всего-то несколько десятков килобайт в исходных текстах. Берём. Собираем. Инсталлируем. Запускаем. В разных дистрибутивах по-разному - нет смысла детализировать.

В результате имеем каталог /etc/acpi, а в нём всего-то два файла: acpi_handler.sh и events/default. Из документации следует, что events/default и определяет работу "демона". Смотрим, что "внутри" и находим всего четыре строки (не считая комментариев). Строки:
event=button power.*
action=/sbin/init 0

Определяют, очевидно, требование, в соответствии с которым при нажатии кнопки "power" система переходит на runlevel 0 (другими словами - выключается). Это - понятно.

Сайт создан в системе uCoz