Kompatybilność modułu jądra Linux (* .ko) między jądrem

Mam prosty obiekt jądra, który zbudowałem do sondowania w pamięci jądra.

Jeśli zbuduję go na moim 64-bitowym komputerze Ubuntu (3.2), to działa dobrze na tym komputerze. Ale to nie będzie wstrętne na mojej 64-bitowej maszynie Ubuntu (3.9). I wzajemnie. Daje mi błąd „-1 Nieprawidłowy format modułu”, jeśli spróbuję uruchomić go na Kernelu rev ​​innym niż ten, na którym go zbudowałem.

Myślałem, że insmod powiązał go dynamicznie z eksportowaną tabelą symboli, a eksportowana tablica symboli nie zmienia się między wersjami jądra. (Zostaje dołączony.)

Czy ktoś może mi powiedzieć, jak mogę zbudować moduł jądra (.ko), który jest kompatybilny z przyszłymi (lub wcześniejszymi) jądrem Linuksa bez konieczności przebudowywania go na tym jądrze?

Oto mój plik do zrobienia:

ccflags-y = -g

obj-m + = access_mem.o

all: tworzy moduły -C / lib / modules / $ (shell uname -r) / build M = $ (PWD)

clean: czyść -C / lib / modules / $ (powłoka uname -r) / build M = $ (PWD) wyczyść

questionAnswers(2)

yourAnswerToTheQuestion