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