2010-12-09 6 views
0

Je suis en train de compiler un module Bonjour tout le monde donné plus hereComment construire un module de noyau

J'ai suivi l'étape suivante.

  1. téléchargés noyau Linux 2.6.35-RC5
  2. extrait dans le répertoire/général/source/linux
  3. Compilé l'ensemble du noyau.
  4. a créé un test de répertoire dans le dossier linux.
  5. Créé et respecté un module Bonjour tout le monde mentionné ici.

quand je lance la commande insmod, je reçois cette erreur

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

Comment trier cette erreur?

Cordialement,

Répondre

1

Ok, l'erreur que vous commettez est la version du noyau.

d'abord essayer

uname -r 

vous obtiendrez la version du noyau. La version téléchargée ne sera probablement pas la version du noyau de votre système. changer si le fichier makefile à

ifeq ($(KERNELRELEASE),) 

KERNELDIR ?= /lib/modules/$(shell uname -r)/build 
PWD := $(shell pwd) 

.PHONY: build clean 

build: 
     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 

clean: 
     rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c 
else 

$(info Building with KERNELRELEASE = ${KERNELRELEASE}) 
obj-m := hello.o 

endif 

Assurez-vous que les onglets sont dans l'ordre comme mentionné dans le script ci-dessus.

0

Votre module noyau doit correspondre au noyau en cours d'exécution. Si vous voulez installer ce module spécifique, par exemple, vous devez également installer le noyau que vous avez construit.

Normalement, vous ne construisez pas le noyau vous-même et vous utilisez une version pré-compilée correspondant au noyau de votre distribution. Recherchez un package kernel-headers dans le référentiel de votre distribution.

+0

'kernel * devel *' dans certains cas, car quelque chose avec 'headers' est souvent'/usr/include/linux', qui est réservé à l'espace utilisateur. – user502515

+0

Ok ... maintenant comment résoudre ce problème? n'importe quel guide pas à pas pour les débutants – chai

+0

Vous venez de définir 'KERNELDIR' dans le fichier Makefile où vous avez installé kernel-headers à la place de votre noyau personnalisé. Essayez [ce guide] (http://www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html) pour Ubuntu. – kichik

Questions connexes