Подтвердить что ты не робот

Где printk() печатать?

Просто быстрый вопрос о функции printk() на уровне ядра, если я вызываю это, где будет печататься сообщение? (Я использую Ubuntu на i386 arch с последней загрузкой ядра)

не может найти его нигде,

Если бы кто-то мог указать мне в правильном направлении для какого-то руководства для функции printk(), это было бы здорово!

4b9b3361

Ответ 1

dmesg должен отображать сообщения printk.

Ответ 2

printk сообщения поступают в буфер сообщений журнала ядра, который может быть раскрыт различными способами в зависимости от конфигурации системы. Команда оболочки dmesg покажет их, и они также должны быть скопированы в файлы /var/log с помощью демона syslog. Возможно, они будут отправлены на последовательную консоль или в текстовый режим виртуального терминала, но я не помню, как это было.

Ответ 3

Если вы поместили несколько операторов printk() в модуль ядра для отладки и попыток захвата выходов по мере их печати, то вы ищете klogd. Выполните man klogd для большего количества задержек и опций.

Вот обертка script для klogd, которую я закодировал некоторое время назад, чтобы облегчить некоторую быструю отладочную боль:

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

Ответ 4

В man-странице printk(9) содержится очень маленькая информация. Короче говоря, он отправляется в буфер журнала, где демон syslog может забрать его и обработать. Он также отправляется на консоль, если его лог-уровень достаточно высок (см. dmesg(1) для этого бита).

Ответ 5

Найдите /dev/kmsg в своей системе.