Представлен kmod, новый инструментарий управления модулями ядра Linux

Анонсирован первый выпуск проекта kmod, в рамках которого началось формирование нового набора утилит и библиотеки для управления загрузкой модулей ядра Linux. Ключевым отличием от утилит, подобных modprobe и insmod, является использования в качестве основы библиотеки libkmod, функции которой можно использовать в любых других программах. Использование библиотеки позволит избавить от необходимости вызова внешних утилит такие приложения, как udev, инсталляторы, утилиты работающие на раннем этапе загрузки. Код всех компонентов нового инструментария распространяется под лицензией GPLv2.

В десктоп-дистрибутивах и некоторых встраиваемых системах на этапе загрузки для проверки доступного оборудования используется udev, который создаёт устройства в директории /dev и на основании содержимого псевдофайловой системы /sys загружает необходимые для обеспечения взаимодействия с оборудованием модули ядра. Так как модулей загружается достаточно много, утилита modprobe может вызываться сотни раз, при этом не каждый запуск modprobe приводит к загрузке модуля так как модуль может уже быть загружен. Подобные действия приводят к большой паразитной нагрузке и замедляют процесс загрузки. Используя libkmod все операции по проверке активности и загрузке модулей могут производиться через обычные библиотеченые вызовы, занимая при этом минимум ресурсов, так как файлы конфигурации и индексы со списком имеющихся в наличии модулей будут разобраны один раз, а не при каждом обращении к утилите modprobe.

В настоящее время в kmod входит реализация утилит kmod-lsmod, kmod-insmod, kmod-rmmod, kmod-modprobe, в которых обеспечена совместимость и реализована функциональность, аналогичная утилитам lsmod, insmod, rmmod и modprobe. Библиотека libkmod предоставляет API для вывода уже загруженных ядром модулей; получения информации о заданном модуле, включая такие данные как зависимости, размер и позиция в адресном пространстве ядра; поиска модулей по заданным критериям (алиас, имя модуля и путь); загрузки модуйле с передачей параметров конфигурации; удаления модулей; использования черных списков; получения данных о поддерживаемых модулей опций; управления индексом с данными о модулях.

©  OpenNet