//version 1 !!!DRAFT!!!
Пересборка модуля acm.o
На этой странице приведена последовательность действий для сборки
модуля ядра acm.o. Возможно, она неоптимальна, или, даже неправильна.
Но в результате модуль был собран и успешно работает.
1) Установить пакет с исходниками ядра
#rpm -ivh kernel-source-2.4.18-14.i386.rpm
2)Перейти в каталог с исходниками (далее все действия в нем)
#cd /usr/src/linux-2.4.18-14
3)открыть файл drivers/usb/acm.c и добавить в массив usb_device_id
acm_ids элемент USB_DEVICE_INFO(USB_CLASS_COMM, 2, 0)
#vim drivers/usb/acm.c
До редактирования
/*
* USB driver structure.
*/
static struct usb_device_id acm_ids[] = {
{ USB_DEVICE_INFO(USB_CLASS_COMM, 0, 0) },
{ }
};
После редактирования:
/*
* USB driver structure.
*/
static struct usb_device_id acm_ids[] = {
{ USB_DEVICE_INFO(USB_CLASS_COMM, 0, 0) },
{ USB_DEVICE_INFO(USB_CLASS_COMM, 2, 0) },
{ }
};
3)Собрать ядро
Note:
Не нужно устанавливать полученное ядро - оно собирается только для
того, чтобы обновить модуль acm.o. Может быть, пересобрать один
единственный модуль можно проще, но я не знаю как:)
3.1)
Скопировать конфигурацию своего ядра
#cp configs/kernel-2.4.18-i686.config .config
3.2)
#make clean; make mrproper
3.3)
Задать значение EXTRAVERSION для версии ядра - оно должно совпадать с
соответсвующим значением ядра системы(ядро не предназначено для
установки!):
#uname -r
2.4.18-14
т.е. EXTRAVERSION для моего ядра - "-14"
#vim Makefile
До редактирования
EXTRAVERSION = -14custom
После редактирования:
EXTRAVERSION = -14
Note: шаг 3.3) можно пропустить, но в этом случае, скорее всего, версия
установленного в системе ядра не будет совпадать с версией, прописанной
в модуле В этом случае модуль можно будет загрузить только с опцией -f
: /sbin/insmod -f acm
3.4)
#make oldconfig
#make dep
#make bzImage
#make modules
Note: можно не дожидаться, пока соберутся все модули и остановить
процесс сборки модулей как только появится файл drivers/usb/acm.o
4) Заменить модуль
#cp /lib/modules/2.4.18-14/kernel/drivers/usb/acm.o
/lib/modules/2.4.18-14/kernel/drivers/usb/acm.old
#cp drivers/usb/acm.o /lib/modules/2.4.18-14/kernel/drivers/usb/acm.o
5)Проверить модуль
вывести системный лог в другом терминале
#tail -f /var/log/messages
Загрузить драйвер
#/sbin/modprobe acm
В логе должно появиться сообщение от драйвера:
Apr 12 19:11:53 localhost kernel: usb.c: registered new driver acm
Apr 12 19:11:53 localhost kernel: acm.c: v0.21:USB Abstract Control
Model driver for USB modems and ISDN adapters(supports Motorola Phones)
Note: Строчка "(supports Motorola Phones)" была добавлена на шаге 3 в
файл drivers/usb/acm.c:
#define DRIVER_DESC "USB Abstract Control Model driver for USB modems
and ISDN adapters(supports Motorola Phones)"
6) Если не используется devfs, создать файл устройства:
#mknod /dev/ttyACM0 c 166 0
Thanks:
http://www.tldp.org/HOWTO/Kernel-HOWTO.html
http://www.tldp.org/HOWTO/Kernel-HOWTO-2.html
http://www.eridani.co.uk/docs/linux-timeport/T280.shtml
http://dur.ch/konfiguriert/c333/
http://www.nother.net/120c/
Last updated on 04-05-2003 by Davidenko Vitaly
Please send any comments to dvtl
at
pisem dot net