Serg79, depmod сделал?
Делал, не помогло, сообщение об ошибке идентичное. Функция
register_chrdev находиться в самом ядре.
План действий был такой:
1 - установил (с CD) исходники ядра из которых собиралось ядро дистрибутива (думаю, что те самые
)
2 - загрузил файл конфигурации ядра из
/boot/.config3 - собрал ядро (модули не стал собирать)
Собрал свой тестовый модуль командой:
make -C /usr/src/linux SUBDIRS=$PWD modulesСборка происходит без ошибок.
Вот исходный текст вызывающий
register_chrdev:
int init_module(void)
{
number = register_chrdev(0,DEVICE_NAME,&fops);
if( number < 0 ) {
printk("Registering the character device failed with %d\n",number);
return Major;
}
...
return 0;
}
Что самое интересно, все остальные связи разрешаються без проблем, даже
unregister_chrdev.
Вначале думал, что исходное ядро в системе собранно другой версией
GCC, пересобирал ядро версиями: 2.95, 2.96, 3.3, не помогло, эффект тот же. Кстати, я заметил такую вешь, адреса функций при этом не меняються.
Я думаю, может они поверх этого ядра еще какие то патчи накладывали и поэтому эта функция сдвинулась.