Modulo kernel: come ottenere l'output della console?
-
29-10-2019 - |
Domanda
Sto scrivendo un modulo del kernel e voglio essere in grado di stampare qualcosa sull'output della console durante il caricamento utilizzando insmod module.ko
.
Ho provato a utilizzare
printk(KERN_EMERG "test kernel emergency\n");
ma non viene visualizzato nulla sulla mia console.Tuttavia appare in dmesg
.
Informazioni aggiuntive:
Sto usando un Intel x86 a 32 bit con linux-3.0.0
e cat /proc/sys/kernel/printk
restituisce4 4 1 7
Soluzione
1- assicurati di essere in modalità terminale completa (premi Alt + Ctrl + f1)
2- invece di printk(KERN_EMERG "test kernel emergency\n");
prova
printk(KERN_ALERT "test kernel alert\n");
Altri suggerimenti
Jens,
Gli output printk vengono inviati al kernel e raccolti dal demone syslogd. dmesg fa eco ai dati raccolti dal demone syslogd.
Questo messaggio potrebbe non essere stampato dalla tua console (da dove hai chiamato insmod) se stai usando la versione grafica di linux.L'ho provato in Ubuntu e non stampa i messaggi di printk anche se il livello di registro è ALERT o EMERGENCY.
È necessario modificare il proprio syslog per stampare i messaggi di emergenza del kernel sulla console (o, utenti specifici o tty).
Ci sono molti demoni syslog, se non controlli quello che usi e non sei root, sei sfortunato.Se controlli quello che usi, syslog-ng è abbastanza buono e ha esempi di come farlo nel suo manuale.