4. Управление электропитанием

К сожалению, оно не очень надежно поддерживается во FreeBSD. Если вам повезло, то некоторые функции могут работать нормально; либо они не будут работать вовсе.

Чтобы сделать вещи немножко сложнее, существует два стандарта по управлению электропитанием: APM и ACPI, последний заменяет собой первый и включает больше возможностей, но также вносит больше проблем.

Некоторые лэптопы поддерживают и APM и ACPI (в разной степени), другие поддерживают только один из них, поэтому возможно вам придётся поэкспериментировать с обоими для получения надёжного управления питанием на вашем лэптопе.

Замечание: Вы не можете иметь одновременно включенными APM и ACPI, даже если если ваш лэптоп поддерживает и тот и другой стандарты.

4.1. APM

The APM (Advanced Power Management) BIOS предоставляет поддержку различных возможностей по управлению электропитанием, таких как ожидание (standby), приостановление (suspend), режим пониженного электропотребления (hibernation), замедление тактовых импульсов CPU (CPU clock) и так далее, и доступен во FreeBSD 4.X и FreeBSD 5.X.

Чтобы включить поддержку APM, вы можете скомпилировать ядро с поддержкой управления электропитанием (device apm0 во FreeBSD 4.X и device apm во FreeBSD 5.X). Во FreeBSD 5.X имеется модуль ядра для APM. Чтобы загрузить модуль ядра поддержки APM во время загрузки добавьте строчку apm_load="YES" в /boot/loader.conf.

Во FreeBSD 5.X, вам также нужно установить hint.apm.0.disabled="0" в /boot/device.hints.

Вы можете запустить APM во время загрузки посредством добавления apm_enable="YES" в файл /etc/rc.conf. Вы возможно также захотите запустить даемон apmd(8), добавив apmd_enable="YES" в /etc/rc.conf, который позаботится о различных событиях APM, посылаемых к BIOS, так чтобы вы могли иметь на вашем лэптопе приостановление/продолжение работы с помощью нажатия некой функциональной клавиши на клавиатуре или с помощью закрытия/открытия крышки.

Команды APM перечислены в справочной странице apm(8). К примеру, apm -b выдаёт статус батарей (или 255, если не поддерживается), apm -Z переводит лэптоп в режим ожидания, apm -z (или zzz) приостановит его. Для выключения и отключения машины от питания, воспользуйтесь командой shutdown -p. И снова, некоторые или все эти функции могут не работать нормально или не работать вовсе.

Вы можете обнаружить, что переключение режимов suspension/standby лэптопа работает в режиме консоли, но не работает в режиме X (то есть экран не восстанавливается); если вы используйте FreeBSD 5.X, то возможным решением может быть добавление options SC_NO_SUSPEND_VTYSWITCH в ваш конфигурационный файл ядра и перекомпилирование ядра. Другое решение - это переключение на виртуальную консоль (при помощи Ctrl+Alt+F1 или другой функциональной клавиши) и запуск apm(8). Если вы используйте apmd(8), вы можете автоматизировать это с помощью vidcontrol(1). Просто отредактируйте /etc/apmd.conf и измените его на:

apm_event SUSPENDREQ {
 exec "vidcontrol -s 1 < /dev/console";
 exec "/etc/rc.suspend";
}

apm_event USERSUSPENDREQ {
 exec "vidcontrol -s 1 < /dev/console";
 exec "sync && sync && sync";
 exec "sleep 1";
 exec "apm -z";
}

apm_event NORMRESUME, STANDBYRESUME {
 exec "/etc/rc.resume";
 exec "vidcontrol -s 9 < /dev/console";
}

4.2. ACPI

ACPI (Advanced Configuration and Power Management Interface) предлагает не только управление электропитанием, но и платформенное обнаружение оборудования (platform hardware discovery) (вытесняющее PnP и PCI BIOS). ACPI доступен только в FreeBSD 5.X и включён по умолчанию, поэтому вам не нужно ничего специально делать чтобы включить его. Вы можете контролировать поведение ACPI с помощью acpiconf(8).

К сожалению, поставщики часто поставляют лэптопы с некорректной реализацией ACPI, и поэтому наличие включённого ACPI иногда вызывает больше проблем, чем приносит пользы, вплоть до того, что вы не можете даже загрузить FreeBSD на некоторых машинах со включённым ACPI.

Если ACPI вызывает проблемы, проверьте, не выпустил ли поставщик вашего лэптопа новую версию BIOS, устраняющую некоторые ошибки. Так как реализация ACPI в FreeBSD до сих пор быстро развивающийся код, вы также можете обновить вашу систему, поэтому есть шансы, что ваши проблемы исправлены.

Если вы хотите отключить ACPI, добавьте hint.acpi.0.disabled="1" в файл /boot/device.hints. Вы можете временно отключить ACPI на стадии загрузчика, набрав команду unset acpi_load, если у вас имеются проблемы с загрузкой машины со включённым ACPI. FreeBSD 5.1-RELEASE и последующие релизы содержат загрузочное меню, с помощью которого можно контролировать загрузку FreeBSD. Одна из предлагаемых опций - это отключение ACPI. Итак, чтобы выключить ACPI, просто выберите пункт 2. Boot FreeBSD with ACPI disabled в меню.

4.3. Управление электропитанием дисплея

X window system (Xorg) также включает в себя систему управления электропитанием дисплея (обратитесь к справочной странице по xset(1) и поищите там ключевое слово ''dpms''). Вы можете захотеть поэкспериментировать с этой функцией. Однако это также на лэптопах работает нестабильно; часто дисплей выключается не полностью.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.

Обновлено: 12.03.2015