Компіляція модуля ядра вирішено

Коли збирається ядро, в конфіги збірки вказується, чи збирати драйвер, якщо збирати, то модулем або вшити. Ви можете взяти вихідні свого дистрибутивного ядра, якщо за замовчуванням драйвер збирається модулем, то просто збирати заново з латкою і замініть файл модуля. Якщо ж за замовчуванням вшиті, то доведеться вам поставити самозбірних ядро, напевно.

Це я розумію. У моєму випадку це слава богу окремий модуль. А оскільки крім цього модуля я нічого в ядрі міняти (патчить) не збираюся, а робити це доведеться на кожному оновленому ядрі, то я і подумав, що можливо є спосіб скомпілювати тільки цей модуль, як якщо б він компілювався разом з усім ядром, а потім цей скомпільований модуль просто поставити в ядро ​​замість колишнього непропатченних. Немає бажання кожен раз заводити цю шарманку на півгодини з ризиком втратити щось потрібне заради одного модуля.

Я не знав, тому допишу від себе. У .config потрібно ще відключити debug ядра, а то модулі збираються жахливих розмірів.

Сяк-так розібрався з помилками при компіляції модуля. Чомусь кострубато лягав патч. Довелося руками переписувати з патча в исходник фронтенда. Тепер make завершується файлом stv0900.ko ​​без помилок.
Однак модуль не працює. Після перезавантаження він не з'являється в lsmod'e, а у відповідь на примусовий запуск повертає помилку modprobe: ERROR: could not insert 'stv0900': Exec format error. Складається враження, що вихідні ядра не відповідають встановленим в системі.
Ось запара. Як це з'ясувати? Чому в прикладі исходник містить номер мікроверсіі від Убунту (2.6.24-21), а у мене скачується лише 3.13.0? Щось змінилося з появою третьої версії ядра?

Так, і якщо кому цікаво, скрипт від TBS створював модулі в папці dvb / frontend, а в кубунте ці модулі зберігаються в папці dvb-frontend, тому систему клинило.

Схожі статті