Пакет dkms astra linux

Автоматическая сборка модуля ядра ОС с помощью фреймворка DKMS в Linux

Оригинал: How to build a kernel module with DKMS on Linux
Автор: Dan Nanni
Дата публикации: 8 апреля 2016 г.
Перевод: А.Панин
Дата перевода: 24 июля 2016 г.

Автоматическая сборка модуля ядра ОС с помощью фреймворка DKMS в Linux

Представьте, что вам понадобилось установить драйвер для недавно купленной графической карты, адаптера Wi-Fi или сетевой карты и по какой-то причине вы решили самостоятельно выполнить его компиляцию из доступных исходных кодов и установку (например, из-за того, что собранной версии драйвера, совместимой с вашей версией ядра ОС, попросту не существует, его собранная версия уже устарела или вам нужно использовать нестандартные параметры сборки). Для этого вы загрузили официальный исходный код этого драйвера, скомпилировали его версию, совместимую с вашей версией ядра ОС, установили скомпилированный модуль ядра ОС в систему и активировали его. Новое устройство было успешно распознано системой и начало корректно функционировать.

А теперь подумайте о том, что произойдет, если вы впоследствии обновите версию ядра ОС. Ваш драйвер был собран вне официального дерева исходных кодов ядра Linux, поэтому при обновлении версии ядра ОС драйвер перестанет корректно функционировать.

Как же решить данную проблему? Ну, вам придется повторно скомпилировать версию драйвера устройства, которая будет совместима с текущей версией ядра ОС, и установить ее в систему. Очевидно, что пересборка драйвера при каждом обновлении ядра ОС является не самым оптимальным решением.

В подобной ситуации может оказаться весьма полезным фреймворк динамической поддержки модулей ядра DKMS (Dynamic Kernel Module Support). Фреймворк DKMS позволяет осуществлять автоматическую пересборку модулей ядра Linux с использованием текущего дерева его исходных кодов по мере обновления версий. Производители аппаратного обеспечения нередко выпускают драйверы в виде пакетов DKMS, поэтому пользователи могут свободно обновлять версии ядер своих систем, не заботясь о сборке совместимых версий драйверов устройств. Конечный пользователь может настроить DKMS с целью автоматической пересборки любого драйвера устройства или модуля, исходный код которого не является частью официального дерева исходных кодов ядра Linux.

В рамках данной статьи я постараюсь продемонстрировать методику настройки механизма автоматической пересборки модуля ядра ОС на основе фреймворка DKMS в Linux.

Установка компонентов фреймворка DKMS в Linux

Вы можете установить компоненты фреймворка DKMS в различных дистрибутивах Linux таким же образом, как показано ниже. Для корректной работы DKMS необходим сборочный инструментарий (включающий такие инструменты, как gcc , make ) и набор заголовочных файлов, причем оба этих компонента должны автоматически устанавливаться силами менеджера пакетов программного обеспечения дистрибутива.

Debian, Ubuntu и Linux Mint:

В первую очередь следует подключить репозиторий EPEL, после чего достаточно выполнить следующую команду:

Автоматическая сборка модуля ядра ОС с помощью фреймворка DKMS

Теперь давайте разберемся с тем, как настроить фреймворк DKMS для автоматической пересборки модуля ядра ОС после обновления последнего. По сути, вам придется создать файл конфигурации DKMS для сборки и установки выбранного модуля ядра ОС в систему. После его создания установка всех обновлений ядра ОС будет инициировать пересборку заданного модуля средствами DKMS.

В данной статье я буду использовать в качестве примера модуль ядра ОС под названием ixgbe , который по своей сути является драйвером для сетевых карт производства компании Intel.

Во-первых, следует загрузить и распаковать архив исходного кода драйвера устройства в директорию /usr/src/ — .

После этого нужно создать файл конфигурации с именем dkms.conf в этой же директории.

Читайте также:  Драйвера для epson c67 для windows 10

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

Более простая эквивалентная команда:

Теперь нужно собрать версию данного модуля, совместимую с текущей версией ядра ОС:

В данном случае также может использоваться более простая эквивалентная команда:

Наконец, нужно установить модуль, совместимый с текущей версией ядра ОС, в систему:

Разумеется, вы также можете воспользоваться более простой эквивалентной командой:

На данный момент модуль ядра ОС должен быть успешно установлен в систему. Вы можете проверить статус его установки с помощью следующей команды:

Проверка работоспособности механизма автоматической пересборки модуля после обновления ядра ОС

После того, как фреймворк DKMS настроен для автоматической пересборки драйвера ixgbe , я предлагаю рассмотреть изменения в системе, которые произойдут в результате обновления версии ядра ОС. Я буду обновлять ядро ОС версии 3.10.0-229 до версии 3.10.0-327 . В качестве тестового окружения будет использоваться дистрибутив CentOS 7, поэтому для обновления версии ядра ОС я воспользуюсь утилитой yum . Обратите внимание на то, что для корректной пересборки драйвера устройства средствами DKMS вместе с пакетами программного обеспечения с компонентами новой версии ядра ОС должен устанавливаться соответствующий пакет программного обеспечения с его заголовочными файлами.

