LINUX.ORG.RU

Модуль ядра


0

0

В чем может быть дело?
#insmod ./test.o
./test.o kernel module version mismach
./test.o was compiled for kernel version 2.4.9-9
while this kernel is version 2.4.18-14

Система Red Hat 8
//test.c
#include <linux/kernel.h>
#include <linux/module.h>
#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include <linux/modversions.h>
#endif

char kernel_version[]="2.4.18-14"

int init_module()
{
printk("Hello, world - this is the kernel speaking\n");
return 0;
}
void cleanup_module()
{
printk("Short is the life of a kernel module\n");
}

#Makefile
CC=gcc
MODCFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX
test.o: test.c /usr/include/linux/version.h
$(CC) $(MODCFLAGS) -c test.c


убей директории /usr/include/linux и /usr/include/asm и пробрось соответствующие симлинки из /usr/src/linux/include

ananas ★★★★★
()

другими словами - при сборке были использованы сырцы иной версии ядра, чем та, которая используется в системе. просто правильно настрой указанные выше линки (на нужное ядро)

есть еще 1 способ - сделай uname -a, запомни версию ядра если сам не знаешь потом собери модуль с опцией -S . получишь асм код. в нем измени скроку с версией на правильную и собирай дальше из ассемблерного кода.

anonymous
()
Ответ на: комментарий от ananas

Спасибо за помощь%) первый ответ меня навел на мысли и я практически додумался до 2-го%) вот только теперь модуль загружается с warning и не выводятся диагностические сообщения %( но несмотря на это все же подключается (виден в lsmod и /proc/modules)

ahtoxa
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.