Linux

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

Команда Linux 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  для автоматической загрузки нужного модуля или стека модулей.

Команда Linux depmod

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

/ sbin / depmod -a

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

Параметры

-a—all

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

-A—quick

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

-e—errsyms

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

-h—help

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

-n—show

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

-q—quiet

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

-r—root

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

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

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

-s—syslog

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

-u—unresolved-error

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

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

-V , —  версия

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

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

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

-b  basedirectory—basedir  basedirectory

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

-C  configfile—config  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  даже с версионными символами.

Похожие посты
Linux

8 лучших окружений рабочего стола Linux

AndroidIphone и ipadLinuxWindows

Окончательное руководство по включению темного режима везде

LinuxКак сделать

Что такое Swappiness в Linux? (и как это изменить)

LinuxКак сделать

Как использовать команду ls для вывода списка файлов и каталогов в Linux