Пеhенос скомпилированного модуля ядра Linux на другую машину?
Здравствуйте. Чем больше читаю информации по модулям ядра, тем больше возникает вопросов. Могу ли я скомпилировать модуль ядра на одной машине и перенести этот скомпилированный модуль на другую. Ядро у этих машин как правило совпадает(максимум может отличаться на несколько версий, например 3.0.1 и 3.0.22), тип процессора одинаковый. Вроде есть VERMAGIC для определения совпадения версии, есть еще module versioning, которая cравнивает хеши символов модуля и ядра. Успешная загрузка модуля также зависит от конфига ядра и module.symversions. Так могу ли я скомпилировать модуль на одной машине и просто скопировать его на остальные?
могу ли я скомпилировать модуль на одной машине и просто скопировать его на остальные?
Можешь. Но загрузить такой модуль без проблем ты сможешь только если совпадают версии ядра и основные опции в .config ядра. Ну либо если отключишь проверку версии модулей в конфиге. Иначе -- только modprobe --force.
--force опасно, если не знать что делаешь. а разве module.symvers совпадать не должен. или связывание с ним происходит на этапе загрузки модуля и происходит связывание ли вообще?
Ну уже реши пожалуйста, знаешь ты, что делаешь, или нет.
а разве module.symvers совпадать не должен.
Должен. Но он и будет совпадать, потому что никто не будет менять прототипы экспортируемых функций в одной ветке stable. Глава 6 https://www.kernel.org/doc/Documentation/kbuild/mo... должна дать ответы на твои вопросы.
Важно чтобы совпадали не только прототипы функций, но и формат внутренних структур ядра. В отличие от module.symvers для прототипов, нет никакого механизма проверки совместимости формата структур.
Да. Можешь.
Архитектура у обоих процессоров должна быть одинакова.
И в Ядре включено поддержка модулей.
И желательно Ядра одинаковые, а то попадешь на Шину ISA, в одном поддерживается, а в другом выключена. Но у тебя вроде все хорошо, кроме сторонних модулей - там зависимости могут возникать. Проверяй что бы драйвера одинаковые были.