[Comm] Проблемы с Iola PLN
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Сб Июл 16 22:27:35 MSD 2005
On Sat, Jul 16, 2005 at 08:58:51PM +0400, Андрей Жмурин wrote:
> Заранее прошу на чайника сильно не замахиваться. Поиск по архивам
> не дал никакой информации, потому и пишу сюда.
>
> Имеем: из железа - однопортовый PCI-адаптер IolaPLN (надтональный
> xDSL-модем, изготавливается в Калуге), из софта - ALM2.4 и родные
> дрова, взятые с сайта - http://www.iola.ru/1251/support.htm
> (пробовал и 3.07, и 3.11-2).
>
> Поставил пакет с исходниками ядра, пакет с заголовками, gcc++ 2.95.
> Распаковал исходники, запустил make menuconfig, получил .config ядра,
> дал на него ссылку в includes (дрова Иолы очень хотели его там видеть).
Вот это уже неправильно - вместо исходников и заголовков того ядра,
которое на самом деле используется, были подсунуты какие-то другие.
Или вы установили именно это пересобранное ядро? Тогда это в принципе
правильно, за исключением того, что скрипты сборки модулей в этом
драйвере, как обычно, кривые.
> Откомпилил согласно документации, сделал depmod -a, modprobe ipln
Странно, что собранный таким образом модуль вообще загрузился...
> dmesg показал наличие записей про Iola на eth0 с правильным IP и MAC
> (он по IP у них ставится), но утилита конфигурации говорит, что
> появившийся eth0 не является открытым, потому что это вообще не IolaPLN.
>
> Активно подозреваю, что где-то сильно накосячил, но пока опыта не хватает
> понять, где? Если кто сможет ситуацию прояснить, буду признателен...
Больше всех накосячили разработчики драйвера - это же надо сделать
Makefile и скрипты вокруг, наводящие на мысли о подобном способе
сборки. А уж как они собирают модуль для ядер 2.6.x - это вообще
достойно занесения в сборник вредных советов (я-то надеялся, что с
2.6, где есть стандартная процедура для сборки сторонних модулей,
подобными извращениями больше никто заниматься не будет).
Вместо всего этого безобразия нужно:
0) Удалить модули, которые были собраны оригинальными скриптами, из
/lib/modules.
1) Поставить пакет kernel-headers-modules-std-up (версия и сборка
этого пакета должны точно соответствовать используемому ядру - если
ядро обновлялось из updates, то и этот пакет необходимо взять оттуда
же). Или kernel-headers-modules-std-smp, если используется SMP-ядро.
При этом автоматически вытянется по зависимостям пакет
kernel-headers-std-up и соответствующая версия компилятора (в данном
случае - gcc2.96).
2) Распаковать исходники драйвера и положить в каталог ipln/linux файл
Makefile следующего содержания:
===========================================================================
obj-m := ipln.o iplnusb.o
src ?= .
EXTRA_CFLAGS := -I$(src)/../common -DIPLN
-include $(TOPDIR)/Rules.make
===========================================================================
3) Находясь в этом же каталоге, выполнить команду вида:
make -C /usr/src/linux-2.4.26-std-up modules SUBDIRS=`pwd`
(имя каталога зависит от версии и варианта ядра).
4) Положить собранные модули ipln.o, iplnusb.o (или ipln.ko,
iplnusb.ko для ядер 2.6.x) куда-нибудь в /lib/modules/<версия_ядра>
(можно создать там подкаталог с любым разумным именем, чтобы не
смешивать эти файлы с установленными из пакетов).
5) Выполнить команду depmod -a.
После этого можно загружать модуль (modprobe ipln).
Кстати, похоже, этот модуль при загрузке читает файл /etc/ipln.cfg
(ещё одна вещь, которая в нормальных модулях делаться не должна) -
возможно, какие-то проблемы вызываются отсутствием или неправильным
содержимым этого файла.
В процессе борьбы с утилитой конфигурации может пригодиться strace,
чтобы посмотреть, что она пытается делать.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/community/attachments/20050716/fbff4853/attachment-0003.bin>
Подробная информация о списке рассылки community