Недавно я видел несколько упоминаний о DKMS, но не совсем понятно, что на самом деле он делает в моей системе.
Что на самом деле делает DKMS и как мне его использовать?
Недавно я видел несколько упоминаний о DKMS, но не совсем понятно, что на самом деле он делает в моей системе.
Что на самом деле делает DKMS и как мне его использовать?
Ответы:
Пакет DKMS (поддержка динамического модуля ядра) ( http://linux.dell.com/dkms/ ) обеспечивает поддержку установки дополнительных версий модулей ядра. Пакет компилируется и устанавливается в дерево ядра. Удаление восстанавливает предыдущие модули. По умолчанию установка выполняется в текущем дереве ядра, но любое дерево ядра можно выбрать с помощью параметров командной строки. Кроме того, DKMS вызывается автоматически при установке новых пакетов образа ядра Ubuntu, и поэтому модули, добавленные в DKMS, будут автоматически переноситься через обновления.
обзор
Чтобы использовать модуль с DKMS, нужно поместить установочные файлы модуля (могут быть исходный код или двоичный файл) в / usr / src / - вместе с файлом конфигурации dkms.conf, который сообщает DKMS, как построить / настроить модуль и как его имя это. В более сложных сценариях система dkms может выполнять инструкции условного построения и исправления, но, учитывая ваш случай, это может не потребоваться.
Прохождение
Допустим, вы хотите установить модуль для своего модного «Awesome Adapter». Вам дан источник
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, команды patch и т. Д. Файл 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
Более подробную информацию можно найти здесь: