2015-10-24 3 views
-2

Я добавил несколько примеров printk (KERN_ALERT "\ n"); в модуль драйвера. Эти отпечатки появляются, если я вручную вставляю драйвер. Но если один и тот же драйвер загружается во время загрузки, сообщения не отображаются.printk сообщения не отображаются, если модуль загружен во время загрузки.

Я уверен, что тот же модуль загружается во время загрузки, потому что я изменил имя автора модуля, чтобы оно появилось, когда я делаю $ modinfo. Модуль находится в исходном пути ядра, и я скомпилировал и $ make module_install.

Я бегу ubuntu 10.04 и версию ядра 3.14.2 Что мне не хватает?

Спасибо.

+0

* «Я запускаю ubuntu 10.04 и версию ядра 3.14.2» * - Это звучит не так. 10.04 LTS использует 2.6.30что-то. И почему тег для 'ubuntu-11.04? – sawdust

+0

По существу это звучит как проблема с синхронизацией по времени. Кто написал этот драйвер? Существуют ли ** printk() ** операторы, которые сообщают о том, что драйвер ** probe() ** был введен и успешно завершен? Существуют ли надлежащие проверки каждого кода возврата в процедуре ** init() **? Попробуйте заменить оператор ** module_init() ** на ** late_initcall() **. – sawdust

+0

Я скомпилировал и установил ядро ​​3.14.2 на ubuntu 10.04. Тег был ошибкой, удалит его. –

ответ

0

@silly_walker, если консоль не инициализирована, printk бесполезен, поскольку где еще он может перенаправлять вывод на ?, printk() может выводиться только при инициализации консоли. Если вы действительно хотите выпустить очень рано в процессе загрузки, попробуйте использовать «early_printk()». Пройтись ссылке ниже,

http://www.makelinux.net/books/lkd2/ch18lev1sec3

Надежда это решает проблему !!!

+0

Спасибо, но распечатки, которые должны появиться после инициализации, тоже не отображаются. Это сетевой драйвер, и у меня есть printk в функции xmit. Он должен печатать каждый раз, когда есть передача пакетов. –

+0

* «printk бесполезен, потому что где еще он может перенаправить вывод на?» * - Выход идет в буфер памяти до тех пор, пока консольное устройство не будет инициализировано. Затем выводится буфер. Если 'earlyprintk' настроен и включен, то этот вывод не буферизуется, а выводится устройством earlycon. Это устройство Earlycon удаляется после инициализации реальной консоли. – sawdust

+0

@sawdust, Спасибо за объяснение. –

0

Теперь я знаю, в чем была ошибка. Я не создавал inintramfs с новыми модулями. Таким образом, загружались старые драйверы во время загрузки старых initramfs. Спасибо всем.

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