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ść