Мобильные юниксы vol. 2 Anton Karpov Xakep, номер #067, стр. 067-082-1 (toxa@real.xakep.ru) Демоны на коленях Продолжаем наш экскурс в мир Unix, призванный развенчать навязываемый производителями железа стереотип "На ноутбуки только Windows". В предыдущей статье мы познакомились с тонкостями эксплуатации лаптопов под управлением Linux, а сегодня черед храброго демона доказать, что FreeBSD пятой ветки, как наиболее продвинутый представитель операционок, берущих начало в университете Беркли, может полноценно жить на ноутбуках. Как говорится, "Designed for WindowsXP – Powered by FreeBSD". ACPI Sleepstates и FreeBSD Во FreeBSD с поддержкой ACPI все просто. Я не знаю, какими целями руководствовались разработчики, написав поддержку ACPI suspend to disk, но так и не реализовав ее в системе. Я не нашел никаких упоминаний об аналоге линуксовому resume=/dev/hda4, а в списках рассылки всем вопрошающим советуют в лучших традициях OpenBSD’шного лозунга "Shut up and hack" – мол, садись и сам пиши. Так что остается только попытать счастья с Suspend to RAM. Прежде всего, неплохо бы обновить систему до CURRENT. Дело в том, что с момента последнего релиза (5.2.1) в поддержке ACPI произошли существенные изменения, более того, они происходят постоянно. Все-таки development branch, нестабильная ветка. Легче всего это сделать с помощью cvsup (этот способ неоднократно освещался в журнале). Для поддержки ACPI ничего, по сути, делать не надо. В конфигурации ядра есть опция device acpi, но ее использовать не рекомендуется – вместо этого по умолчанию грузится модуль acpi.ko. Можно считать, что пятая фряха готова к работе с ACPI "out of the box". Строчки вроде нижеследующих при загрузке ядра (набери dmesg в консоли) свидетельствуют о том, что найдено поддерживающее ACPI оборудование: Список найденного ACPI оборудования: acpi0: >SONY< on motherboard pcibios: BIOS version 2.10 Found $PIR table, 7 entries at 0xc00fdf50 acpi0: [GIANT-LOCKED] Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000 acpi_timer0: >24-bit timer at 3.579545MHz< port 0x1008-0x100b on acpi0 acpi_cpu0: >CPU< on acpi0 ACPI-0358: *** Error: Region EmbeddedControl(3) has no handler ACPI-1303: *** Error: Method execution failed [\\_PR_.CPU0._CST] (Node 0xc1949320), AE_NOT_EXIST acpi_tz0: >Thermal Zone< on acpi0 acpi_lid0: >Control Method Lid Switch< on acpi0 acpi_button0: >Power Button< on acpi0 Ошибки говорят о том, что не все ладно в датском королевстве. К чести разработчиков FreeBSD, это говорит не о их плохой работе, а о том, что вендор криво реализовал поддержку ACPI, добавив разработчикам лишнюю головную боль. Они-то пишут код согласно открытым стандартам ACPI, но многие производители оборудования не стремятся им соответствовать, исходя из соображений, что "под виндой-то все работает". Естественно, работает, так как у Microsoft с разработчиками железа свои договора и спецификации :). После успешного (или нет - это уж как повезет) обновления ядра и всей системы до цуррента (как это сделать, журнал также неоднократно писал) можно взяться за утилиту управления слипстейтами - acpiconf. Система переводится в соответствующее состояние командой acpiconf –s >слипстейт<, например, чтобы сделать Suspend to RAM, набираем: |