2014-01-20 14 views
12

Ich versuche, ein hello_world Kernelmodul mit C und Bash auf einem Raspberry Pi zu machen.Fehler beim Verwenden von insmod "Modul konnte nicht eingefügt werden hallo_world.ko: Ungültiges Modulformat"

Ich habe erfolgreich den make-Befehl verwendet, um eine hello_world.ko Datei zu generieren.

Allerdings, wenn ich versuchen, den insmod hello_world.ko Befehl zu verwenden, erhalte ich folgende Fehlermeldung:

Error: could not insert module hello_world.ko: Invalid module format

Ich habe versucht, die Schritte im Anschluss an die Raspberry Pi forum beschrieben, aber ich hatte nicht viel Glück.

Ich denke, dass dies aufgrund einer Versionskonflikt zwischen meinem Kernel und den Linux-Headern sein kann. Welche Rolle spielen diese Header in diesem Prozess und wie bekomme ich Versionen, die zu meinem Kernel passen?

Antwort

6

Die Header-Dateien definieren die Schnittstellen zwischen Ihren Modulen und dem Kernel sowie die Schnittstellen zwischen Userspace und Kernel. Wenn Ihre Kernel-Version und Header-Dateien nicht übereinstimmen, funktioniert Ihr Modul nicht wie erwartet. Ihre aktuellen Header-Dateien sind normalerweise in Ihrem Repository verfügbar. Sie könnten Ihre derzeit laufenden Kernel überprüfen, indem Sie:

 uname -r 

danach Ihre Repo für Linux-Header überprüfen:

sudo apt-cache search linux-headers 

und installieren.