Все о Linux / Unix Команда: modprobe

modprobe — высокий уровень обработки загружаемых модулей

конспект

Modprobe [-adnqv] [-C config] модуль [символ = значение …] Modprobe [-adnqv] [-C config] [-t type] шаблон Modprobe -l [-C config] [-t type] шаблон Modprobe -c [-C config] Modprobe -r [-dnv] [-C config] [module …] Modprobe -Vh

Параметры

—все

нагрузка все соответствующие модули вместо остановки после первой успешной загрузки.

—showconfig

Показать текущую используемую конфигурацию.

—конфиг конфиг

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

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

-d—отлаживать

Показать информацию о внутреннем представлении стека модулей.

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

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

—Автоматическая очистка

Установите ‘autoclean’ на загруженные модули. Используется ядром при вызове Modprobe чтобы удовлетворить отсутствующую функцию (поставляется в виде модуля). -Q опция подразумевается . Эти параметры будут автоматически отправлены на insmod.

-L—список

Список подходящих модулей.

-N—шоу

На самом деле не выполняйте действие, просто покажите, что будет сделано.

-Q—тихий

Не жалуйтесь на insmod не удалось установить модуль. Продолжайте, как обычно, но молча, с другими возможностями для тестирования modprobe. Эта опция будет автоматически отправлена ​​на insmod.

—Удалить

Удалите модуль (стеки) или выполните автоочистку, в зависимости от того, есть ли какие-либо модули, упомянутые в командной строке.

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

Сообщите через системный журнал вместо stderr. Эти параметры будут автоматически отправлены на insmod.

-T moduletype; —тип moduletype

Рассмотрим только модули этого типа. modprobe будет смотреть только на модули, путь к каталогу которых содержит именно «/ moduletype /». Тип модуля может включать более одного имени каталога, например, «-T drivers / net «будет перечислять модули в xxx / drivers / net / и его подкаталогах.

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

Распечатайте все команды по мере их выполнения.

-V, — версия

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

Примечание:

Имена модулей не должны содержать пути (без ‘/’) и не должны содержать завершающий символ ‘.o’. Например, скольжение является допустимым именем модуля для Modprobe, /lib/modules/2.2.19/net/slip и slip.o являются недействительными. Это относится к командной строке и к записям в конфиге.

Описание команды

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

Modprobe использует «зависимый от Makefile» файл зависимостей, созданный depmod, для автоматической загрузки соответствующих модулей из набора модулей, доступных в предварительно определенных деревьях каталогов.

Modprobe используется для загрузки одного модуля, стека зависимых модулей или всех модулей, помеченных указанным тегом.

Modprobe автоматически загрузит все базовые модули, необходимые в стеке модулей, как описано в файле зависимостей modules.dep. Если загрузка одного из этих модулей не удалась, весь текущий стек модулей, загруженных в текущем сеансе, будет выгружен автоматически.

Modprobe имеет два способа загрузки модулей. Один из способов (режим проверки) попытается загрузить модуль из списка (определяется шаблоном). Modprobe прекращает загрузку, как только один модуль успешно загружается. Это может быть использовано для автозагрузки одного драйвера Ethernet из списка. Другой способ Modprobe может быть использован для загрузки все модули из списка. Видеть ПРИМЕРЫ, ниже.

С возможностью , modprobe автоматически выгрузит стек модулей, аналогично тому, как «rmmod -r«делает. Обратите внимание, что с помощью просто»modprobe -r«очистит неиспользуемые автоматически загруженные модули, а также выполнит команды pre и post-remove в файле конфигурации /etc/modules.conf.

Сочетание вариантов -L а также -T перечисляет все доступные модули определенного типа.

вариант  напечатает текущую используемую конфигурацию (по умолчанию + файл конфигурации).

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

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

Обратите внимание, что команды до и после удаления будут не будет выполнен, если модуль «автоочищен» kerneld! Вместо этого поищите готовящуюся поддержку для постоянного хранения модулей. Если вы хотите использовать функции до и после установки, вам придется отключить автоочистку для kerneld и вместо этого поместить в строку что-то вроде следующей строки кронтаб (это также используется для систем kmod), чтобы выполнять автоочистку каждые 2 минуты: * / 2 * * * * test -f / proc / modules / sbin / modprobe -r

стратегия

Идея в том, что Modprobe сначала заглянем в каталог, содержащий модули, скомпилированные для текущей версии ядра. Если модуль там не найден, Modprobe будет искать в каталоге, общем для версии ядра (например, 2.0, 2.2). Если модуль все еще найден, Modprobe будет искать каталог, содержащий модули для выпуска по умолчанию, и так далее.

Когда вы устанавливаете новый linux, модули должны быть перемещены в каталог, связанный с выпуском (и версией) устанавливаемого вами ядра. Затем вы должны сделать символическую ссылку из этого каталога в каталог по умолчанию.

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

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

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

Примеры

modprobe -t net

Загрузите один из модулей, которые хранятся в каталоге с тегом «net». Каждый модуль опробован, пока один не преуспеет.

modprobe -a -t boot

Все модули, которые хранятся в каталогах с тегом «boot», будут загружены.

Modprobe скольжения

Это попытается загрузить модуль slhc.o, если он не был загружен ранее, поскольку модуль скольжения нуждается в функциональности в модуле slhc. Эта зависимость будет описана в файле modules.dep, который был автоматически создан depmod.

modprobe -r slip

Это разгрузит модуль скольжения. Он также автоматически выгружает модуль slhc, если только он не используется другим модулем (например, ppp).

Смотрите также:

depmod (8), lsmod(8), Kerneld(8), символьные(8), rmmod(8).

Безопасный режим

Если эффективный uid не равен реальному uid, то Modprobe относится к своему вкладу с крайним подозрением. Последний параметр всегда обрабатывается как имя модуля, даже если он начинается с «-». Может быть только одно имя модуля и опции вида «переменная = значение» запрещены. Имя модуля всегда обрабатывается как строка, в безопасном режиме мета-расширение не выполняется. Однако расширение по-прежнему применяется к данным, считанным из файла конфигурации.

euid может не совпадать с uid при вызове modprobe из ядра, это верно для ядер> = 2.4.0-test11. В идеальном мире Modprobe мог бы доверять ядру только передавать действительные параметры в modprobe. Однако по крайней мере один локальный корневой эксплойт произошел, потому что код ядра высокого уровня передавал непроверенные параметры непосредственно от пользователя к modprobe. Таким образом, modprobe больше не доверяет входным данным ядра.

Modprobe автоматически устанавливает безопасный режим, когда среда состоит только из этих строк

 НАЧАЛО = /
TERM = Linux
PATH = / SBIN: / USR / SBIN: / бен: / USR / бен

Это обнаруживает выполнение modprobe из ядра в ядрах 2.2 через 2.4.0-test11, даже если uid == euid, что и в более ранних ядрах.

Команды ведения журнала

Если существует каталог / var / log / ksymoops и Modprobe запускается с опцией, которая может загрузить или удалить модуль, тогда modprobe запишет свою команду и вернет статус в / var / log / ksymoops / `date +% Y% m% d.log`. Переключатель для отключения этой автоматической регистрации отсутствует, если вы не хотите, чтобы это происходило, не создавайте / var / log / ksymoops. Если этот каталог существует, он должен принадлежать пользователю root и быть в режиме 644 или 600, и вы должны запустить скрипт insmod_ksymoops_clean каждый день или около того.

Необходимые утилиты

depmod(8), insmod(8).

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

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