Недавно я видел несколько упоминаний о DKMS, но не совсем понятно, что на самом деле он делает в моей системе.
Что на самом деле делает DKMS и как мне его использовать?
Пакет DKMS (поддержка модулей динамического ядра) ( http://linux.dell.com/dkms/ ) поддерживает установку дополнительных версий модулей ядра. Пакет компилируется и устанавливается в дерево ядра. Удаление восстанавливает предыдущие модули. По умолчанию установка выполняется в текущем дереве ядра, но любое дерево ядра можно выбрать с помощью параметров командной строки. Кроме того, DKMS вызывается автоматически при установке новых пакетов образа ядра Ubuntu, и поэтому модули, добавленные в DKMS, будут автоматически переноситься через обновления.
Обзор
Чтобы использовать модуль с DKMS, необходимо поместить установочные файлы модуля (могут быть исходный код или двоичный файл) в / usr / src / - вместе с файл конфигурации dkms.conf, который сообщает DKMS, как собирать / настраивать модуль и как его имя. В более сложных сценариях система dkms может выполнять инструкции условного построения и исправления, но, учитывая ваш случай, это может не потребоваться.
Пошаговое руководство
Допустим, вы хотите установить модуль для своего модного «Удивительного адаптера». Вам дан источник
tarball awesome-20091211-v1.1.tgz
.С помощью DKMS мы расскажем DKMS, как это сделать, создав файл dkms.conf с соответствующими записями. Например, после того, как мы распаковали архив:
# cd awesome-20091211-v1.1/
# touch dkms.conf
# create dkms.conf file
# vi dkms.conf
Внутри
dkms.conf
, мы можем добавить строки:
MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes
Все каталоги соответствуют местоположению файла dkms.conf. Это говорит DKMS
- Команда для сборки модуля (запустите make в каталоге src /).
- Команда для очистки дерева исходного кода (запустите make clean в каталоге src /).
- Имя модуля без расширения .o или .ko. На самом деле это может быть массив модулей, если построено несколько модулей, см. Man dkms.
- Где DKMS может найти встроенный модуль.
- Имя и версия DKMS должны ассоциироваться с модулем (ами).
- Чтобы переделать образ initrd после установки модуля.
Вы также можете добавить опции для вызова сценариев до или после сборки или установки, предоставить дополнительные (условные) команды make, команды исправления и т. Д. Файл dkms.conf фактически создается из сценария оболочки, так что количество обмана может быть сделано в случае необходимости. Эти и другие параметры описаны в разделе dkms.conf в man dkms.
Затем мы устанавливаем модуль в DKMS, копируя установочные файлы модуля в дерево исходных кодов ядра / usr / src / - и сообщаем DKMS о новом модуле:
# ls
README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
dkms does its thing...
Это оно! DKMS теперь добавил наш модуль в свой список модулей для сборки для будущих установок ядра. Чтобы убедиться, что он работает и установить модуль в наше текущее ядро, мы можем дать команду dkms на сборку и установку модуля:
# sudo dkms build -m awesome -v 1.1
dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
dkms does its thing.... module is copied into current kernel module tree
Если вам повезет, ваш модуль будет установлен и переустановил в будущие обновления ядра.
Примеры
Справочная страница DKMS содержит полезную информацию о настройке вашего любимого модуля ядра для использования с DKMS. Это не полная документация, но она ответит на множество вопросов. Это может помочь вам отметить следующие примеры, даже если используемые модули не являются теми, которые вы хотите установить:
- RocketRaid - Два примера того, как настроить Highpoint RocketRaid драйверы RR26xx и RR62x с DKMS.
От: help.ubuntu.com
Дополнительную информацию можно найти здесь: