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

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

конспект

depmod [-aA] [-ehnqrsuvV] [-C configfile] [-F kernelsyms] [-b basedirectory] [принудительная_версия] depmod [-enqrsuv] [-F kernelsyms] module1.o module2.o … 

Описание

 depmod а также Modprobe Утилиты предназначены для того, чтобы сделать модульное ядро ​​Linux управляемым для всех пользователей, администраторов и сопровождающих.

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

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

/ sbin / depmod -a

где-то в rc-файлах в /etc/rc.d, так что правильные зависимости модуля будут доступны сразу после загрузки системы. Обратите внимание, что опция  теперь необязательно. Для загрузки, опция -Q может быть более подходящим, поскольку это заставляет depmod молчать о неразрешенных символах.

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

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

Параметры

—все

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

—быстрый

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

—errsyms

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

-час—Помогите

Показать сводку опций и сразу выйти.

-N—шоу

Записать файл зависимости на стандартный вывод, а не в дерево / lib / modules.

-Q—тихий

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

—корень

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

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

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

-s—системный журнал

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

-U—нерешенные ошибки

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

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

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

—версия

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

Управление дистрибутивами

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

-б BaseDirectory, —имя_базовой_папки BaseDirectory

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

-С CONFIGFILE, —конфиг CONFIGFILE

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

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

-F kernelsyms,—filesyms kernelsyms

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

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

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

стратегия

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

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

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

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

Ссылка на основную публикацию