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, я бы и не догадался. Предполагается, что в разделе про этот дистрибутив, решаются задачи, характерные именно для этого дистра. Ваша же проблема является общей для любых дистров. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.