Страница 1 из 1
Звонок другу (ubuntu, kernel, modules)
Добавлено: 29 май 2009, 15:50
dima8080
По работе делаю небольшой проект - SCSI driver for virtual disk. Немного изменил кернел, перекомпилировал, написал модуль, получил ошибку и т.д.
В общем не очень работает

Есть несколько вопросов с продолжением, в зависимости от ответов.
Если кому не влом это дело обсудить - бросьте телефон в личку, я позвоню. За мной пиво или что там сегодня котируется

Re: Звонок другу (ubuntu, kernel, modules)
Добавлено: 01 июн 2009, 11:32
dima8080
Попытка номер 2.
Буду более детален.
Есть module который называется "scst" (scst.sourceforge.net), и который я инсталировал.
$ lsmod | grep scst
scst 172448 0
Есть module "scst_proxy" который я написал, и который пользуется scst.
Компилирую мой module, получаю ошибку:
$ make
make -C /lib/modules/2.6.28.9-scst/build M=/home/dima/Work/proj/scst_test modules
make[1]: Entering directory `/usr/src/linux-source-2.6.28'
CC [M] /home/dima/Work/proj/scst_test/scst_proxy.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "__scst_register_target_template" [/home/dima/Work/proj/scst_test/scst_proxy.ko] undefined!
WARNING: "scst_unregister_target_template" [/home/dima/Work/proj/scst_test/scst_proxy.ko] undefined!
CC /home/dima/Work/proj/scst_test/scst_proxy.mod.o
LD [M] /home/dima/Work/proj/scst_test/scst_proxy.ko
make[1]: Leaving directory `/usr/src/linux-source-2.6.28'
System call в кернеле вроде зарегистрирован:
$ cat /proc/kallsyms | grep __scst_register_target_template
f7fd6de8 r __ksymtab___scst_register_target_template [scst]
f7fd72cf r __kstrtab___scst_register_target_template [scst]
f7fd702c r __kcrctab___scst_register_target_template [scst]
f7fbbdb0 T __scst_register_target_template [scst]
2f5df621 a __crc___scst_register_target_template [scst]
Когда запускаю свой module, понятно он падает.
$ sudo insmod scst_proxy.ko
insmod: error inserting 'scst_proxy.ko': -1 Unknown symbol in module
Что я тут пропустил?
Re: Звонок другу (ubuntu, kernel, modules)
Добавлено: 01 июн 2009, 14:22
Groundhog
А вы его:
- проверьте совпадают ли версии кернела а то у вас 2.6.28.9 и 2.6.28.?????
- лучше скопируйте модуль в кернел трее и компилируйте непосредственно в кернеле;
- попробуйте скомпилировать как билдин в кернеле а не как модули (существуюший модуль обычно можно в конфигурационном фаиле в кернел забить).;
- компилятор вам явно намекает что у вас парочка функций неопределена
Re: Звонок другу (ubuntu, kernel, modules)
Добавлено: 01 июн 2009, 23:30
dima8080
Версия кернела одна и таже. Я её сгрузил, скомпилировал и установил. Потом я скомпилировал оба модуля в этом же кернеле.
Т.е. с версиями проблем не должно быть. Намёк компилятора я понимаю. Осталась мелочь ...
Может я в Makefile должен как-то указать что модуль "scst-proxy" пользуется другим модулем "scst"?
Re: Звонок другу (ubuntu, kernel, modules)
Добавлено: 02 июн 2009, 11:12
Groundhog
А что modules.dep кажет?
зависит ваш модуль от исходного (посмотрите в исходном EXPORT_SYMBOL или чо там...).
Вообще ваш фраме-ворк работает? скомпилируйте простейший (типа принтк ХХХ) грузится?
Извините за вопросы не знаю на какой вы стадии копания в кернеле...
Re: Звонок другу (ubuntu, kernel, modules)
Добавлено: 05 июн 2009, 13:55
dima8080
А ларчик просто ...
1. Copy the .ko file to a location beneath /lib/modules/<version>/kernel
2. Add the exported symbols to /lib/modules/<version>/build/Module.symvers
3. Reboot
4. Enjoy
Groundhog, thanks for ideas and sorry for bothering