Question

J'écris un module de noyau, et je veux pouvoir imprimer quelque chose sur la sortie de la console lors du chargement en utilisant insmod module.ko.

J'ai essayé d'utiliser

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

Mais rien n'apparaît sur ma console. Il apparaît cependant dans dmesg.

Informaitons supplémentaires:
J'utilise un Intel x86 32 bits avec Linux-3.0.0

et cat /proc/sys/kernel/printk donner4 4 1 7

Était-ce utile?

La solution

1- Assurez-vous que vous êtes en mode terminal complet (appuyez sur Alt + Ctrl + F1)

2- Au lieu de printk(KERN_EMERG "test kernel emergency\n");essayer

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

Autres conseils

Jens,

Les ouputs printk sont envoyés au noyau et collectés par le démon syslogd. DMESG fait écho aux données collectées par Syslogd Daemon.

Ce message ne peut pas être imprimé par votre console (d'où vous avez appelé INSMOD) si vous utilisez une version graphique de Linux. J'ai essayé cela dans Ubuntu et il n'imprime pas les messages printk même si le niveau de journal est alerte ou d'urgence.

Vous devez modifier votre syslog pour imprimer des messages de noyau d'urgence pour consoler (ou, utilisateurs ou TTY spécifiques).

Il y a beaucoup de démons syslog, si vous ne contrôlez pas celui que vous utilisez et que vous n'êtes pas root - vous n'avez pas de chance. Si vous contrôlez celui que vous utilisez, Syslog-NG est assez bon et a des exemples de la façon de le faire dans son manuel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top