Перед обновлением необходимо узнать версии драйвера ixgbe и текущего ядра ОС.

Несложно заметить, что драйвер устройства версии 4.3.15 был установлен средствами DKMS в директорию модулей ядра Linux версии 3.10.0-229 .

А теперь попробуем установить новую версию ядра ОС и соответствующих заголовочных файлов:

После перезагрузки с задействованием новой версии ядра ОС следует снова проверить версию драйвера ixgbe .

Вы должны обнаружить, что драйвер ixgbe той же версии был автоматически пересобран для ядра Linux новой версии 3.10.0-327 .

Обратите внимание на то, при обновлении версии ядра ОС без установки соответствующего набора заголовочных файлов сборка модуля средствами DKMS попросту не будет инициирована, следовательно, драйвер устройства не будет пересобран из своих исходных кодов. Вместо него будет использоваться официальный драйвер из состава новой версии ядра ОС (если такой доступен).

Например, ниже показан результат обновления ядра ОС без установки соответствующих заголовочных файлов, причем несложно заметить, что в результате был загружен немного устаревший драйвер устройства ixgbe из его состава.

Вы всегда можете пересобрать необходимый драйвер устройства средствами DKMS, самостоятельно инициировав его сборку. Конечно же, перед этим этом следует убедиться в наличии в системе заголовочных файлов для текущей версии ядра ОС.

Заключение

В данной статье была продемонстрирована методика использования фреймворка DKMS для автоматической пересборки модуля ядра ОС. Бесспорно, использование фреймворка DKMS не всегда является оправданным решением, особенно в системах Linux, находящихся в промышленной эксплуатации, в которых обычно запрещена установка компонентов сборочного инструментария. Но при этом DKMS значительно упрощает жизнь разработчиков программного обеспечения и пользователей персональных настольных систем, автоматически собирая необходимые модули ядра ОС по мере установки его обновлений.

Источник

Dynamic Kernel Module Support (Русский)

Dynamic Kernel Module Support (DKMS) — это фреймворк, который используется для генерации тех модулей ядра Linux, которые в общем случае не включены в дерево исходного кода. DKMS позволяет драйверам устройств автоматически пересобираться, когда ядро уже установлено.

Это означает, что пользователь может не ждать, пока какая-то компания, проект или сопроводитель пакета выпустит новую версию модуля. После введения хуков pacman пересборка модулей осуществляется автоматически во время обновления ядра.

Contents

Установка

Установите пакет dkms и заголовочные файлы требуемого ядра/ядер. Например, для ядра по умолчанию linux соответствует linux-headers . Другие ядра имеют собственные пакеты с заголовочными файлами.

Значительное число модулей, не включенных в ядро, имеют DKMS вариант; некоторые из них размещаются в официальных репозиториях, но большинство из них можно найти только в AUR.

Обновления

Обычно пересборка модулей DKMS во время обновления ядра выполняется бесшовно, но что-то может пойти не так. Следует обратить особое внимание на вывод pacman! Это, в частности, относится к тем системам, которым требуется модуль DKMS для успешной загрузки и/или если вы используете DKMS с ядром не из официальных репозиториев.

Читайте также:  Windows калькулятор системы счисления

Для того, чтобы следовать изменениям в ядре, исправить ошибки или добавить необходимый функционал, подумайте об обновлении соответствующего пакета DKMS перед перезагрузкой.

Использование

Использование DKMS вручную.

Автозавершение по Tab будет доступно после выполнения команды:

Список модулей

Чтобы увидеть текущее состояние модулей, версий и ядер внутри дерева, выполните:

Пересборка модулей

Пересборка всех модулей для текущего ядра:

или для конкретного ядра:

Сборка конкретного модуля для текущего ядра:

Сборка модуля для всех ядер:

Удаление модулей

Удаление модуля (старые автоматически не удаляются):

Если пакет dkms удален, то теряется информация о предыдущих файлах сборки модуля. В этом случае, перейдите в директорию /usr/lib/modules/KERNELVERSION-ARCH и удалите все файлы и каталоги, которые больше не используются.

Создание DKMS пакета

Initial ramdisk

В случаях для любых модулей, которые были установлены через DKMS и используются в Initrd, например zfs-dkms AUR , может быть полезно написать хук pacman для автоматической пересборки образа(ов) initramfs.

Например, когда используется linux и mkinitcpio, то для обновления модуля ZFS после каждого zfs-dkms AUR апгрейда,

Вы можете добавить больше таргетов в хук и сделать дополнительные копии хука, если в вашей система установлены другие ядра. Префикс 90- необходим для гарантированного запуска после хуков DPKMS.

Источник

Операционные системы Astra Linux

Оперативные обновления и методические указания

Операционные системы Astra Linux предназначены для применения в составе информационных (автоматизированных) систем в целях обработки и защиты 1) информации любой категории доступа 2) : общедоступной информации, а также информации, доступ к которой ограничен федеральными законами (информации ограниченного доступа).

