Все о команде Linux / Unix depmod

click fraud protection

Depmod обрабатывает описания зависимостей для загружаемых ядро модули.

Синопсис

depmod [-aA] [-ehnqrsuvV] [-C файл конфигурации] [-F ядра] [-b на основе каталога] [принудительная_версияdepmod [-enqrsuv] [-F ядра] module1.o module2.o...

Описание

В depmod а также modprobe утилиты предназначены для Linux модульное ядро, управляемое всеми пользователями, администраторами и разработчиками дистрибутива.

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

Команда Linux depmod

Нормальное использование depmod состоит в том, чтобы включить строку.

/ sbin / depmod -a

где-то в rc-файлах в /etc/rc.d, так что правильные зависимости модулей будут доступны сразу после загрузки системы. Если вы работаете с более полнофункциональным дистрибутивом, таким как Ubuntu, Debian или Fedora, это будет сделано за вас. Обратите внимание, что опция 

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

Также возможно создать файл зависимостей сразу после компиляции нового ядра. Если вы это сделаете "depmod -a 2.2.99"когда вы скомпилировали ядро ​​2.2.99 и его модули в первый раз, при этом, например, 2.2.98, файл будет создан в правильном месте. Однако в этом случае правильность зависимостей от ядра не гарантируется. Посмотреть варианты -F, -C а также -b выше для получения дополнительной информации об этом.

При построении взаимосвязи между модулями и символами, экспортируемыми другими модулями,depmod не учитывает статус GPL модулей и экспортируемых символов. То есть, depmod не будет отмечать ошибку, если модуль без лицензии, совместимой с GPL, ссылается на символ только GPL (EXPORT_SYMBOL_GPL в ядре). Тем не мение, insmod откажется разрешать только символы GPL для модулей без GPL, поэтому фактическая загрузка не удастся.

Параметры

, --все

Искать модули во всех каталогах, указанных в (необязательном) файле конфигурации/etc/modules.conf.

, --быстро

Сравните временные метки файлов и, при необходимости, действуйте как depmod -a. Эта опция обновляет файл зависимостей только в случае каких-либо изменений.

-e, - ошибки

Покажите все неразрешенные символы для каждого модуля.

-час, --помощь

Отобразите сводку опций и немедленно выйдите.

-n, --Показать

Напишите файл зависимостей на stdout, а не в /lib/modules дерево.

-q, --тихий

Скажите depmod, чтобы он молчал и не жаловался на пропущенные символы.

, --корень

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

По умолчанию modutils отклоняет попытки использовать модуль, не принадлежащий пользователю root. Указание подавит ошибку и позволит root загружать модули, не принадлежащие root.

Использование -r является серьезной угрозой безопасности и не рекомендуется.

-s, --syslog

Пишите все сообщения об ошибках через демон syslog вместо stderr.

-u, --unresolved-error

depmod 2.4 не устанавливает код возврата, когда есть какие-либо неразрешенные символы. Некоторым дистрибутивам требуется ненулевой код возврата в modutils 2.4, но это изменение может вызвать проблемы для пользователей, ожидающих прежнего поведения. Если вам нужен ненулевой код возврата в depmod 2.4, укажите -u. depmod 2.5 будет молча игнорировать -u флаг и всегда будет давать ненулевой код возврата для неразрешенных символов.

-v, --подробный

Показывать имя каждого модуля по мере его обработки.

-V, --версия

Показать версию depmod.

Управление распределениями

Следующие параметры полезны для людей, управляющих дистрибутивами:

-b на основе каталога, --basedir на основе каталога

Если дерево каталогов / lib / modules содержащий поддеревья модулей перемещается в другое место, чтобы обрабатывать модули для другой среды, -b опция сообщает depmod, где найти перемещенное изображение /lib/modules дерево. Ссылки на файлы в созданном выходном файле depmod, modules.dep, не будет содержать на основе каталога дорожка. Это означает, что при обратном перемещении файлового дерева из каталог на основе / lib / modules в /lib/modules в окончательной раздаче все ссылки будут правильными.

-C файл конфигурации, --config файл конфигурации

Используйте файл configfile вместо того /etc/modules.conf. Переменная окружения MODULECONF также можно использовать для выбора другого файла конфигурации из файла по умолчанию /etc/modules.conf (или/etc/conf.modules (устарело)).

Когда переменная среды UNAME_MACHINE установлено, modutils будет использовать его значение вместо поля машины из системного вызова uname (). Это в основном используется, когда вы компилируете 64-битные модули в 32-битном пользовательском пространстве или наоборот, установите UNAME_MACHINE к типу строящихся модулей. Текущий modutils не поддерживает режим полной кросс-сборки для модулей, он ограничен выбором между 32- и 64-битными версиями архитектуры хоста.

-F имена ядер,--filesyms ядра

При создании файлов зависимостей для ядра, отличного от ядра, работающего в данный момент, важно, чтобы depmod использует правильный набор символов ядра для разрешения ссылок на ядро ​​в каждом модуле. Эти символы могут быть копией System.map из другого ядра или копию вывода из /proc/ksyms. Если ваше ядро ​​использует версионные символы, лучше всего использовать копию /proc/ksyms output, поскольку этот файл содержит символьные версии символов ядра. Однако вы можете использовать System.map даже с версионными символами.

Конфигурация

Поведение depmod а также modprobe можно настроить с помощью (необязательного) файла конфигурации/etc/modules.conf. Видеть modprobe(8) и modules.conf(5) для полного описания.

Стратегия

Каждый раз, когда вы компилируете новое ядро, команда "сделать modules_install"создаст новый каталог, но не изменит значение по умолчанию.

Когда вы получаете модуль, не связанный с дистрибутивом ядра, вы должны поместить его в один из независимых от версии каталогов в /lib/modules.

Это стратегия по умолчанию, которую можно переопределить в /etc/modules.conf.

Использовать человеккоманда (% человек), чтобы увидеть, как команда используется на вашем конкретном компьютере.