Компилируется всё, генерятся какие-то "посторонние" файлы, ну и сам модуль iso.ko
Скармливаю его modprob'у - он говорит, что модуль не найден
insmod говорит Invalid module format
Компилируется всё, генерятся какие-то "посторонние" файлы, ну и сам модуль 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 тебе не подойдет, она ищет модули только в определенных директориях) в ядро
Итак, /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 загрузиться под ним и под ним же компилировать драйвер?
Мне, получается, нужно скомпилировать ядро с kernel.org загрузиться под ним и под ним же компилировать драйвер?
Ну, так, конечно, тоже можно, но лучше, наверное, все-таки найти исходники того ядра, которое у Вас бегает и установить их. Мало ли для чего это еще может понадобиться...
Я сижу на ядре 2.6.хх и пишу модуль для ядра 2.4.хх и ничего в этом плохого нет. Должны быть исходники того ядра под которое ты пишешь модуль и этого достаточно т.к. ядро не имеет права использовать другие библиотеки (функции) кроме своих встроенных.
Если хочешь использовать исходники от РедХата то поставь их, они там одни, просто надо положить к исходника файл конфигурирования ядра (может лежать в папке /boot и иметь название как у твоего ядра).
Главное чтобы была ссылка на исходники ядра (или чтобы они там лежали) с которыми ты работаешь в /usr/src/linux
Итак, /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 загрузиться под ним и под ним же компилировать драйвер?
Нашёл в дистрибутиве на DVD devel-пакет для моего ядра.
А на 5хCD - не было.
Теперь разбираюсь, почему printk выводит всё в /var/log/messages
Поиграл с уровнями протоколирования, позадавал всякие значения в /proc/sys/kernel/printk - не помогает.
Ладно, завтра продолжу.