1) от несанкционированного доступа;
2) в соответствии с Федеральным законом от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации» (статья 5, пункт 2).

Операционные системы Astra Linux Common Edition и Astra Linux Special Edition разработаны коллективом открытого акционерного общества «Научно-производственное объединение Русские базовые информационные технологии» и основаны на свободном программном обеспечении. С 17 декабря 2019 года правообладателем, разработчиком и производителем операционной системы специального назначения «Astra Linux Special Edition» является ООО «РусБИТех-Астра».

На web-сайтах https://astralinux.ru/ и https://wiki.astralinux.ru представлена подробная информация о разработанных операционных системах семейства Astra Linux, а также техническая документация для пользователей операционных систем и разработчиков программного обеспечения.

Мы будем признательны Вам за вопросы и предложения, которые позволят совершенствовать наши изделия в Ваших интересах и адаптировать их под решаемые Вами задачи!

Репозитория открытого доступа в сети Интернет для операционной системы Astra Linux Special Edition нет. Операционная система распространяется посредством DVD-дисков.

Информацию о сетевых репозиториях операционной системы Astra Linux Common Edition Вы можете получить в статье Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов.

В целях обеспечения соответствия сертифицированных операционных систем Astra Linux Special Edition требованиям, предъявляемым к безопасности информации, ООО «РусБИтех-Астра» осуществляет выпуск очередных и оперативных обновлений.

Очередные обновления (версии) предназначены для:

  • реализации и совершенствования функциональных возможностей;
  • поддержки современного оборудования;
  • обеспечения соответствия актуальным требованиям безопасности информации;
  • повышения удобства использования, управления компонентами и другие.

Оперативные обновления предназначены для оперативного устранения уязвимостей в экземплярах, находящихся в эксплуатации, и представляют собой бюллетень безопасности, который доступен в виде:

  1. инструкций и методических указаний по настройке и особенностям эксплуатации ОС, содержащих сведения о компенсирующих мерах или ограничениях по примене- нию ОС при эксплуатации;
  2. отдельных программных компонентов из состава ОС, в которые внесены изменения с целью устранения уязвимостей, инструкций по их установке и настройке, а также информации, содержащей сведения о контрольных суммах всех файлов оперативного обновления;
  3. обновлений безопасности, представляющих собой файл с совокупностью программных компонентов из состава ОС, в которые внесены изменения с целью устранения уязвимостей, а также информации, содержащей сведения о контрольных суммах всех файлов обновлений безопасности, указания по установке, настройке и особенностям эксплуатации ОС с установленными обновлениями безопасности.
Читайте также:  Линукс 2020 лучшие дистрибутивы linux для компьютера

Ввиду совершенствования нормативно-правовых документов в области защиты информации и в целях обеспечения соответствия информационных актуальным требованиям безопасности информации, а также обеспечения их долговременной эксплуатации, в том числе работоспособности на современных средствах вычислительной техники, рекомендуется на регулярной основе планировать проведение мероприятий по применению очередных и оперативных обновлений операционной системы.

Источник

Что делает 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 с соответствующими записями. Например, после того, как мы распаковали архив:

Внутри dkms.conf мы могли бы добавить строки:

Все каталоги соответствуют местоположению файла dkms.conf. Это говорит DKMS

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

Вы также можете добавить опции для вызова сценариев до или после сборки или установки, предоставить дополнительные (условные) команды make, команды patch и т. Д. Файл dkms.conf фактически поставляется в виде сценария оболочки, так что можно сделать немало хитростей. если необходимо. Эти и другие параметры описаны в разделе dkms.conf в man dkms.

Затем мы устанавливаем модуль в DKMS, копируя установочные файлы модуля в дерево исходных кодов ядра / usr / src / — и сообщаем DKMS о новом модуле:

Это оно! DKMS теперь добавил наш модуль в свой список модулей для сборки для будущих установок ядра. Чтобы убедиться, что он работает и установить модуль в наше текущее ядро, мы можем дать команду dkms для сборки и установки модуля:

Если повезет, ваш модуль будет установлен и переустановлен в будущих обновлениях ядра.

Примеры

Страница людей DKMS имеет полезную информацию о настройке вашего любимого модуля ядра для использования с DKMS. Это не полная документация, но она ответит на множество вопросов. Это может помочь вам отметить следующие примеры, даже если используемые модули не являются теми, которые вы хотите установить:

  • RocketRaid — два примера того, как настроить драйверы Highpoint RocketRaid RR26xx и RR62x с DKMS.

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

  • Инструкции DKMS с последним драйвером Intel E1000E
  • DkmsDriverPackage . Учебное пособие на основе двух драйверов веб-камеры: r5u870 (Sony Vaio MotionEye) и ov51x-jpeg (Playstation EyeToy и Hercules Deluxe)
  • Ubuntuforums nVidia драйвер с инструкциями, включая модуль DKMS
  • Страница справочника Ubuntu (Документально документирует некоторые недокументированные биты.)
  • Журнал для Linux «Изучение поддержки модулей динамического ядра (DKMS)»

Источник

Оцените статью