Hilfe bei Linux Kernel Modul erstellung

Hallo,

ich schreibe grad meine Diplomarbeit an der TU Ilmenau im Fachgebiet Integrierte Hard- und Softwaresysteme, und hab ein Linux
Problem.

Ich hab einen FPGA (Virtex-II Pro), der auch einen PowerPC 405 Kern enthält. Auf diesem ppc läuft ein Linux (2.4), dass ich von einem PC aus cross-kompiliert habe. Als toolchain hab ich das crosstool
Skript von Dan Kegel benutzt.
Um meine Hardware im FPGA zu benutzen (verbunden mit dem ppc über einen PLB Bus) muss ich mir einen Kernel Treiber schreiben. Das Buch Linux Gerätetreiber (v2) leitet einen dabei ja schon ganz gut an. Ich nenn mein Modul ostencam.

Allerdings hab ich das Problem, dass die Kernel Symbole nicht in mein Modul übernommen werden.
Etwas detaillierter: ich konfiguriere den Kernel (make menuconfig), erstelle mein zImage und mache dann make modules. Das Modul wird auch kompiliert. Wenn ich es jetzt aber auf meinem ppc lade (insmod) bekomme ich Fehlermeldungen über unresolved symbols. z.B. printk. In /proc/ksyms findet sich auch nur printk_R__ver_printk als Symbol. nm ostencam.o gibt für printk auch undefined aus. In der System.map steht jedoch printk drin. Beide haben auch den gleichen hash-code.
Sollten /proc/ksyms und System.map nicht identisch sein?

Das ganze lief auch schon mal, also ich konnte das Modul laden. Ich glaub, seit ich es nicht mehr „per hand“ sondern über make modules kompiliere habe ich die Probleme mit den Symbolen. Diese Änderung hab ich vorgenommen, da ich sonst asm/io.h nicht einbinden konnte, weil er irgendwo unter io.h eingebundene Dateien nicht finden konnte (trotz -I für gcc).

Ich bin hier langsam am verzweifeln, häng da auch schon ein paar Tage dran. Im Internet hab ich leider nix gefunden was mir hilft. Das einzige was mir noch einfällt wäre das ganze Linux Verzeichniss zu löschen und von vorne anzufangen, aber darauf würd ich gern verzichten.

Danke schon mal für jegliche Hilfe.
Ferdinand

Das Makefile das ich mir zusammen geklaut habe sieht so aus:
obj-$(CONFIG_OSTENCAM) := ostencam.o

ostencam.o: ostencam.c

include $(TOPDIR)/Rules.make

Update: Hilfe bei Linux Kernel Modul erstellung
Hallo nochmal,

ich hab auf einen Tipp hin mal CONFIG_MODVERSIONS in der Kernelkonfiguration abgeschaltet. Jetzt kann ich das Modul auch laden. Allerdings bekomm ich die nervige Meldung, das Modul sei „tainted“, obwohl ich als Lizens im Module GPL definiert habe.

Habt ihr ne Idee woher das kommt, bzw. wie ich es loswerde?

Danke!
Ferdinand