DKMS
DKMS (Dynamic Kernel Module Support) — фреймворк для Linux, созданный для автоматической пересборки и установки модулей ядра при обновлении версии ядра операционной системы. DKMS должен решать проблему несовместимости бинарных модулей ядра между различными версиями ядра Linux, чтобы не произошло так сказать сгавка системы.
Описание[править]
DKMS была разработана компанией Dell в начале 2000-х годов для упрощения управления драйверами в корпоративной среде. Первоначально система создавалась для внутренних нужд Dell, потом выпущена как открытое программное обеспечение. После этого технология оказалась восрана во многие дистрибутивы Linux, в числе которых такие властные, как Ubuntu, Debian, Fedora, openSUSE.
Основная идея DKMS заключается в хранении исходного кода модулей ядра в специальной директории (обычно /usr/src/) вместе с инструкциями по их сборке. При установке нового ядра или обновлении существующего DKMS автоматически компилирует все зарегистрированные модули для новой версии ядра, для чего потужно исследует конфигурационные файлы.
При добавлении модуля в систему DKMS регистрирует его исходный код и конфигурационный файл dkms.conf, содержащий информацию о названии модуля, версии и параметрах сборки. При обновлении ядра система автоматически запускает процесс сборки для всех зарегистрированных модулей. После успешной компиляции модули автоматически устанавливаются в директории для новой версии ядра, обычно в /lib/modules/$(uname -r)/.
Проприетарные графические драйверы NVIDIA и AMD используют DKMS для обеспечения совместимости с различными версиями ядра. Драйверы для специализированного оборудования разнообразных вторичных устройств также радуются существования DKMS, ибо оно значительно опрощает им жизнь.
Существует несколько альтернативных вариантов. Некоторые дистрибутивы предпочитают включать драйверы непосредственно в основное ядро Linux, это устраняет необходимость в сторонних модулях. Механизм модулей ядра с подписью обеспечивает безопасность, но не решает проблему совместимости версий. AKMS, используемый в Mageia, делает нечто похожее, но в своём собственном, вялом стиле.
Структура[править]
Основная утилита командной строки dkms предоставляет интерфейс для управления модулями. Конфигурационный файл dkms.conf для каждого модуля определяет параметры сборки, зависимости и специфические настройки компиляции. Система использует хуки пакетного менеджера, которые автоматически запускаются при установке или удалении пакетов ядра. Директория /var/lib/dkms/ служит для хранения метаданных о состоянии модулей, включая информацию о том, для каких версий ядра модули были собраны.
Базовые команды DKMS: dkms add для добавления модуля в систему, dkms build для компиляции модуля для текущего ядра, dkms install для установки скомпилированного модуля, dkms remove для удаления модуля из системы, и dkms status для просмотра состояния всех зарегистрированных модулей.