Данная статья расскажет о том, как настроить все оборудование в kubuntu с ядром 2.6.21.5 на ноутбуке Asus F3Jr. Т.к. при установке у меня возникли некоторые проблемы с железом, то я решил все это дело задокументировать, чтобы в будущем не было проблем. Дело в том, что начиная с ядра 2.6.21 была убрана поддержка Wi-Fi адаптера Intel PRO/Wireless 3945ABG. Но в этой версии были добавлены модули, которые позволяют продлить время автономной работы от батареи.

Небольшое отступление. Зеленым помечено оборудование, которое работает и проверено, желтым — не тестировалось, но говорят, что работатет, красным — не работает.

Так же хочу сразу же предупредить, что многое в этой статье — не мое. Что не помечено цветом, то лично я не проверял, т.к. просто не успел. Сейчас работаю на OpenSUSE. Там в установке по умолчанию проблем с железом нет вообще. У них, кстати, имеется свой пакет с драйверами для беспроводного адаптера.

Чипсет: Intel 945PM + ICH7
Работает отлично. Никаких лишних манипуляций не требуется.

Процессор: Intel Core 2 Duo T2080 1.73 ГГц
Работает отлично, очень быстрый.

ACPI, управление питанием: Host bridge: Intel Corp. Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
Работает отлично. Кнопки понижения/повышения яркости дисплея работают, в ядре требуется включить asus_extras. Хотя, если глянуть в логи, то asus_extras не определяет модель F3Jr.
От сети работает где-то в среднем часа 2. Пока что более детально не тестировал. Надеюсь, что можно будет еще сильнее продлить время работы.
Чтобы включить поддержку ACPI, включаем следующие опции в ядре:
CONFIG_PM (включает управление питанием)
CONFIG_ACPI (включает ACPI)
CONFIG_PNPACPI (если включить эту опцию, то ACPI будет определять и распределять ресурсы у всех устройства plug and play вместо PnPBIOS)
CONFIG_ACPI_SLEEP (поддержка suspend to RAM)
CONFIG_SOFTWARE_SUSPEND (поддержка suspend to disk)
CONFIG_PM_STD_PARTITION (указывает раздел жесткого диска для функции suspend to disk)
CONFIG_ACPI_AC (уведомляет вас о том, что вы подключили/отключили внешнее питание и позволяет выбрать какое-то действие)
CONFIG_ACPI_BATTERY (позволяет получать информацию о вашей батарее, например, сколько заряда осталось, а так же позволяет задавать действие, выполняемое при разрядке батареи до определенного уровня)
CONFIG_ACPI_BUTTON (позволяет использовать кнопки для перехода в спящий режим, а так же выполнять определенное действие при закрытии крышки ноута)
CONFIG_ACPI_VIDEO (позволяет менять яркость дисплея, получать информацию EDID (extended display identification data))
CONFIG_ACPI_FAN (позволяет включать и выключать кулеры, а так же получать их статус)
CONFIG_ACPI_PROCESSOR (позволяет управлять мощностью процессора… очень рекомендуется включать данную опцию)
CONFIG_ACPI_THERMAL (если температура процессора (и не только) будет слишком высокой, то система будет отключена; требуется CONFIG_ACPI_PROCESSOR)

Дисплей: 15.4″ WXGA/ WXGA+ (1280 х 800)
При установке системы не забудьте указать это разрешение.

Видеосистема: ATI Mobility Radeon X2300 128MB VRAM (DDRII VRAM*4) Hyper Memory: 384M with 1G System Memory / 896M with 2G System Memory
Хорошо работает после установки драйверов fglrx. Об этом я писал здесь.

ОЗУ: 1024 Mb DDR2-533/667 DRAM
Используется ядром по полной программе с редким обращением к swap-файлу.
При сборке ядра необходимо указать:

Processor type and features ---
High Memory Support ---
[ * ] 4GB

Винчестер: SATA 120GB
Работает отлично. Можно как-то настроить его таким образом, чтобы он потреблял меньше энергии, тем самым увеличивая срок жизни батареи. Но я пока что с этим не разбирался.

Touchpad: Synaptic
Работает отлично, в логах ядра виден как:

localhost kernel: Synaptics Touchpad, model: 1, fw: 6.1, id: 0xa3a0b3, caps: 0xa04713/0x010008
localhost kernel: input: SynPS/2 Synaptics TouchPad as /class/input/input3

При сборке ядра не забыть указать:

Device Drivers ---
Input Device support ---
[ * ] Event Interface

Подхватывается XFree86 и X.org без лишних телодвижений.

