hiber писал(а):
Есть xUbuntu 11.10 на лаптопе и xUbuntu 11.10 под vBox на этой же машинке.
Есть простой пример, который билдится и подключается на обоих системах,
но на лаптопе сбилженный модуль не подключается на xUbunt'e под vBox:
insmod: error inserting 'test.ko': -1 Invalid module format
Кросс компилировал по этой доке
http://www.linuxcenter.ru/lib/books/lkm ... ILEDKERNEL
Системы ставил из одного .iso, разница, максимум, в последующих обновлениях системм.
1. так что
кросс-компилировать модуль под другое (пусть и самое близкое) ядро - дело не совсем простое...
2. стоит вам при сборке ядра (своего рабочего, ничего, ни на грамм не меняя в конфигурациях - для тренировки
) поменять в Makefile одну (4-ю) строку:
- и ваше собранное ядро будет называться как-то так: 3.0.9.my-OWN
- и в этом ядре
ни один из ваших ныне работающих модулей не станет грузиться ... только из-за названия!
Ali писал(а):В общем случае надо строить ядро,
3. А
в общем случае, для сборки хотя бы и
одного модуля под ядро X.Y.Z вам нужно (что и BuildRoot делает в полном объёме для кросс-компиляции):
- найти и download исходные коды ядра X.Y.Z ... развернуть это дерево где-то:
- это для ядра 3.0.9 как пример: и для download и для "развернуть"...
- теперь вам нужно собрать ядро+модули (из исходных кодов), для этого вам нужно: а). на этом устройстве (где развернуть) иметь 2.5-3Gb свободного пространства + б). 1-3 часа своего свободного времени
на компиляцию-сборку ... это на средне-быстром процессоре (1-2Ghz), ну а если на более стареньком, то можете на ночь запускать ... только предусмотреть наперёд, чтобы все вопросы-ответы были уже отвечены...
- и ещё при этом не намудрить (и проследить) с EXTRAVERSION ...
- ... ну и всё
... - теперь вы вправе компилировать-собирать свой тривиальный пробный модуль.
P.S. Окинув всё это взглядом ... какая-то грустная история получается
Невольно приходит на ум ... как там было в "Ирония судьбы":
" ... какое же, всё-таки, говно это ваше монолитное ядро ..."(с).
P.P.S. и уж Linux особенно ... потому как связывание с символами ядра из модуля, по крайней мере, можно было бы сделать не по абсолютным адресам ("пальцем в небо"), а, хотя бы, через динамическую таблицу переходов (такую как /proc/kallsyms).
Да только "жаба давила", как я понимаю ... причём "жаба" даже в нескольких аспектах "давила"