printk - отображается в журнале сообщений, но не в терминале для любого уровня журнала ядра - PullRequest
2 голосов
/ 31 января 2010

Я делаю некоторые модификации ядра и пытаюсь заставить printk выводить информацию обратно на консоль. Я передаю любой уровень журнала ядра и не получаю должного ответа на консоли даже для самых высоких уровней журнала.

Я проверил, и текущая конфигурация журнала для printk - 4 4 1 7.

Правильно печатается каждый раз в журналах. Я могу использовать dmesg | меньше и вижу, что это добавлено в журнал. Но я не могу вернуть его на консоль должным образом, используя printk.

Я не уверен, что это имеет значение, но я использую SSH для подключения к удаленной машине, где существует модифицированное ядро.

Я пробовал SSH из gnome-терминала и из putty в Windows. Ни то, ни другое не изменится. По-прежнему показывает printk в логах сервера, но не на моей консоли.

Есть ли способ вывести его на консоль? Что может пойти не так, если учесть, что я перепробовал все уровни журналов и ничего не работает? СПАСИБО!

Ответы [ 6 ]

3 голосов
/ 31 января 2010

Я считаю, что prink регистрирует только журналы на физических консолях, если вы хотите контролировать вывод ядра через произвольные ttys, тогда вам нужно будет использовать tail для мониторинга файла, записываемого syslog, или приложения, такого как xconsole специально контролирует / dev / console для сообщений.

0 голосов
/ 10 августа 2018

Попробуйте использовать

dmesg -wH &

для принудительной установки всех сообщений ядра, которые выводятся в dmesg (а также виртуальных терминалов, таких как Ctrl + Alt + F1, в зависимости от уровня вашего журнала / proc / sys / kernel / printk и уровня вашего сообщения ) , также появиться на вашей консоли SSH или GUI: Konsole, Terminal или что вы используете! И, если вам нужно следить только за конкретными сообщениями:

dmesg -wH | grep ERR &

Я использую его для отслеживания сообщений об «ОШИБКАХ», таких как

printk(KERN_EMERG "ERROR!\n");

что я печатаю из моего драйвера

0 голосов
/ 24 апреля 2012

Просто чтобы убедиться, что вы находитесь на уровне инициализации 3 (текстовый режим), не так ли? Если вы запустили startx и работаете в графическом режиме, вы не увидите ничего на терминале.

0 голосов
/ 01 февраля 2010

Если это для отладки - просто хвост /var/log/messages. Если вам нужен стабильный вывод из вашего модуля ядра - создайте символьное устройство или файл в /proc и прочитайте оттуда пользовательский процесс.

0 голосов
/ 31 января 2010

Некоторые дистрибутивы исправляют printk, чтобы он не отображался (Red Hat был первым, Ubuntu делает это слишком быстро) - вы, вероятно, нажали это.

0 голосов
/ 31 января 2010

Я считаю, что некоторые варианты syslog поддерживают это без внесения изменений в ядро, возможно, путем входа в / dev / console. Есть ли какая-то конкретная причина, по которой вы пытаетесь изменить ядро, чтобы сделать это? Я предполагаю, что есть более простой способ.

...