2012-02-22 2 views
5

Я пишу модуль ядра, и я хочу, чтобы иметь возможность печатать что-то на выход консоли при загрузке с помощью insmod module.ko.Модуль ядра: как получить консольный выход?

Я попытался с помощью

printk(KERN_EMERG "test kernel emergency\n"); 

но на моей консоли ничего не появляется. Однако он появляется в dmesg.

Дополнительно:
Я использую Intel x86 32 бит с Linux-3.0.0

и cat /proc/sys/kernel/printk дает 4 4 1 7

+0

Использование KERN_INFO будет печатать в/var/log/messages, возможно, KERN_EMERG тоже распечатывает этот файл – Warer

ответ

7

1- убедитесь, что вы в полном терминальном режиме (нажмите Alt + Ctrl + f1)

2- вместо printk(KERN_EMERG "test kernel emergency\n"); попробовать

printk(KERN_ALERT "test kernel alert\n");

0

Вы должны изменить свой системный журнал для печати сообщений аварийного ядра на консоль (или конкретных пользователей или ttys).

Существует много демонов syslog, если вы не контролируете тот, который используете, а вы не root - вам не повезло. Если вы контролируете тот, который вы используете, syslog-ng довольно хорош и имеет примеры того, как это сделать в его руководстве.

+0

Не могли бы вы привести пример? Мне очень сложно понять 'syslog-ng' как не эксперт. –

3

Jens,

printk ouputs отправляются в ядро ​​и собираются демонами syslogd. dmesg перекликается с данными, собранными демоном syslogd.

Это сообщение не может быть напечатано вашей консолью (откуда вы указали insmod), если вы используете графическую версию linux. Я пробовал это в ubuntu и не печатал сообщения printk, даже если уровень журнала ALERT или EMERGENCY.

 Смежные вопросы

  • Нет связанных вопросов^_^