Дерево страниц

Сборка модуля ядра отдельно от дерева исходного ядра


1. Установить пакет с заголовочными файлами (linux-headers-...)
2. Создать рабочий каталог
3. Скопировать в него исходные коды модуля
4. Перейти в рабочий каталог
5. Создать Makefile вида:

obj-m = <название-драйвера>.o
        KVERSION = $(shell uname -r)
        all:
        	make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
        clean:
        	make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

6. Выполнить команду make
7. Полученный файл <название-драйвера>.ko скопировать в /lib/modules/<версия- ядра>/<путь-до-модуля-ядра>
8. Выполнить команду sudo depmod -a

Сборка модуля ядра с помощью dkms


1. Установить пакет dkms и пакет c заголовочными файлами ядра (linux-headers-...)
2. Создать рабочий каталог по пути /usr/src/<название-драйвера>-<версия>
3. Скопировать исходные коды в рабочий каталог
4. Создать в рабочем каталоге конфигурационный файл dkms.conf вида:

PACKAGE_NAME="<название-драйвера>"
PACKAGE_VERSION="<версия>"
BUILT_MODULE_NAME[0]="<название-драйвера>"
DEST_MODULE_LOCATION[0]="<путь-до-модуля-ядра>"
AUTOINSTALL="yes"

5. Создать в рабочем каталоге Makefile вида:

obj-m = <название-драйвера>.o
        KVERSION = $(shell uname -r)
        all:
        	make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
        clean:
        	make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

6. Добавить исходный код данного модуля в дерево DKMS:

sudo dkms add -m <название-драйвера> -v <версия>

7. Собрать драйвер командой:

sudo dkms build -m <название-драйвера> -v <версия>

8. Проинсталлировать драйвер командой:

sudo dkms install -m <название-драйвера> -v <версия>

9. При обновлении ядра и заголовочных файлов данный модуль будет автоматически пересобран.

  • Нет меток