Вопрос

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

Я пробовал использовать

родовое слово

но на моей консоли ничего не отображается.Однако он присутствует в общем коде кода.

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

и dmesg дает общий код кода

Это было полезно?

Решение

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

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

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

Другие советы

Йенс,

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top