Kompatibilität des Linux-Kernelmoduls (* .ko) zwischen Kerneln

Ich habe ein einfaches Kernel-Objekt, das ich zum Durchsuchen des Kernel-Speichers erstellt habe.

Wenn ich es auf meinem 64-Bit-Ubuntu-Rechner (3.2) erstelle, funktioniert es auf diesem Rechner einwandfrei. Auf meinem 64-Bit-Ubuntu-Rechner (3.9) wird es jedoch nicht modifiziert. Und umgekehrt. Ich erhalte den Fehler "-1 Ungültiges Modulformat", wenn ich versuche, es auf einer anderen Kernel-Version als der, auf der ich es erstellt habe, auszuführen.

Ich dachte, Insmod verknüpft es dynamisch mit der exportierten Symboltabelle und die exportierte Symboltabelle ändert sich nicht zwischen den Kernel-Revisionen. (Es wird angehängt.)

Kann mir jemand sagen, wie ich ein Kernelmodul (.ko) erstellen kann, das mit zukünftigen (oder früheren) Linux-Kerneln kompatibel ist, ohne auf diesem Kernel neu erstellt werden zu müssen?

Hier ist meine Make-Datei:

ccflags-y = -g

obj-m + = access_mem.o

all: make -C / lib / modules / $ (Shell uname -r) / build M = $ (PWD) -Module

Bereinigen: Machen Sie -C / lib / modules / $ (Shell uname -r) / build M = $ (PWD) sauber

Antworten auf die Frage(2)

Ihre Antwort auf die Frage