Мне нужна была более новая версия модуля ядра в довольно старом ядре.
Как я могу заменить один модуль ядра основного ядра Linux и скомпилировать только этот модуль?
Одно предупреждение: нет гарантии, что новая версия драйвера совместима со старым ядром. Но стоит попробовать.
Найдите более новый драйвер в ядре. Есть два варианта: Вы можете использовать оригинальный драйвер ядра из git ядра, например, по адресу https://github.com/torvalds/linux/tree/master/drivers. Удобно выбрать тег, чтобы найти нужную версию ядра. Загрузите определенные thedriver.h
и thedriver.c
и поместите их в новый каталог.
Второй вариант - получить новое ядро Ubuntu с http://packages.ubuntu.com или через apt-get source ...
Установите пакеты build-essentials
и linux-kernel-headers
Теперь мы создадим make-файл для этого отдельного модуля, как показано на cyberciti.biz, thedriver.o
должен быть заменен именем драйвера.
В папке, содержащей код драйвера, создайте файл Makefile
со следующим содержимым:
obj-m += thedriver.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Теперь в этом каталоге введите make
для компиляции драйвера.
Если все работает хорошо, должен быть создан файл thedriver.ko
, который можно поместить в папку /lib/modules/$kernelversion/kernel/drivers
(не забудьте создать резервную копию)