Kernelmodul erneut kompilieren

T

tim.j

Mitglied
Guten Morgen alle zusammen.

Das Kernelmodul kcapi meldet einen Fehler.
Diesen Fehler möchte ich gerne debuggen und habe dafür weitere Ausgaben in die .c Datei integriert.

Wie kann ich diese einzelne .c Datei kompilieren das ich wieder eine .ko Datei habe?
Kann ich die .ko Datei dann einfach ersetzten und das modul erneut laden?

Ich hoffe auf eure Hilfe

Gruss
Tim
 
Vermutlich gibt es ein target, um nur das Modul zu kompilieren. Das einfachste ist es, alle mit make neu zu kompileren. Das entstandene Modul kannst Du tatsaechlich einfach nur kopieren und damit das alte ersetzen. Danach solltest Du 'depmod -a' ausfuehren, damit Du das neue Modul laden kannst (ist aber beim Ersetzen vermutlich nicht mal notwendig, nur beim Hinzufuegen einen neuen Moduls).
 
Gibt es keinen Befehl mit dem ich einfach nur 1 Modul kompilieren kann?
 
Gib mal im Kernel-Source-Verzeichnis einfach ein
Code:
make directory/modulname.ko
ein. Willst du nur den Inhalt eines bestimmten Ordners neu kompilieren, hilft ein
Code:
make directory/
weiter. Am einfachsten duerfte es aber wohl mit
Code:
make modules
sein. Wenn die anderen Module schon erstellt sind, wird nur das modifizierte nochmal neu kompiliert.
 
directory = /lib/modules/... etc?

Nein, ich sagt was vom Kernel-Source, also musst du das Verzeichnis nehmen, in dem die Sources des Modules liegen. Unter /lib/modules liegen die installierten Module. Mach einfach mal im Kernel-Source ein 'make help', da bekommst du alle Moeglichkeiten angezeigt.
 
Aber in dem Source Verzeichnis gibt es keine .ko Dateien?
Oder soll ich "Verzeichnis zur .c Datei"/".ko Datei" angeben?
Ich verstehe es irgendwie nicht. Entweder Sourcedir und Sourcefile angeben oder Targetdir und Targetfile.

*verwirrt*
 
Du gibst die ko-Datei an, die du erstellen willst. Wie bereits gesagt duerfte 'make modules && make modules_install' wohl der einfachste Weg sein, wenn du dich mit dem Kernel-Build-System und dem Aufbau der Kernel-Sources nicht auskennst. Mir stellt sich allerdings die Frage, warum du im Kernel-Source rumeditierst, wenn du scheinbar nichtmal das Makefile lesen kannst und dich offenbar nicht mit den Sources auseinandergesetzt hast. :think: Lies doch einfach mal ein paar Dokus zu dem Thema, z.B. http://tldp.org/HOWTO/Module-HOWTO/

PS: Ich hoffe, dass du die Ausgaben wenigstens nicht ueber die Standard-C-Bibliothek realisiert hast sondern printk() nutzt.. ;)
 
Zuletzt bearbeitet:
Ok danke.
Ja Leider kenne ich mich nicht so gut in dem Bereich aus.
Mein Problem ist bei dem Versenden eines Faxes wird eine Fehlermeldung geworfen. Mit der Meldung kann ich nicht sehr viel Anfangen.

Code:
Sep 25 09:35:33 hylafax-test kernel: kcapi: handle_message: applid 3 state released (LISTEN_CONF ID=003 0x0000 LEN=0014
Sep 25 09:35:33 hylafax-test kernel: Controller/PLCI/NCCI = 0x1
Sep 25 09:35:33 hylafax-test kernel: Info = 0x0
Sep 25 09:35:33 hylafax-test kernel: )

Deshalb möchte ich ein paar weitere Ausgaben in die Funktion "capi_ctr_handle_message" hinzufügen.
 
Ueber die Meldung ist wirklich kaum was zu finden. Evtl kann man dir aber auf der Mailingliste von hylafax weiterhelfen: http://hylafax.sourceforge.net/support.php oder du machst halt einen Thread im entsprechenden Bereich auf. Bevor man am Kernel rumbastelt sollte man sich ein wenig damit befasst haben, denke ich. Ein recht gutes Buch zum Thema Treiber-Entwicklung (und somit auch zur Modul-Programmierung) findest du unter http://ezs.kr.hsnr.de/TreiberBuch/html/ .
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Squid als RPCoHTTPS Proxy für Outlook Anywhere

ubuntu erkennt netzwerkarte nicht

High Availability Webserver mit Fedora

WINEMANAGER - Ein Tool zum Verwalten von WINE [BETA]

Zurück
Oben