Сборка модуля для работы в различных версиях ядра Linux

Тема в разделе "WASM.UNIX", создана пользователем featurelles, 5 фев 2010.

  1. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Интересует такая вещь.
    Когда компилирую свой модуль для версии ядра скажем 2.6.31.4 ОС отказывается его подключать по средствам команды insmod на ядрах: 2.6.31.6 , 2.6.31.4-desktop-1mnb и тд... . И приходится каждый раз перекомпилировать модуль, под текущую версию ядра.
    Интересует следующее, как сделать так, чтоб модуль скомпилированный на 2.6.31.4 , подгружался в ядро... на 2.6.31.6 (как избежать перекомпиляции модуля)
     
  2. stmia

    stmia New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2009
    Сообщения:
    35
    уберите из своего модуля символ vermagic. Автоматизировать процесс можно
    закомментив соответствующие строчки в /usr/src/linux/scripts/mod/modpost.c::add_header() и пересобрав модуль.

    однако я должна предупредить что это чревато неприятностями ибо вендоры имеют привычку накладывать разные
    патчи на вроде бы ядра одной версии. кроме того в минорных версиях тоже может поменятся abi
     
  3. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    stmia
    вопрос - будет ли он работать?
    можно ли в линухе собрать версия-независимый модуль ядра?
    такой чтобы или грузился и работал или говорил - не найден символ ХХХ, лоад файлед?
    не "хелло ворлд" а что-нибудь практически интересное, например файл-систем-фильтр?
    спасибо
     
  4. stmia

    stmia New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2009
    Сообщения:
    35
    теоретически можно, но набор api которым он может пользоваться будет оччень сильно ограничен.
    на практике - это похлеще чем ходьба по минному полю. сигнатуры одних и тех же функций и
    одни и те же структуры могут очень сильно меняться от версии к версии. стеки и взаимодействие между уровнями одного стека -тоже.

    стек VFS в linux коротенький, такого понятия как файл-систем-фильтр (в том виде как оно понимается
    в windows) нету :)
     
  5. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    z0mailbox
    Те кому очень хочется делают иначе. Ведь код модуля делится на две части, интерфейс к ядру и собственно модуль. Модуль распространяется объектником, интерфейс в виде .c файла.
    В качестве примера могу привести дрова от nvidia. Когда-то давным давно я в таком же виде имел дрова на winmodem.
     
  6. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    stmia
    VFS как я понял и не предназначался и для создания фильтров
    жаль что линукс лишен такой полезной возможности
    глупо получается - несколько драйверов железа снизу и файлсистем драйвер сверху БЕЗ СОРЦОВ
    и никак не влезть между
    неполноценная операционка ИМХО
    r90
    проблема в самой необходимости компиляции
    у меня продукт ставится на ESX где GCC нет и тащить его с собой ну очень не хочется
     
  7. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    в сорцах есть файлик где линус пишет, почему "в топку бинарную совместимость" читаем, а потом плюемся, ну и не забываем про переносимость и все такое.
     
  8. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    z0mailbox
    Мои соболезнования. Я тоже не переношу связываться со всей этой пропиетарщиной. Вечно она создаёт проблем больше, чем решает. Но, увы и ах, такова жизнь.
     
  9. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    спасибо попробую всеми силами избежать модуля ядра
     
  10. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support
     
  11. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Без перекомпиляции никак.
    binary blob делай. В чём проблемма?
    читай /usr/src/linux/Documentation/kbuild/modules.txt. пункт 4.2
     
  12. rdtsc

    rdtsc Параллелепипедов Артем

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    180
    Адрес:
    Москва
    попробуй Module versioning support укзать при сборке ядра..а потом компили и вставляй, компили и вставляй..модули
    CONFIG_MODVERSIONS=y , хотя я сам это не помню чтобы пробовал..но судя по описанию,подходит