LinuxForum.Fans
Тема

Сборка модуля ядра - проблема совместимости?

Автор: Cpt_Morgan 9 сообщений 11249 просмотров
#148381

Друзья!
Прошу помочь осваивающему ядро с проблемой:
Собираю проект, отсюда: http://sourceforge.net/projects/usbip/

На машине, на которой собираю стоит:
uname -a : Linux debian 2.6.32-5-686 #1 SMP Tue mar 8 21:36:00 UTC 2011 i686 GNU/Linux

загрузил сырцы ядра, скомпилил usbip (пофиксил пару, переменных, т.к. под свежие версии, разработчики пишут : For newer kernels ( >=2.6.28 ), try linux-staging code!
что это такое понял смутно, но собрать успешно получилось.

insmod постояяно выдает ошибку:
error inserting 'usbip_common_mod.ko': -1 Invalid module format

пробовал собирать с сырцами ядра:
linux-2.6.32.5.tar.bz2
linux-source-2.6.32.tar.bz2

Сведения о собранном файле выглядят примерно так:

text
================================================
modinfo  ./usbip_common_mod.ko 
filename:       ./usbip_common_mod.ko
license:        GPL
description:    usbip common driver
author:         Takahiro Hirofuchi <hirofuchi _at_ users.sourceforge.net>
depends:        
vermagic:       2.6.25.20 SMP mod_unload 686 
================================================
modinfo ./usbip_common_mod.ko
filename:       ./usbip_common_mod.ko
license:        GPL
description:    usbip common driver
author:         Takahiro Hirofuchi <hirofuchi _at_ users.sourceforge.net>
depends:        
vermagic:       2.6.32 SMP mod_unload modversions 686 

Все время та же ошибка. что делаю не так?
Спасибо.

#148405
Cpt.Morgan написал:
Все время та же ошибка. что делаю не так?

хотя бы примерно напишите, что вы именно делаете, хотя бы какие команды вводили

#148412

после скачивания сырцов ядра, выполнил
make clean
make oldconfig && make proper
make SCRIPTS

собирал usbip вот так:

text
make -C /usr/src/linux-2.6.32.5 LANG=C KBUILD_VERBOSE=1  M=`pwd` modules
make[1]: Entering directory `/usr/src/linux-2.6.32.5'
test -e include/linux/autoconf.h -a -e include/config/auto.conf || (            \
        echo;                                                           \
        echo "  ERROR: Kernel configuration is invalid.";               \
        echo "         include/linux/autoconf.h or include/config/auto.conf are missing.";      \
        echo "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \
        echo;                                                           \
        /bin/false)
mkdir -p /home/alex/usb/drivers/org_2.6.32/usbip/src/.tmp_versions ; rm -f /home/alex/usb/drivers/org_2.6.32/usbip/src/.tmp_versions/*

WARNING: Symbol version dump /usr/src/linux-2.6.32.5/Module.symvers is missing; modules will have no dependencies and modversions.

make -f scripts/Makefile.build obj=/home/alex/usb/drivers/org_2.6.32/usbip/src (cat /dev/null; echo kernel//home/alex/usb/drivers/org_2.6.32/usbip/src/usbip_common_mod.ko; echo kernel//home/alex/usb/drivers/org_2.6.32/usbip$ make -f /usr/src/linux-2.6.32.5/scripts/Makefile.modpost scripts/mod/modpost -m -i /usr/src/linux-2.6.32.5/Module.symvers -I /home/alex/usb/drivers/org_2.6.32/usbip/src/Module.symvers -o /home/alex/usb$ make[1]: Leaving directory `/usr/src/linux-2.6.32.5'

headers стоят:
/usr/src/linux-headers-2.6.32-5-686

По-моему, похожая ситуация обсуждается тут:
http://www.linuxquestions.org/questions/programming-9/unable-to-build-kernel-modules-outside-the-kernel-tree-613692/

#148429

Кажется получилось...
Что делал:
Установил
linux-sources-2.6.32
linux-headers-2.6.32-5-686

text
cd linux-sources-2.6.32
make  clean
cp /usr/src/linux-headers-`uname -r`/Module.symvers ./

make oldconfig make prepare make scripts make modules_prepare

make modules SUBDIRS=drivers/staging/usbip

итогом была успешная сборка .ko модулей, после чего insmod нормально отработала:

insmod ./usbip_common_mod.ko

#155275

sorry за most-nub-question
можно я возьму ядро из системы и перетащу его в другую?

#155288
сантехник написал:
можно я возьму ядро из системы и перетащу его в другую?

Можно, но также следует «перетащить» модули и initrd (если используется).
P.S. Архитектуры целевой машины и машины-донора должны соответствовать.

#217132

Будь другом, распиши более подробно.
Тоже над этим парюсь...

Cpt.Morgan написал:
Кажется получилось...
#217142
Cpt.Morgan написал:
разработчики пишут : For newer kernels ( >=2.6.28 ), try linux-staging code!

это значит, что модуль принят в ядро, зовётся, видимо, CONFIG_USB_IP_COMMON

Войдите или зарегистрируйтесь, чтобы ответить.