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 , так что правильные зависимости модуля будут доступны сразу после загрузки системы. Если вы работаете с более полным дистрибутивом, таким как 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, укажите -u . depmod 2.5 будет молча игнорировать флаг -u и всегда будет давать ненулевой код возврата для неразрешенных символов.
-v , — многословно
Покажите имя каждого модуля в процессе его обработки.
-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 даже с версионными символами.
конфигурация
Поведение depmod и modprobe можно настроить с помощью (необязательного) файла конфигурации /etc/modules.conf . Смотрите modprobe (8) и modules.conf (5) для полного описания.
стратегия
Каждый раз, когда вы компилируете новое ядро, команда « make modules_install » создаст новый каталог, но не изменит значение по умолчанию.
Когда вы получаете модуль, не связанный с дистрибутивом ядра, вы должны поместить его в один из независимых от версии каталогов в / lib / modules .
Это стратегия по умолчанию, которую можно переопределить в /etc/modules.conf .
Используйте человек команды ( % человек ) , чтобы увидеть , как команда используется на вашем конкретном компьютере.