On Thu, Aug 18, 2005 at 03:07:41PM +0300, Dolgov OV wrote: > On Thu, 18 Aug 2005 15:07:15 +0400 Sergey Vlasov wrote: > > Вроде бы есть какие-то драйверы и для ядер 2.4.x: > > http://gate.brimson.com/downloads/ > > Скачал ti_usb-1.1-1.src.rpm ... > > Как его собрать?! Он ищет исходники ядра (знаю, что надо всего лишь > заголовки, но как ему это в спеке объяснить?) Чтобы не разбираться, чего там хочет его configure, можно собрать так: 1) apt-get install kernel-headers-modules-std-up (версия и сборка пакета должны точно соответствовать используемому ядру - т.е., если брали ядро из updates, за этим пакетом нужно идти туда же). 2) Распаковать src.rpm и лежащий внутри него ti_usb-1.1.tgz (можно было сразу качать .tgz). 3) Положить в подкаталог ti_usb-1.1/src файл Makefile следующего содержания: ======================================================================= obj-m := ti_usb.o list-multi := ti_usb.o ti_usb-objs := ti_usb_3410_5052.o ti_usb_serial.o include $(TOPDIR)/Rules.make ti_usb.o : $(ti_usb-objs) $(LD) -r -o ti_usb.o $(ti_usb-objs) ======================================================================= 4) Выполнить в этом подкаталоге команду: make -C /usr/src/linux-<версия> modules SUBDIRS=$(pwd) 5) Положить получившийся ti_usb.o в /lib/modules/$(uname -r), выполнить depmod -a. С модулем в принципе всё, но нужно ещё создавать файлы устройств в /dev - тут ситуация усложняется тем, что этот модуль использует динамический major (что вполне естественно - официального диапазона номеров для него никто не выделял), поэтому при каждой его загрузке файлы в /dev нужно создавать заново. В принципе там есть некий скрипт make_devices, но приворачивать его придётся самостоятельно. Возможно, проще будет взять какой-нибудь major из диапазона "local/experimental use" (60-63, 120-127, 240-254) и передавать его модулю через параметр major, например, добавив в modules.conf: options ti_usb major=62 Тогда устройства с этим major достаточно создать только один раз. В 2.6 с этим проще, поскольку, во-первых, драйвер ti_usb_3410_5052 для 2.6 интегрирован с остальной подсистемой usb-serial (и использует устройства /dev/ttyUSB*, как и другие аналогичные драйверы), во-вторых, для 2.6 есть udev, поэтому большая часть проблем с динамическими major исчезает. Проблема с драйверами usb-serial для 2.4 в том, что интерфейсы usb-serial недоступны для модулей, собираемых отдельно от ядра (фактически ti_usb_serial в этом драйвере является в основном копией usbserial.c из ядра с переименованными функциями, чтобы избежать конфликтов с версией из ядра), поэтому возникает необходимость в собственном major.