Пишу драйвер под 2.6 (-1 Invalid module format)
Модератор: Модераторы разделов
Пишу драйвер под 2.6
Делаю как рассказано здесь: http://www.linuxshare.ru/docs/linux/driver...2_ch2.html#t2_3
Компилируется всё, генерятся какие-то "посторонние" файлы, ну и сам модуль iso.ko
Скармливаю его modprob'у - он говорит, что модуль не найден
insmod говорит Invalid module format
В чём может быть дело?
Компилируется всё, генерятся какие-то "посторонние" файлы, ну и сам модуль iso.ko
Скармливаю его modprob'у - он говорит, что модуль не найден
insmod говорит Invalid module format
В чём может быть дело?
- Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Пишу драйвер под 2.6
Zeus писал(а): ↑26.04.2007 20:15Делаю как рассказано здесь: http://www.linuxshare.ru/docs/linux/driver...2_ch2.html#t2_3
Компилируется всё, генерятся какие-то "посторонние" файлы, ну и сам модуль iso.ko
Скармливаю его modprob'у - он говорит, что модуль не найден
insmod говорит Invalid module format
В чём может быть дело?
А ядро какое? 2.6?
Я делал по вот этой книге
http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html
пару лет назад со студнями. Сейчас проверил, вот этот пример оттуда (слегка видоизмененный)
Код: Выделить всё
/*
* hello-1.c - The simplest kernel module.
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_ALERT */
int init_module(void)
{
printk("<1>Hello world 1.\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
void cleanup_module(void)
{
printk(KERN_ALERT "Goodbye world 1.\n");
}
компилится и прекрасно вставляется командой insmod (modprobe тебе не подойдет, она ищет модули только в определенных директориях) в ядро
Код: Выделить всё
uname -a
Linux laptop 2.6.20.3-mine #2 PREEMPT Fri Mar 23 19:02:22 EDT 2007 i686 pentium4 i386 GNU/Linux
И еще, ссылки на исходники ядра (/usr/src/linux) правильно указаны?
- polachok
- Бывший модератор
- Сообщения: 2199
- Статус: главный форумный маргинал
- ОС: gnu/linux
- Контактная информация:
Re: Пишу драйвер под 2.6
Я делал по вот этой книге
http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html
ням-ням! спасибо дядя Фёдор, надеюсь теперь разработка моего драйвера факториала пойдет быстрее (:
И немедленно выпил.
Re: Пишу драйвер под 2.6
Добрался опять до своего драйвера.
Итак, /var/log/messages:
Apr 27 11:09:59 zeus kernel: iso813: disagrees about version of symbol struct_module
Далее, у меня чехарда с ядрами:
uname -r показывает: 2.6.15-1.2054_FC5
(это Fedora Core 5).
А /lib/modules/2.6.15-1.2054_FC5/build (символическая ссылка в /usr/src/kernels/2.6.15-1.2054_FC5-i686) указывает "в пустоту".
У меня нет исходников именно моего ядра, под которым я работаю.
Производители дров (уже с несколькими сталкивался) пишут, что они не делают дрова для Red Hat'овских ядер, т.к. Red Hat'овцы их сильно перелопачивают по сравнению с оригинальными. Качайте, мол, ядра с kernel.org.
У меня есть ядро оттуда и его исходники лежат в /usr/src/kernels, но непосредственно при компиляции я сижу под Fedor'ским ядром.
Мне, получается, нужно скомпилировать ядро с kernel.org загрузиться под ним и под ним же компилировать драйвер?
Итак, /var/log/messages:
Apr 27 11:09:59 zeus kernel: iso813: disagrees about version of symbol struct_module
Далее, у меня чехарда с ядрами:
uname -r показывает: 2.6.15-1.2054_FC5
(это Fedora Core 5).
А /lib/modules/2.6.15-1.2054_FC5/build (символическая ссылка в /usr/src/kernels/2.6.15-1.2054_FC5-i686) указывает "в пустоту".
У меня нет исходников именно моего ядра, под которым я работаю.
Производители дров (уже с несколькими сталкивался) пишут, что они не делают дрова для Red Hat'овских ядер, т.к. Red Hat'овцы их сильно перелопачивают по сравнению с оригинальными. Качайте, мол, ядра с kernel.org.
У меня есть ядро оттуда и его исходники лежат в /usr/src/kernels, но непосредственно при компиляции я сижу под Fedor'ским ядром.
Мне, получается, нужно скомпилировать ядро с kernel.org загрузиться под ним и под ним же компилировать драйвер?
- Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Пишу драйвер под 2.6
Ну, так, конечно, тоже можно, но лучше, наверное, все-таки найти исходники того ядра, которое у Вас бегает и установить их. Мало ли для чего это еще может понадобиться...
Re: Пишу драйвер под 2.6
Я сижу на ядре 2.6.хх и пишу модуль для ядра 2.4.хх и ничего в этом плохого нет. Должны быть исходники того ядра под которое ты пишешь модуль и этого достаточно т.к. ядро не имеет права использовать другие библиотеки (функции) кроме своих встроенных.
Если хочешь использовать исходники от РедХата то поставь их, они там одни, просто надо положить к исходника файл конфигурирования ядра (может лежать в папке /boot и иметь название как у твоего ядра).
Главное чтобы была ссылка на исходники ядра (или чтобы они там лежали) с которыми ты работаешь в /usr/src/linux
Если хочешь использовать исходники от РедХата то поставь их, они там одни, просто надо положить к исходника файл конфигурирования ядра (может лежать в папке /boot и иметь название как у твоего ядра).
Главное чтобы была ссылка на исходники ядра (или чтобы они там лежали) с которыми ты работаешь в /usr/src/linux
Zeus писал(а): ↑27.04.2007 11:19Добрался опять до своего драйвера.
Итак, /var/log/messages:
Apr 27 11:09:59 zeus kernel: iso813: disagrees about version of symbol struct_module
Далее, у меня чехарда с ядрами:
uname -r показывает: 2.6.15-1.2054_FC5
(это Fedora Core 5).
А /lib/modules/2.6.15-1.2054_FC5/build (символическая ссылка в /usr/src/kernels/2.6.15-1.2054_FC5-i686) указывает "в пустоту".
У меня нет исходников именно моего ядра, под которым я работаю.
Производители дров (уже с несколькими сталкивался) пишут, что они не делают дрова для Red Hat'овских ядер, т.к. Red Hat'овцы их сильно перелопачивают по сравнению с оригинальными. Качайте, мол, ядра с kernel.org.
У меня есть ядро оттуда и его исходники лежат в /usr/src/kernels, но непосредственно при компиляции я сижу под Fedor'ским ядром.
Мне, получается, нужно скомпилировать ядро с kernel.org загрузиться под ним и под ним же компилировать драйвер?
Re: Пишу драйвер под 2.6
Всем спасибо: заработало.
Нашёл в дистрибутиве на DVD devel-пакет для моего ядра.
А на 5хCD - не было.
Теперь разбираюсь, почему printk выводит всё в /var/log/messages
Поиграл с уровнями протоколирования, позадавал всякие значения в /proc/sys/kernel/printk - не помогает.
Ладно, завтра продолжу.
Нашёл в дистрибутиве на DVD devel-пакет для моего ядра.
А на 5хCD - не было.
Теперь разбираюсь, почему printk выводит всё в /var/log/messages
Поиграл с уровнями протоколирования, позадавал всякие значения в /proc/sys/kernel/printk - не помогает.
Ладно, завтра продолжу.
Re: Пишу драйвер под 2.6
Вот тут:
http://www.linuxshare.ru/docs/linux/driver...2_ch4.html#t1_1
написано, что можно "поиграть" уровнями "логгирования" и тогда возможен вывод и в консоль.
Я только начал играть и поэтому ещё не победил.
Re: Пишу драйвер под 2.6
printk ("<0>...") выводит в консоль.
Пока забил - некогда возиться, надо дальше разбираться:
таймер в 3-5кГц реально получить?
Пока забил - некогда возиться, надо дальше разбираться:
таймер в 3-5кГц реально получить?