Solo una breve domanda sulla funzione printk () a livello di kernel, se chiamo questo dove verrà stampato il messaggio? (Sto usando Ubuntu su i386 arch con l'ultimo download del kernel)
non riesco a trovarlo da nessuna parte,
Se qualcuno potesse anche indicarmi la giusta direzione per una sorta di manuale per la funzione printk () sarebbe fantastico!
dmesg
dovrebbe essere visualizzato printk
messaggi.
printk
i messaggi vengono inviati al buffer dei messaggi del registro del kernel, che può essere esposto in vari modi a seconda della configurazione del sistema. Il comando della shell dmesg
li mostrerà e dovrebbero anche essere copiati in file in /var/log
dal syslog
demone. È possibile farli registrare su una console seriale o su un terminale virtuale in modalità testuale, ma non ricordo quanto sia off-line.
Se ne hai messo un po ' printk()
istruzioni nel modulo del kernel per eseguire il debug e provare a catturare gli output mentre vengono stampati, ciò che si sta cercando è klogd
. Esegui a man klogd
per più detenzione e opzioni.
Ecco uno script di wrapper per klogd
che ho codificato un po 'di tempo fa per alleviare un po' di fastidiosi problemi di debug:
#!/bin/bash
function bashtrap()
{
echo
echo -n "[+] stopping klogd ... "
pids=`ps aux | grep klogd | awk '{print $2}'`
for pid in $pids
do
kill SIGTERM $pid 2> /dev/null
done
echo "done"
if [ $1 ]
then
exit;
fi
}
sync
bashtrap
klogd -x -f - -n -c 8 2>&1 1 | tee klog.txt & klog_pid=$!;
echo "[+] klogd started"
echo "[+] press ctrl+c to exit ... $klog_pid"
sync
trap "bashtrap 1" SIGINT
while [ 1 ]
do
sleep 3
echo -n "."
done
ps aux | grep klogd
Il printk(9)
la pagina man ha un molto un po 'di informazioni su di esso. In breve, viene inviato al buffer di log, dove un demone syslog può prenderlo e gestirlo. Viene anche inviato alla console se il suo loglevel è sufficientemente alto (vedi dmesg(1)
per quel pezzettino).
Cercare /dev/kmsg
sul tuo sistema.