PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kernelmodule für Linux



berton
02-04-2007, 09:09
Hallo zusammen!
Ich arbeite mich gerade in etwas in C, Makefiles und Kernelmodule ein.
Im Internet findes man ja diverse Beispiele.
Im Anhang mein kleines C Programm und mein Makefile.
Das C Programm liegt nicht mit in den Kernelsource und soll per "make -C /my/kernel/tree SUBDIRS=$PWD modules" erzeugt werden.

Leider passiert bei mir folgendes:

make: Entering directory `/home/berton/linux'
scripts/Makefile.build:176: Target »/home/berton/kerneltest/hello.c« passt nicht zum Target-Muster
Building modules, stage 2.
MODPOST
/bin/sh: line 1: scripts/mod/modpost: Datei oder Verzeichnis nicht gefunden
make[1]: *** [__modpost] Fehler 127
make: *** [modules] Fehler 2
make: Leaving directory `/home/berton/linux'

Ich habe schon einiges versucht. Nix klappt. Kann mir vielleicht jemand helfen?

berton
02-04-2007, 19:03
Ich bin inzwischen mit einer etwas anderen C Datei und mit einem etwas anderem Makefile etwas weiter.
Bekomme jedoch ne Menge Fehler. Datei ist wieder im Anhang. Ich mußte zwischendrin etwas aus der Datei rausnehmen, weil >100kb.

mehlvogel
03-04-2007, 09:02
Die Kernelsourcen gegen die du kompilierst, hast du die konfiguriert (mit make config)?

berton
03-04-2007, 13:44
super! Danke mehlvogel!
Ich arbeite mit Debian und habe wohl vergessen, die Kernel-heads zu installieren. Hatte bisher nur die Sourcen :(
Jetzt habe ich aber noch ne Frage:
Nachdem ich das übersetzt habe und insmod meinmodul.o versuche bekomme ich die Meldung "-1 Invalid module format".
Wenn ich das selbe mit insmod meinmodul.ko mache klappt alles.
Ist das richtig? Ich dachte eigentlich meinmodul.o ist der Kerneltreiber ?

jeebee
03-04-2007, 17:49
.ko = Kernel-Modul für Kernel 2.6
das andere ist die noch nicht gelinkte objektdatei die du mit

gcc -c -o meinmodul.o meinmodul.c
erhältst. (nach Google: auch das Modul für Kernel 2.4)

berton
03-04-2007, 18:47
Jep! Super!!! Vielen Dank!
Damit soll das thema erstmal erledigt sein.