2009-07-15 17 views
0

Ich habe bestimmte Änderungen im Hid-Modul vorgenommen.Insmod-Kernel-HID-Modul hinzufügen

Ich kann es und Last (insmod) auf Kernel v mache 2.6.27.14 erfolgreich

Jetzt bin ich bereit, das gleiche Kernel-Modul auf Kernel v 2.6.27.11

Da es keine differance zu laden in den kerbel Quelldateien sowohl für die Kernel-Versionen

kann ich es erfolgreich machen, aber ich kann in dieser .11 Kernel-Version nicht hinzufügen/insmod

**

   ERROR: Module myhid does not exist in /proc/modules 

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

**

Grüße,

+0

Können Sie bitte weitere Details hinzufügen? Code, Makefile, wie steckst du es etc. ein? – hyperboreean

+0

Vielleicht versuchen und diff die .config-Dateien? – Inshallah

+0

Hier ist die Make-Datei. Ich downloade alle abhängigen Quelldateien für HID.O und benenne sie um. #MAKEFILE # Mehrteilige Objekte. obj-m: = myhid.o myhid-objs: = my-hiddraw.o myhid-core.o myhid-input.o myhid-input-quirk.o KDIR: =/lib/modules/$ (shell uname -r)/build PWD: = $ (shell PWD) default: \t $ (MAKE) -C $ (KDIR) M = $ (PWD) -Module – Madni

Antwort

0

sehen, was "modinfo" informiert Sie über Ihr Modul:

Überprüfen Sie, ob es richtig kompiliert, auf der rechten Seite Kernel verknüpft.

$ modinfo hid 
filename:  /lib/modules/2.6.27.7/kernel/drivers/hid/hid.ko 
license:  GPL 
depends:   
vermagic:  2.6.27.7 mod_unload 486 
parm:   pb_fnmode:Mode of fn key on Apple keyboards (0 = disabled, 1 = fkeyslast, 2 = fkeysfirst) (int) 

Wenn Sie Module kompilieren/installieren, vergessen Sie nicht, dass Sie (als root) laufen zu lassen „depmod“ haben die Module Abhängigkeiten für den Wiederaufbau vor insmod/modprobe läuft.

3

Sie können kein Modul laden, das für eine andere Kernel-Version kompiliert wurde. Dass sich der Quellcode des Moduls nicht geändert hat, bedeutet nicht, dass die Binärdatei für eine andere Kernelversion gleich ist. Jede Schnittstellenänderung der kerninternen APIs (auch wenn sie nicht direkt sichtbar ist) bricht das Modul ...

Daher bleibt der Kernel auf der sicheren Seite, indem er das Laden von Modulen, die für eine andere Kernel-Version gebaut wurden, verbietet. Alternativ können Sie die Konfigurationsoption MODVERSIONS beim Erstellen Ihres Kernels festlegen. Dadurch werden Versionsinformationen in alle Symbole eingebettet, die von Ihrem Modul verwendet werden. Mit etwas Glück können Sie sie in eine andere Kernel-Version laden.

Wenn eine von Ihrem Modul verwendete Schnittstelle geändert wird, ist das Ergebnis dasselbe.

+0

Danke! Ja, es funktioniert, wenn ich meine Quelldateien in jeder Kernel-Version kompiliere. Wie können wir die Konfigurationsoption MODVERSIONS beim Erstellen unseres Kernels setzen. Ist es in MAKEFILE oder in irgendeiner Quelldatei? Grüße, – Madni

+0

Es ist in .config festgelegt, in der Regel durch Ausführen von 'make menuconfig' oder dergleichen. Weitere Informationen finden Sie unter 'Documentation/kbuild/modules.txt' in Ihren Kernel-Quellen. – Bluehorn

+0

Danke! Ich arbeite immer noch mit MODVERSIONS, habe aber immer noch kein gutes Bild davon. Bitte senden Sie mir ein Beispiel dafür. Grüße – Madni

0

Danke! Hier ist die Make-Datei. Ich dowload alle abhängigen Quelldateien für hid.o und benennen Sie sie

MAKE

obj-m: = myhid.o

myhid-objs: = my-hiddraw.o myhid-Kern .O my-verstecktes-input.o my-verstecktes-input-quirk.o

KDIR: =/lib/modules/$ (shell uname -r)/build

PWD: = $ (shell PWD)

Standard:

$(MAKE) -C $(KDIR) M=$(PWD) modules