1

Мне нужна была более новая версия модуля ядра в довольно старом ядре.

Как я могу заменить один модуль ядра основного ядра Linux и скомпилировать только этот модуль?

1 ответ1

2

Одно предупреждение: нет гарантии, что новая версия драйвера совместима со старым ядром. Но стоит попробовать.

  1. Найдите более новый драйвер в ядре. Есть два варианта: Вы можете использовать оригинальный драйвер ядра из git ядра, например, по адресу https://github.com/torvalds/linux/tree/master/drivers. Удобно выбрать тег, чтобы найти нужную версию ядра. Загрузите определенные thedriver.h и thedriver.c и поместите их в новый каталог.

    Второй вариант - получить новое ядро Ubuntu с http://packages.ubuntu.com или через apt-get source ...

  2. Установите пакеты build-essentials и linux-kernel-headers

  3. Теперь мы создадим 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
    
  4. Теперь в этом каталоге введите make для компиляции драйвера.

  5. Если все работает хорошо, должен быть создан файл thedriver.ko , который можно поместить в папку /lib/modules/$kernelversion/kernel/drivers (не забудьте создать резервную копию)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .