Модуль ядра: как получить консольный вывод? - PullRequest
5 голосов
/ 22 февраля 2012

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

Я пытался использовать

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

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

Дополнительная информация: Я использую 32-битный Intel x86 с linux-3.0.0

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

Ответы [ 3 ]

7 голосов
/ 13 апреля 2012

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

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

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

3 голосов
/ 02 июля 2012

Jens,

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

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

0 голосов
/ 22 февраля 2012

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

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

...