Что делает DKMS? Как мне это использовать?

Недавно я видел несколько упоминаний о DKMS, но не совсем понятно, что на самом деле он делает в моей системе.

Что на самом деле делает DKMS и как мне его использовать?

23
задан 21 January 2014 в 13:42

1 ответ

Пакет 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

  1. Команда для сборки модуля (запустите make в каталоге src /).
  2. Команда для очистки дерева исходного кода (запустите make clean в каталоге src /).
  3. Имя модуля без расширения .o или .ko. На самом деле это может быть массив модулей, если построено несколько модулей, см. Man dkms.
  4. Где DKMS может найти встроенный модуль.
  5. Имя и версия DKMS должны ассоциироваться с модулем (ами).
  6. Чтобы переделать образ 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

Дополнительную информацию можно найти здесь:

0
ответ дан 21 January 2014 в 13:42

Другие вопросы по тегам:

Похожие вопросы: