unvo Опубликовано 4 декабря, 2008 Жалоба Опубликовано 4 декабря, 2008 Написал модуль ядра типа Hello World. вот метод инициализации модуля: static int __init hello_init(void) { printk("<0> Hello World\n"); return 0; } Модуль загружается, но ничего на консоль не выводит. Вот содержимое файла: # cat /proc/sys/kernel/printk 4 4 1 7 /var/log/messages содержит сообщение. Об этом же говорит и dmesg. Но на консоли не вижу. В чем хитрость-то? Цитата
AccessD Опубликовано 4 декабря, 2008 Жалоба Опубликовано 4 декабря, 2008 а вы его в консоли и не должны видеть. только в логах Цитата
unvo Опубликовано 4 декабря, 2008 Автор Жалоба Опубликовано 4 декабря, 2008 А почему? Я раньше писал драйверы для разных контроллеров под Linux'ом и uClinux'ом. И там это был основной способ отладки - вывод на консоль. И Рубини пишет, что если в printk строка loglevel с более высоким приоритетом, чем значение системной переменной console_loglevel, то должен быть вывод непосредственно на консоль. А здесь я почему-то этого не наблюдаю. Цитата
Ineu Опубликовано 4 декабря, 2008 Жалоба Опубликовано 4 декабря, 2008 unvo писал(а) Thu, 04 December 2008 21:20 если в printk строка loglevel с более высоким приоритетом, чем значение системной переменной console_loglevel, то должен быть вывод непосредственно на консоль. Помнится, под 2.4 такое работало точно. Может быть, в 2.6 что-то изменили? Попробуйте другие версии ядер. Либо загрузитесь с init=/bin/sh, чтоб наверняка никакие инициализационные скрипты не повлияли, после чего подгрузите модуль. Цитата
cppmm Опубликовано 4 декабря, 2008 Жалоба Опубликовано 4 декабря, 2008 Извиняюсь за жестокий оффтоп, но как-то эта тема смущает в разделе SuSe Linux, вам не кажется? Цитата
unvo Опубликовано 5 декабря, 2008 Автор Жалоба Опубликовано 5 декабря, 2008 EvilShadow писал(а) Fri, 05 December 2008 01:56 unvo писал(а) Thu, 04 December 2008 21:20 если в printk строка loglevel с более высоким приоритетом, чем значение системной переменной console_loglevel, то должен быть вывод непосредственно на консоль. Помнится, под 2.4 такое работало точно. Может быть, в 2.6 что-то изменили? Попробуйте другие версии ядер. Либо загрузитесь с init=/bin/sh, чтоб наверняка никакие инициализационные скрипты не повлияли, после чего подгрузите модуль. По опыту знаю, что в 2.6 оно тоже работает. Не хотелось бы пересобирать ядро, должны же быть какие-то команды, позволяющие изменить поведение ядра. Цитата
unvo Опубликовано 5 декабря, 2008 Автор Жалоба Опубликовано 5 декабря, 2008 cppmm писал(а) Fri, 05 December 2008 02:35 Извиняюсь за жестокий оффтоп, но как-то эта тема смущает в разделе SuSe Linux, вам не кажется? Посоветуйте, где разместить этот топик? Цитата
Ineu Опубликовано 5 декабря, 2008 Жалоба Опубликовано 5 декабря, 2008 unvo писал(а) Fri, 05 December 2008 10:12 должны же быть какие-то команды, позволяющие изменить поведение ядра. sysctl. Но в этом случае, думаю, dmesg Цитата
unvo Опубликовано 5 декабря, 2008 Автор Жалоба Опубликовано 5 декабря, 2008 EvilShadow писал(а) Fri, 05 December 2008 11:47 unvo писал(а) Fri, 05 December 2008 10:12 должны же быть какие-то команды, позволяющие изменить поведение ядра. sysctl. Но в этом случае, думаю, dmesg Да, я могу сделать # sysctl kernel.printk=8 Но результат тот же, что и от других подобных действий типа # klog -c 8 или # echo 8 > /proc/sys/kernel/printk. Т.е. все равно приходится смотреть через dmesg. Цитата
cppmm Опубликовано 6 декабря, 2008 Жалоба Опубликовано 6 декабря, 2008 unvo писал(а) Fri, 05 December 2008 10:14 cppmm писал(а) Fri, 05 December 2008 02:35 Извиняюсь за жестокий оффтоп, но как-то эта тема смущает в разделе SuSe Linux, вам не кажется? Посоветуйте, где разместить этот топик? Где-то в разделе программирования. Во всяком случае, в этом топике нет ни слова про SuSe. Цитата
unvo Опубликовано 6 декабря, 2008 Автор Жалоба Опубликовано 6 декабря, 2008 cppmm писал(а) Sat, 06 December 2008 06:57 unvo писал(а) Fri, 05 December 2008 10:14 cppmm писал(а) Fri, 05 December 2008 02:35 Извиняюсь за жестокий оффтоп, но как-то эта тема смущает в разделе SuSe Linux, вам не кажется? Посоветуйте, где разместить этот топик? Где-то в разделе программирования. Во всяком случае, в этом топике нет ни слова про SuSe. Так и про программирование здесь ни слова А SuSu неявно подразумевается - такой у меня дистрибутив. Цитата
cppmm Опубликовано 8 декабря, 2008 Жалоба Опубликовано 8 декабря, 2008 "Написал модуль ядра типа Hello World" подразумевает программирование. А если бы вы в последнем сообщении не сказали, что у вас SuSe, я бы и не догадался. Предполагается, что в разделе про этот дистрибутив, решаются задачи, характерные именно для этого дистра. Ваша же проблема является общей для любых дистров. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.