Итак, господа, спасибо всем ответившимся

Причину неработы ipw3945 я так и не выяснил. Но, судя по всему, дело было не в hotplug'e, т.к. firmware всё же грузился. Было видно по сообщениям при включенной отладке модуля. Возможно, дело было в демоне ipw3945d. Во всяком случае, если немного подправить /etc/modprobe.d/ipw3945 как показано ниже, он стабильно висит в памяти (бесконечное ожидание?), но интерфейс eth1 всё равно никто не видит.
Код: Выделить всё
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --timeout=-1 --quiet
remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945
Так он по крайней мере не сдыхает сразу с воплем "Не можно найти соединение". Но толку от этого висения мало. Интерфейс так и не появился. Может дело в firmware - нe знаю.
А теперь succes story
Заменяем неблагонадёжный ipw3945 + ipw3945d на новый iwlwifi. В доках написано, что этот драйвер экспериментальный и может не работать. Но у меня он во всяком случае заработал. Для работы (и сборки?) понадобится подсистема mac80211 (по докам - это кучка фиксов для уже имеющейся в ванильном ядре подсистемы ieee80211 и "ставится" она без проблем на ядра 2.6.18+). Находим и сливаем по возможности последнюю версию, в моём случае это был тарбол mac80211-4.0.4. Распаковываем, говорим make. В ответ на это нам выплёвывают список изменений, которые будут предприняты в ядре. Затем, если всё удачно (этой приблуде может понадобиться rsync) говорим make patch_kernel. В каталоге, где распакован тарбол получаем до кучи новых подкаталогов: compatible, modified, origin, patches, stubs. В compatible лежат пропатченные куски кода. Копируем содержание compatible в /lib/modules/`uname -r`/build. Затем натравливаем на /lib/modules/`uname -r`/build скрипт ieee80211_ptr.sh из <unpacked_tarball>/scripts. Если этого не сделать, компилятор при пересборке ядра под конец начнёт вопеть как резанный, что structure has no member 'ieee80211_ptr'. В любом случае, ядро придётся пересобирать полностью, естественно. Перед сборкой в конфиге доллжны быть определены символы CONFIG_CFG80211=m && CONFIG_MAC80211=m
(Через menuconfig CONFIG_MAC80211 это Networking -> Generic IEEE 802.11 Networking Stack (dscape) где находится CONFIG_CFG80211, сейчас точно не вспомню, но при желании можно найти)
Если всё прошло успешно, ставим модули, ядро. Перезагружаемся. Тащим тарбол с интеловским firmware: iwlwifi-ucode-2.14.1 или выше. Кладём его в /usr/lib/hotplug/firmware (или /lib/firmware, в зависимости от того, где Ваш hotplug хотел бы всё это хозяйство видеть).
Тащим тарбол с самим драйвером: wlwifi-0.0.11 или выше. Распаковываем, говорим make, make install. После того, как модуль собран и установлен, проверяем:
Код: Выделить всё
# ./load debug=0x43fff
<SKIPPED>
выплёвывает кучу всякой полезной и не очень информации, главнй смысл в фразах, что соединение найдено, информация о каналах и тому подобное
</SKIPPED>
# iwconfig
wmaster0 IEEE 802.11a Channel:0
RTS thr:off Fragment thr=2346 B
wlan0 IEEE 802.11a ESSID:""
Mode:Managed Channel:0 Access Point: 00:00:00:00:00:00
RTS thr:off Fragment thr=2346 B
Encryption key:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Что и требовалось доказать. Демон здесь не нужен, поэтому, установка практически завершена.
PS: последовательность моих действий несколько отличается от той, что описана в документации. Например, мне не удалось запустить даже make menuconfig после пропатчивания ядра на предмет mac80211, т.к. make ругался на отсутствие конфига в net/mac80211 (смого каталога тоже не было). Поэтому я просто порывшись определили, где и что находится и скопировал содержимое compatible /lib/modules/`uname -r`/build. Про то, что в пропатченных сырцах компилятор начнёт жаловаться на неприрведение к нужному типу, тоже сказано ничего не было (по поводу ieee80211_ptr.sh)