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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top