erro insmod: inserção de './hello.ko': -1 formato de módulo inválido "

Acabei de criar meu primeiro módulo de driver, o módulo hello world após o LDD3. No entanto, infelizmente, encontrei este erro:

insmod: error inserting './hello.ko': -1 Invalid module format.

Estou fazendo isso no Ubuntu 11.04 e meu ambiente:

$ uname -r
2.6.38-8-generic

Eu recebo a fonte do kernel assim:

sudo apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-2.6.38 - Linux kernel source for version 2.6.38 with Ubuntu patches
$sudo apt-get install linux-source-2.6.38

meu / usr / src:

$ls /usr/src/
linux-headers-2.6.38-8          linux-source-2.6.38          vboxguest-5.0.10
linux-headers-2.6.38-8-generic  linux-source-2.6.38.tar.bz2

e então eu compilo o kernel

$sudo cp /boot/config-2.6.38-8-generic ./.config
$sudo make menuconfig -- load the .config file
$make
$make modules

e então eu compilo meu módulo do kernel

$make -C /usr/src/linux-source-2.6.38/linux-source-2.6.38 M=`pwd` modules

com Makefile:

obj-m := hello.o

e, finalmente, quando insiro o módulo:

$sudo insmod hello_world.ko
insmod: error inserting 'hello_world.ko': -1 Invalid module format

o que eu encontrei no dmesg:

hello: disagrees about version of symbol module_layout

Então qual é o problema?

Eu também notei que olinux-header is -2.26.38-generic e a versão do código-fonte é -2.26.38, esse é o problema? mas eu realmente não encontrei umlinux-source-2.26.38-generic pacote na web.

atualização de status: Eu descobri que o arquivo / lib / moduels / $ (nome -r) / build / Makefile indica minha versão do kernel em execução:

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 38
EXTRAVERSION = .2

Então, eu baixo o linux-2.6.38.2 e compilo, mas ainda assim o mesmo erro.

Também descobri que existe uma linha em / boot / config - $ (uname -r):

CONFIG_VERSION_SIGNATURE="Ubuntu 2.6.38-8.42-generic 2.6.38.2"

Alguém sabe o que isso significa? Não o vejo no arquivo de configuração do kernel que estou construindo.

questionAnswers(3)

yourAnswerToTheQuestion