web-dev-qa-db-fra.com

Où printk () imprime-t-il?

Juste une petite question sur la fonction printk () au niveau du noyau, si j'appelle cela, où le message sera-t-il imprimé? (J'utilise Ubuntu sur i386 Arch avec le dernier téléchargement du noyau)

ne le trouve nulle part,

Si quelqu'un pouvait aussi m'orienter dans la bonne direction pour une sorte de manuel pour la fonction printk (), ce serait génial!

29
molleman

dmesg devrait afficher les messages printk.

32
Alan Haggai Alavi

printk les messages vont dans le tampon de messages du journal du noyau, qui peut être exposé de différentes manières selon la configuration du système. La commande Shell dmesg les affichera et ils devraient également être copiés dans des fichiers dans /var/log par le démon syslog. Il est possible de les connecter à une console série ou à un terminal virtuel en mode texte, mais je ne me souviens pas à quel point.

13
zwol

Si vous avez mis des instructions printk() dans le module noyau pour déboguer et essayer de capturer les sorties au fur et à mesure qu'elles sont imprimées, ce que vous recherchez est klogd. Effectuez un man klogd pour plus d'arrêts et d'options.

Voici un script d'encapsulation pour klogd que j'ai codé il y a quelque temps pour soulager la douleur de débogage rapide:

#!/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
3
gsbabil

La page de manuel printk(9) contient très un petit peu d'informations. En bref, il est envoyé au tampon de journal, où un démon syslog peut le récupérer et le gérer. Il est également envoyé à la console si son niveau de journalisation est suffisamment élevé (voir dmesg(1) pour ce bit).

2

Chercher /dev/kmsg sur votre système.

2
ichabod