Модули в linux

Тема в разделе "WASM.UNIX", создана пользователем featurelles, 8 июн 2009.

  1. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Попытался разобраться с модулями в Linux, взял пример с одного сайта в рунете.

    файл называется hello-1.c

    Код (Text):
    1. #include <linux/module.h>  
    2. #include <linux/kernel.h>
    3.  
    4. int init_module(void)
    5. {
    6.         printk("<1>Hello world 1.\n");
    7.         return 0;
    8. }
    9.  
    10. void cleanup_module(void)
    11. {
    12.         printk(KERN_ALERT "Goodbye world 1.\n");
    13. }
    Создал Makefile с таким вот содержимым
    Код (Text):
    1. obj-m += hello-1.o
    в консоли
    uname -r выводит 2.6.22.19-desktop-2mdv
    В /usr/src/linux-2.6.22.19-2mdv Находятся исходники ядра ОС.
    Начинаю компилировать "модуль"
    make -C /usr/src/linux-2.6.22.19-2mdv SUBDIRS=$PWD modules
    ( хотя если по системе компилить то верно сделать так make -C /usr/src/linux-`uname -r` SUBDIRS=$PWD modules ) Но так как у меня есть исходники ядра linux-2.6.22.19-2md и нету 2.6.22.19-desktop-2mdv . Я произвожу сбору первым способом.

    После запуск make в консоли видим следующее.
    после команды ls -l
    [root@localhost driver]# insmod hello-1.ko пробую прилинковать к ядру , а мне пишут...
    insmod: error inserting 'hello-1.ko': -1 Invalid module format
    тоже самое и на: hello-1.mod.o hello-1.ko hello-1.o

    В чём мои действия не верны???
     
  2. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    в hello-1.c нет:
    Код (Text):
    1. module_init(init_module);
    2. module_exit(cleanup_module);
    и объявления MODULE_LICENSE("GPL").
     
  3. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    t00x
    Если можно? продемонстрируйте , как должен выглядеть код на примере hello-1.c
    А то после внесения мной изменений в первоначальный код, одни ошибки.
     
  4. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    http://www.ibm.com/developerworks/linux/library/l-lkm/figure1.jpg
     
  5. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    censored
    Скопировал код с картинки

    и компилятор выдаёт это

     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    M=$PWD?
    а у меня нет. что я делаю не так? :)
     
  7. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    censored
    В Makefile что записано?

    а если компилить так
    Это не будет совсем нагло?! по шагом ктонить может объяснить? что делается при создании модуля? как скомпилировать верно?
     
  8. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html
    п2.2
     
  9. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    censored
    У тебя какой дистрибутив?


    У меня Mandriva чёрт знает почему не могу модуль собрать.
    http://www.opennet.ru/docs/RUS/lkmpg26/#HELLOWORLDPART2 вот тоже самое описание, но на русском.
    Пробовал по этому описанию делать, не вышло
    пробовал по двум книгам... тоже самое

    Сейчас на вирт машину ставлю Mandriva 2009 посмотрю, получится ли на ней собрать модуль.
     
  10. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Windows XP
     
  11. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    censored
    Понятно, ладно буду разбираться сам ....... как всегда
     
  12. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    щяс поставлю хедеры, тоже попробую собрать
     
  13. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Clear__Energy
    Жду )
     
  14. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    чьорт.... ничего не пойму: хедеры поставил, как ни кручу, не собирается хоть тресни О_о
     
  15. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Clear__Energy
    в /usr/src/ исходники твоей версии ядра есть?


    и с таким кодом
    Код (Text):
    1. #include <linux/module.h>  
    2. #include <linux/kernel.h>
    3.  
    4. int init_module(void)
    5. {
    6.         printk("<1>Hello world 1.\n");
    7.         return 0;
    8. }
    9.  
    10. void cleanup_module(void)
    11. {
    12.         printk(KERN_ALERT "Goodbye world 1.\n");
    13. }
    сборка проходит хорошо, но готовый модуль выдаёт ошибку -1 Invalid module format
     
  16. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    featurelles
    да.
     
  17. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Clear__Energy
    какой дистрибутив?
     
  18. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    дебиан сидукс
     
  19. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Clear__Energy
    Сейчас ещё один код попробую и отпишусь
     
  20. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Что тока не робовал (
    всегда если модуль и компилируется то при insmod выдаёт -1 Invalid module format
    дальше буду на разных дистрибутивах пробовать