PCMCIA: CardBus bridge: Ricoh Co Ltd R5c822 (rev 19)
Работает, по крайней мере начиная с ядра 2.6.19, включить нужно хотя бы ради кардридера.

Опции ядра:

<*> PCCard (PCMCIA/CardBus) support
[ ] Enable PCCARD debugging
<*> 16-bit PCMCIA support
[ * ] Load CIS updates from userspace (EXPERIMENTAL)
[ * ] PCMCIA control ioctl (obsolete)
--- 32-bit CardBus support
--- PC-card bridges
CardBus yenta-compatible bridge support
< > Cirrus PD6729 compatible bridge support
< > i82092 compatible bridge support
< > i82365 compatible bridge support
< > Databook TCIC host bridge support

CardReader: Ricoh Co Ltd: Unknown device 0843 (rev 01)
Работает, по крайней мере начиная с ядра 2.6.19. Для его работы собирал ядро 2.6.20, в ядре включил опции:

Device Drivers -&gt; MMC/SD Card support
<*> MMC support
[ ] MMC debugging
MMC block device driver
Secure Digital Host Controller Interface support (EXPERIMENTAL)
Winbond W83L51xD SD/MMC Card Interface support
TI Flash Media MMC/SD Interface support (EXPERIMENTAL)

При загрузке видны надписи, свидетельствующие о том, что устройство найдено и готово к работе

localhost kernel: sdhci: Secure Digital Host Controller Interface driver, 0.12
localhost kernel: sdhci: Copyright(c) Pierre Ossman
localhost kernel: sdhci: SDHCI controller found at 0000:01:03.2 [1180:0822] (rev 17)
localhost kernel: ACPI: PCI Interrupt 0000:01:03.2[C] -&gt; GSI 20 (level, low) -&gt; IRQ 21
localhost kernel: sdhci:slot0: Controller reports &gt; 25 MHz base clock, but no high speed support.
localhost kernel: mmc0: SDHCI at 0xfe8fe400 irq 21 DMA

После вставки карточки набираю:

# sudo mod probe mmc_block

ибо нечего экспериментальному коду постоянно в ядре телепаться.
В логах после вонзания флеш-карточки появляются записи:

localhost kernel: mmcblk0: mmc0:b368 SMISD 249856KiB
localhost kernel: mmcblk0: p1

Всё, дальше монтируем /dev/mmcblk0p1 и видим его как простую флешку.
Несмотря на угрожающие надписи EXPERIMENTAL модулей ядра, работает вполне прилично. Единственная флешка, стоящая в Palm Tungsten T3, читается и пишется со скоростью 3-5Мб/сек без проблем.

Сеть:
1. FireWire (IEEE 1394): Ricoh Co Ltd Unknown device 0832
Не проверял.

2. Intel Corp. PRO/Wireless 3945ABG (rev 02)
Настраивал в 2.6.21.5 с драйверами и firmware с интеловского сайта. В ядре 2.6.20-16 работает без предварительной настройки.
Вот так вот мы делаем так, чтобы все грузилось автоматически.
Копируем драйвер в папку с модулями:

# sudo cp ipw3945.ko /lib/modules/2.6.21.5/

Редактируем файл /etc/modprobe.d/ipw3945 и вставляем туда следующие строчки:

install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet
remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945

Делаем:

# sudo depmod -a

3. Realtek Semiconductor Co., Ltd. RTL-8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Работает из коробки с мезозойской эры практически в любой уважающей себя *nix-системе. Честные 100Мбит/сек в обе стороны.

Модем: какой-то модем от Motorolla
Не проверял, так как подключён к интернету через скоростное Ethernet-соединение.

Звук: Intel Corp. 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
Работает, по крайней мере начиная с ядра 2.6.20-16, настраивается ударом в этот бубен.

Выход на колонки так же работает отлично. Динамики не очень громкие. Встроенный микрофон очень полезен при общении через Skype — ничего подключать не надо.

CD-RW/DVD reader Combo: HL-DT-ST DVDRAM GSA-T10N
Работает нормально, читает и пишет диски без проблем.

Что можно еще исправить
1) ACPI Warning (tbfadt-0360): Ignoring BIOS FADT r2 C-state control
Эта ошибка мне очень не нравится, ибо C-state control нам нужен!
2) APIC error on CPU1: 00(40)
Поискав по гуглу, я пришел к выводу, что это какой-то баг в биосах. Так же есть вероятность, что эти ошибки исчезают, если понизить напряжение на процессор. А еще можно попробовать указать опцию noapic в /boot/grub/menu.lst