Компиляция файла исходника ядра (psmouse-base.c)

Модератор: Модераторы разделов

sja
Сообщения: 66
ОС: ubuntu, altlinux

Компиляция файла исходника ядра

Сообщение sja »

Всем день добрый!

Такая проблема:
Обязательно требуется внести изменения в файл kernel-2.6.12/src/driver/input/mouse/psmouse-base.c
Я загрузил kdevelop, создал проект МОДУЛЬ ЯДРА, т.е. после компиляции на выходе psmouse.ko
засунул туда psmouse-base.c и начал компиляцию, а также дал ему все требуемые include.
вот такой вывод компилятора:
cd '/root/psmouse' && gmake -j1
make -C /lib/modules/2.6.18-std-smp-alt6/build SUBDIRS=/root/psmouse modules
CC [M] /root/psmouse/psmouse-driver.o
Building modules, stage 2.
MODPOST
WARNING: "ps2pp_init" [/root/psmouse/psmouse-driver.ko] undefined!
WARNING: "alps_init" [/root/psmouse/psmouse-driver.ko] undefined!
WARNING: "alps_detect" [/root/psmouse/psmouse-driver.ko] undefined!
WARNING: "synaptics_reset" [/root/psmouse/psmouse-driver.ko] undefined!
WARNING: "synaptics_init" [/root/psmouse/psmouse-driver.ko] undefined!
WARNING: "synaptics_detect" [/root/psmouse/psmouse-driver.ko] undefined!
CC /root/psmouse/psmouse-driver.mod.o
LD [M] /root/psmouse/psmouse-driver.ko
*** Успешное завершение ***

Т.е вроде всё нормально, за исключением WARNINGов, а модуль в ядро не добавляется.
Как быть? Или этот путь заведомо неверен?
Качать исходники ядра и собирать его?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Компиляция файла исходника ядра

Сообщение Uncle_Theodore »

Ну так модуль у Вас появился, загрузите его командой
insmod /root/psmouse/psmouse-driver.ko
Чтобы он был видим системой, надо скопировать его в нужное место в директории /lib/modules/<версия> и прогнать depmod -a
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

Я же говорю, что модуль в ядро не добавляется.

[root@ekset psmouse]# insmod psmouse-driver.ko
insmod: error inserting 'psmouse-driver.ko': -1 Unknown symbol in module
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Компиляция файла исходника ядра

Сообщение BlackStar »

Проверь что пишется в dmesg, скорее всего нужно подгрузить другой модуль в котором определены функции ps2pp_init, alps_init и т.д.
LightLang Team
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

dmesg дает тот же результат:
psmouse_driver: Unknown symbol alps_init
psmouse_driver: Unknown symbol alps_detect
psmouse_driver: Unknown symbol synaptics_reset
psmouse_driver: Unknown symbol ps2pp_init
psmouse_driver: Unknown symbol synaptics_detect
psmouse_driver: Unknown symbol synaptics_init

хочу сказать еще то, что эти функции определены в заголовчных файлах, которые я опдсунул при компиляции своего файла.
может как-то надо засунуть еще их реализации?
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Компиляция файла исходника ядра

Сообщение BlackStar »

Эти функции должен экспортировать модуль, который в данный момент не загружен в ядро. Что за модуль я не знаю, ищи в исходниках ядра.
LightLang Team
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

А я понял, что при компиляции ему надо указать на эти модули? Только в каком формате?
Или что-то просто подгрузить в ядро?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Компиляция файла исходника ядра

Сообщение serzh-z »

sja писал(а):
24.10.2007 18:19
А я понял, что при компиляции ему надо указать на эти модули?
Функция ps2pp_init определена в logips2pp.c, соответственно компоновать модуль psmouse-driver.ko нужно с logips2pp.o. Вообще, стоит немного ознакомится с системой Kbuild и изучить Makefile переделываемого драйвера.
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

Я взял файлы, из которых он не мог найти ссылки, просто вставил их в этот же файл, всё вроде компилится и вставляется в ядро.
Буду пробовать на нужной машине.
Это нормальное решение?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Компиляция файла исходника ядра

Сообщение serzh-z »

sja писал(а):
25.10.2007 15:14
Это нормальное решение?
Это рабочее, но уродливое, решение.

Не понимаю, в чём проблема добавить к проекту полный набор файлов оригинального модуля - "psmouse-base.c alps.c logips2pp.c synaptics.c lifebook.c trackpoint.c"...
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

я тоже не понимаю, но kdevelop, при создании модуля хоть и добавляет их в проект в маке файле их не происывает почему-то и в итоге то, с чего началась тема...
а ручками я пытался править... видимо пока это выше меня :)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Компиляция файла исходника ядра

Сообщение serzh-z »

sja писал(а):
25.10.2007 15:43
а ручками я пытался править...
Проще было поправить kernel-2.6.12/src/driver/input/mouse/psmouse-base.c и сделать "make && make modules_install". Зачем городить какой-то проект в каком-то Kdevelop, новый Makefile и т.д.
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

Да, но если зайти в каталог mouse и там это выполнить, то:

[root@terminal mouse]# make && make modules_install
make: *** No targets. Stop.

А если в корневом - то это уже сборка ядра получается....
Или где-то я ошибаюсь?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Компиляция файла исходника ядра

Сообщение serzh-z »

sja писал(а):
26.10.2007 15:15
А если в корневом - то это уже сборка ядра получается....
Или где-то я ошибаюсь?
make_modules - это сборка всех модулей.

"make -C driver/input/mouse" соберёт лишь модуль в mouse.
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

serzh-z писал(а):
26.10.2007 15:32
"make -C driver/input/mouse" соберёт лишь модуль в mouse.


да, если makefile нормальный, а там:

Код:

# Makefile for the mouse drivers. # Each configuration option enables a list of files. obj-$(CONFIG_MOUSE_AMIGA) += amimouse.o obj-$(CONFIG_MOUSE_RISCPC) += rpcmouse.o obj-$(CONFIG_MOUSE_INPORT) += inport.o obj-$(CONFIG_MOUSE_LOGIBM) += logibm.o obj-$(CONFIG_MOUSE_MAPLE) += maplemouse.o obj-$(CONFIG_MOUSE_PC110PAD) += pc110pad.o obj-$(CONFIG_MOUSE_PS2) += psmouse.o obj-$(CONFIG_MOUSE_SERIAL) += sermouse.o obj-$(CONFIG_MOUSE_HIL) += hil_ptr.o obj-$(CONFIG_MOUSE_VSXXXAA) += vsxxxaa.o psmouse-objs := psmouse-base.o alps.o logips2pp.o synaptics.o


и всё, поэтому снова:
[root@terminal sja]# make -C drivers/input/mouse/
make: Entering directory `/sja/drivers/input/mouse'
make: *** No targets. Stop.
make: Leaving directory `/sja/drivers/input/mouse'
в этом вся проблема...

а через kdevelop тоже вариант не прокатил...
вот это строка
PSMOUSE_DEFINE_ATTR(rate);
дает два раза WARNING:
/root/sjakko/sjakko-driver.c:74: предупреждение: initialization from incompatible pointer type
/root/sjakko/sjakko-driver.c:74: предупреждение: initialization from incompatible pointer type

но модуль компилируется в ядро вставляется, но не назначается Handler в /proc/bus/input/devices для mouse
Спасибо сказали:
sja
Сообщения: 66
ОС: ubuntu, altlinux

Re: Компиляция файла исходника ядра

Сообщение sja »

Может быть, как-нибудь по другому, можно скомпилировать эти файлы?
Спасибо сказали: