Strona 1 z 1

Kernel Module: Invalid module format

: 03 cze 2009, 18:42
autor: clansman5
Napisalem sobie prosty modul kernelowy (dummy - na razie nic nie robi). Mam z nim maly problem.

Zrodlo modulu jest nastepujace:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/kd.h>

// ------------------------------------------------------

#define lic "GPL"
#define auth "TW"
#define desc "Test Module"
#define dev "dummy"

// ------------------------------------------------------

MODULE_LICENSE(lic);
MODULE_AUTHOR(auth);
MODULE_DESCRIPTION(desc);
MODULE_SUPPORTED_DEVICE(dev);

// ------------------------------------------------------

static int __init kb_init(void)
{
printk(KERN_ALERT "Hello\n");
return 0;
}

// ------------------------------------------------------

static void __exit kb_exit(void)
{
printk(KERN_ALERT "Bye\n");
return;
}

// ------------------------------------------------------

module_init(kb_init);
module_exit(kb_exit);

// ------------------------------------------------------
Modul sie kompiluje. Gdy probuje zaladowac go do kernela dostaje komunikat:
tomasz@athena:~/Programowanie/Testy/k_mody$ sudo insmod kb.ko
insmod: error inserting 'kb.ko': -1 Invalid module format
dmesg:
[ 4215.463669] kb: disagrees about version of symbol struct_module
Zastanawiam sie o co chodzi? Jestem w 100% pewny, ze skompilowal sie z obecnie uzywana wersja jadra. Sam ten kernel kompilowalem a w katalogu /usr/src mam tylko jedne zrodla linuxa.

Ma ktos jakis pomysl ? Moze jakis naglowek specyficzny jest potrzebny?

Odp: Kernel Module: Invalid module format

: 04 cze 2009, 22:25
autor: arrevalk
A jaki plik konfiguracyjny wykorzystales do kompilacji jądra?
Plik konfiguracyjny Twojego jajka pod ubuntu mozna znalezc w katalogu \boot

Edit:
Wersje kernela łatwo sprawdzić za pomocą polecenia

Kod: Zaznacz cały

uname -r
natomiast wersje modułu:

Kod: Zaznacz cały

modinfo ./jakis_modul.ko

Odp: Kernel Module: Invalid module format

: 05 cze 2009, 08:43
autor: clansman5
To config ma jakiekolwiek znaczenie? Nie rozumiem co to zmienia, przeciez zrodla pozostaja te same. Fakt zmienialem cos w configu kernela, mialem go przekompilowac i uruchomic ale w konsekwencji zostalem przy obecnej konfiguracji. Sprawdze sprawe z configiem

EDIT:

Faktycznie, config ma znaczenie lekka modyfikacja configa i kernel juz uznaje modul za skompilowany z innym kernelem