ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Интегрированный сетевой контроллер Atheros в Linux (Debian Squeeze)

14/04/2012 23:55:20

Возможно, данная статья устарела.
Все новые статьи

В очередной раз я решил провести апгрейд своего домашнего сервера. Старый Penitum-4 уже не устраивал своей медлительностью. В качестве системной платы нового компьютера была выбрана модель GA-H77-D3H (rev. 1.0) от известной фирмы Gigabyte. Эта плата удовлетворяла всем моим условиям, имела USB3 порты, поддержку SATA 6Gb, DDR3 1600, достаточное количество PCI и PCIEX1 слотов и гигабитный сетевой контроллер. Установка Debian Squeeze на сервер прошла в целом успешно за исключением одной неожиданности. Debian отказался "видеть" интегрированный сетевой контроллер... Я люблю такие квесты! Поехали.

Утилита "lspci" сообщила, что в наличии имеется "Ethernet controller: Atheros Communications Device 1083 (rev c0)"
Довольно быстро выяснилось, что это Atheros 8151.
В Debian Squeeze используется (на момент написаня статьи) ядро 2.6.32, которое имеет поддержку чипов Atheros, но не всех.
Так "modprobe atl1c" загружает драйвер, но сетевой контроллер он не видит.
Для того, чтобы драйвер atl1c распознал Atheros 8151 необходимо дать следующую команду:

echo "1969 1083" > /sys/bus/pci/drivers/atl1c/new_id

Ура, интерфейс появился. Чтобы эта команда выполнялась в момент загрузки компьютера, необходимо прописать ее в /etc/network/interfaces примерно так

iface eth1 inet dhcp
        pre-up modprobe atl1c
        pre-up echo "1969 1083" > /sys/bus/pci/drivers/atl1c/new_id

Казалось бы все, проблема решена, все счастливы и нечего было марать Интернет. Но не спешим радоваться. В логах время от времени я стал замечать такие записи.

srv3 kernel: [  123.230567] atl1c 0000:05:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
srv3 kernel: [  123.344609] atl1c 0000:05:00.0: version 1.0.0.2-NAPI
srv3 kernel: [  123.353601] ADDRCONF(NETDEV_UP): eth1: link is not ready

После чего мой замечательный интерфейс вовсе исчезал и никакие перезагрузки драйвера не помогали - только рестарт компьютера. Это происходило не сразу и не всегда, но примерно раз в сутки. Сами понимаете, что эксплуатация сервера с такой фичей никак невозможна.

Известно, что в Debian Squeeze старый драйвер и в новых версиях ядра такой проблемы нет. Но уходить в unstable ветку или ставить новые ядра на стабильную систему никак не хотелось. Нужно было обойтись малой кровью, а именно взять свежие исходники собственно драйвера и скомпилировать их. Но оказалось, что это очень даже непросто. 90% ссылок на исходники в лучшем случае давали ошибку 404. Наконец, я нашел работающую ссылку на архив.

Для компиляции драйвера потребуются такие пакеты как build-essential, linux-headers и т.д. Но сходу скомпилировать драйвер в Debian не удалось, так как файле Makefile были прописаны неправильные пути к файлу autoconf.h
Здесь я выкладываю пропатченный архив с уже скомпилированным в Debian Squeeze драйвером.

AR81Family-linux-v1_0_1_14.tar.gz

Теперь осталось только загрузить драйвер с помощью команды "insmod atl1e"
Эта версия драйвера работает без каких-либо нарекайни. Его загрузку также можно прописать в /etc/network/interfaces
Вот теперь все довольны. Как говорится, Happy End!
 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху