Frage

Ich schreibe ein Kernelmodul und möchte beim Laden mit insmod module.ko etwas auf der Konsolenausgabe drucken können.

Ich habe versucht, zu verwenden

printk(KERN_EMERG "test kernel emergency\n");

aber auf meiner Konsole wird nichts angezeigt.Es erscheint jedoch im dmesg.

Zusätzliche Informationen:
Ich verwende ein Intel x86 32-Bit mit Linux-3.0.0

und cat /proc/sys/kernel/printk geben 4 4 1 7 an

War es hilfreich?

Lösung

1- Stellen Sie sicher, dass Sie sich im Vollterminalmodus befinden (drücken Sie Alt + Strg + f1)

2- anstelle von printk(KERN_EMERG "test kernel emergency\n"); versuchen Sie es mit

printk(KERN_ALERT "test kernel alert\n");

Andere Tipps

Jens,

printk-Ausgaben werden an den Kernel gesendet und vom syslogd-Daemon gesammelt. dmesg gibt die vom syslogd-Daemon gesammelten Daten wieder.

Diese Nachricht wird möglicherweise nicht von Ihrer Konsole gedruckt (von wo aus Sie insmod aufgerufen haben), wenn Sie die grafische Version von Linux verwenden.Ich habe dies in Ubuntu versucht und es werden die printk-Nachrichten nicht gedruckt, selbst wenn die Protokollebene ALERT oder NOTFALL ist.

Sie müssen Ihr Syslog ändern, um Notfall-Kernel-Nachrichten an die Konsole (oder an bestimmte Benutzer oder ttys) zu drucken.

Es gibt viele Syslog-Daemons. Wenn Sie den von Ihnen verwendeten nicht kontrollieren und nicht root sind, haben Sie kein Glück.Wenn Sie die von Ihnen verwendete steuern, ist syslog-ng ziemlich gut und enthält Beispiele dafür in seinem Handbuch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top