название
modprobe – высокий уровень обработки загружаемых модулей
конспект
modprobe [-adnqv] [-C config ] модуль [символ = значение …] modprobe [-adnqv] [-C шаблон ] [-t тип ] шаблон modprobe -l [-C config ] [-t тип ] шаблон modprobe -c [-C config ] modprobe -r [-dnv] [-C config ] [module …] modprobe -Vh
Опции
-a – все
Загружайте все соответствующие модули вместо остановки после первой успешной загрузки.
-c – showconfig
Показать текущую используемую конфигурацию.
-C – конфигурации CONFIG
Используйте файл config вместо (необязательно) /etc/modules.conf , чтобы указать конфигурацию. Переменная среды MODULECONF также может использоваться для выбора (и переопределения) другого файла конфигурации из файла по умолчанию /etc/modules.conf (или /etc/conf.modules ( устаревшее)).
Когда установлена переменная среды UNAME_MACHINE , modutils будет использовать ее значение вместо машинного поля из системного вызова uname (). Это в основном используется, когда вы компилируете 64-битные модули в 32-битном пользовательском пространстве или наоборот, установите UNAME_MACHINE в качестве типа модулей. Текущие модули не поддерживают режим полной кросс-сборки для модулей, он ограничен выбором между 32- и 64-битными версиями архитектуры хоста.
-d – отладочный
Показать информацию о внутреннем представлении стека модулей.
-h – помощь
Показать сводку опций и сразу выйти.
-k – Autoclean
Установите ‘autoclean’ на загруженные модули. Используется ядром, когда оно вызывает modprobe для удовлетворения отсутствующей функции (поставляется в виде модуля). Параметр -q подразумевается -k . Эти параметры будут автоматически отправлены на insmod .
-l – список
Список подходящих модулей.
-n – показать
На самом деле не выполняйте действие, просто покажите, что будет сделано.
-q – тихо
Не жалуйтесь, что insmod не удалось установить модуль. Продолжайте, как обычно, но молча, с другими возможностями для тестирования modprobe. Эта опция будет автоматически отправлена на insmod .
-r – удалить
Удалите модуль (стеки) или выполните автоочистку, в зависимости от того, есть ли какие-либо модули, упомянутые в командной строке.
-s – системный журнал
Сообщите через системный журнал вместо stderr. Эти параметры будут автоматически отправлены на insmod .
-t moduletype ; – тип moduletype
Рассмотрим только модули этого типа. modprobe будет искать только те модули, путь к каталогу которых содержит в точности «/moduletype/». moduletype может включать более одного имени каталога, например, « -t drivers/net » отобразит список модулей в xxx/drivers/net/ и его подкаталогах.
-v – многословный
Распечатайте все команды по мере их выполнения.
-V, –version
Показать версию modprobe .
Примечание:
Имена модулей не должны содержать пути (без ‘/’) и не должны содержать завершающий символ ‘.o’. Например, slip – это допустимое имя модуля для modprobe , /lib/modules/2.2.19/net/slip и slip.o недопустимы. Это относится к командной строке и к записям в конфиге.
Описание команды
Утилиты modprobe и depmod предназначены для того, чтобы сделать модульное ядро Linux более управляемым для всех пользователей, администраторов и сопровождающих.
Modprobe использует файл зависимостей, подобный Makefile, созданный depmod , для автоматической загрузки соответствующих модулей из набора модулей, доступных в предопределенных деревьях каталогов.
Modprobe используется для загрузки одного модуля, стека зависимых модулей или всех модулей, помеченных указанным тегом.
Modprobe автоматически загрузит все базовые модули, необходимые в стеке модулей, как описано в файле зависимостей modules.dep .Если загрузка одного из этих модулей не удалась, весь текущий стек модулей, загруженных в текущем сеансе, будет выгружен автоматически.
Modprobe имеет два способа загрузки модулей. Один из способов (режим проверки) попытается загрузить модуль из списка (определяется pattern ). Modprobe прекращает загрузку, как только один модуль загружается успешно. Это может быть использовано для автозагрузки одного драйвера Ethernet из списка. Другой способ использования modprobe – загрузка всех модулей из списка. См. ПРИМЕРЫ ниже.
С опцией -r modprobe автоматически выгружает стек модулей, аналогично тому, как это делает rmmod -r . Обратите внимание, что использование только « modprobe -r » очистит неиспользуемые автоматически загруженные модули, а также выполнит команды до и после удаления в файле конфигурации /etc/modules.conf ,
Комбинация параметров -l и -t выводит список всех доступных модулей определенного типа.
Опция -c напечатает текущую используемую конфигурацию (по умолчанию + файл конфигурации).
конфигурация
Поведение modprobe (и depmod ) можно изменить с помощью (необязательного) файла конфигурации /etc/modules.conf . Более подробное описание того, что может содержать этот файл, а также информацию о конфигурации по умолчанию, используемой depmod и modprobe , см. В разделе modules.conf ( 5).
Обратите внимание, что команды до и после удаления не будут выполняться, если модуль «автоочищен» kerneld! Вместо этого поищите готовящуюся поддержку для постоянного хранения модулей. Если вы хотите использовать функции до и после установки, вам придется отключить автоочистку для kerneld и вместо этого поместить в строку crontab что-то вроде следующей строки (это также используется для систем 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 автоматически устанавливает безопасный режим, когда среда состоит только из этих строк
HOME =/
TERM = linux
PATH =/sbin:/usr/sbin:/bin:/usr/bin
Это обнаруживает выполнение 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 ), чтобы увидеть, как команда используется на вашем конкретном компьютере.