Modprobe Linux что это такое

Обновлено: 01.07.2024

Утилита modprobe используется для добавления и удаления модулей ядра в/из ядра Linux. Модули ядра Linux имеют расширение имени модуля .ko. «modprobe» достаточно умен, чтобы сначала загрузить зависимость модуля ядра (если есть), а затем загрузить фактический модуль.

5 примеров modprobe

1. Базовый пример загрузки LKM

В первом примере мы увидим, как загрузить LKM (хранящийся по любому пути в системе) с помощью modprobe. Для этого выполните следующие действия:

например, я сделал следующее:

ПРИМЕЧАНИЕ. Если ваш модуль выводит какие-либо сообщения об отладке, подтверждение загруженного модуля можно получить, просмотрев журналы утилиты dmesg. В качестве альтернативы можно использовать утилиту lsmod для просмотра загруженных в данный момент модулей

2. Выгрузить загруженный с помощью modprobe

modprobe также можно использовать для удаления загруженного модуля. Или, другими словами, мы можем выгрузить загруженный модуль через modprobe, используя опцию -r.

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

3. Пробный прогон

Иногда мы сталкиваемся с такими проблемами, как неправильная загрузка модуля и т. д. В этом случае очень важно отладить и узнать уровень, на котором существует проблема. Крайне важно знать, возникает ли проблема до загрузки или после загрузки. Для облегчения этого типа отладки существует опция -n, которая, если она используется, заставляет modprobe делать все остальное, кроме последней стадии загрузки модуля.

Я использовал параметр -v вместе с -n, чтобы modprobe мог выдать некоторую отладочную информацию.

4. Скрыть информацию об ошибке

Обычно в некоторых случаях ошибки утилита modprobe пытается вывести некоторую информацию об ошибке. Если такая информация не нужна, то используется параметр -q для подавления такой информации.

Итак, мы видим, что в приведенном выше выводе, когда команда запускалась без параметра -q, возникала ошибка, а при использовании -q ошибка подавлялась.

5. Список модулей

Если требуется перечислить все модули или модули с определенным именем, тогда modprobe предоставляет опцию -l для выполнения этого

В операционных системах Linux команда modprobe добавляет и удаляет модули из ядра Linux.

Описание

Модули – это фрагменты кода, которые расширяют функциональные возможности ядра операционной системы без необходимости перезагрузки. После загрузки модули остаются в памяти и могут создаваться несколько раз; их можно рассматривать как аналог драйвера устройства.

modprobe использует списки зависимостей и карты оборудования, созданные depmod, для интеллектуальной загрузки или выгрузки модулей в ядро. Он выполняет фактическую вставку и удаление с помощью программ более низкого уровня insmod и rmmod соответственно.

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

Техническое описание

modprobe ищет каталог модуля,

для всех модулей и других файлов, за исключением необязательных файлов конфигурации в каталоге /etc/modprobe.d. modprobe также использует параметры модуля, указанные в командной строке ядра в виде:

<р>. и черные списки в виде:

Современные версии Linux modprobe (постядерная версия 2.4.x) не изменяют сами модули. Работа по разрешению символов и пониманию параметров выполняется внутри ядра. Поэтому сбой модуля иногда сопровождается сообщением ядра — см. dmesg для получения дополнительной информации о их просмотре.

modprobe ожидает обновленный файл modules.dep.bin (или резервный удобочитаемый файл modules.dep), сгенерированный утилитой depmod. В этом файле перечислены другие модули, которые нужны каждому модулю (если они есть), и modprobe использует его для автоматического добавления или удаления этих зависимостей.

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

Синтаксис

Параметры

< tr >
-a, --all Вставить все имена модулей в командную строку.
-b,--use-blacklist Эта опция заставляет modprobe применять команды черного списка в файлах конфигурации (если они есть) также к именам модулей. (Любой модуль, занесенный в черный список, не загружается автоматически.)
-C, --config Эта опция переопределяет каталог конфигурации по умолчанию (/etc /modprobe.d).

Эта проверка предназначена для вашей защиты, поэтому этот вариант использования опасен, если вы не знаете, что делаете.

Примеры

Следующая серия команд иллюстрирует распространенный способ использования modprobe. Каждая команда имеет префикс sudo, так как для них требуются права суперпользователя:

Эти команды выполняют следующие операции:

  1. В первой команде мы используем ln для создания символической ссылки на файл нашего модуля в каталоге /lib/modules/kernel-release. Команда uname -r, заключенная в обратные кавычки, выполняется оболочкой и преобразуется в соответствующую строку, представляющую нашу версию выпуска ядра.
  2. Во второй команде обновленный список зависимостей создается командой depmod -a, чтобы убедиться, что устанавливаемый нами модуль знает обо всех существующих модулях и зависимостях. Этот список зависимостей используется modprobe при установке модуля в третьей команде.
  3. modprobe устанавливает модуль ядра.

Связанные команды

depmod — создание списка зависимостей модулей ядра и связанных файлов карт.
insmod — вставка модуля в ядро ​​Linux.
lsmod — отображение состояния модулей ядра Linux.
modinfo — показать информацию о модуле ядра Linux.
rmmod — удалить модуль из ядра Linux.
uname — вывести информацию о текущей системе.

Ядро Linux имеет модульную структуру. Функциональность расширяется с помощью модулей или драйверов. Используйте команду modprobe для добавления или удаления модулей в Linux. Команда работает разумно и автоматически добавляет любые зависимые модули.

Ядро использует modprobe для запроса модулей. Команда modprobe выполняет поиск необходимых драйверов в каталогах стандартных установленных модулей.

В этой статье объясняется, как использовать modprobe для добавления или удаления модулей ядра.

Как использовать команду modprobe в Linux

  • Система под управлением Linux
  • Доступ к терминалу/командной строке
  • Учетная запись пользователя с правами sudo или root

Объяснение синтаксиса команды modprobe

Все команды modprobe требуют прав sudo. Общий синтаксис для использования modprobe:

По умолчанию команда modprobe добавляет модуль.

Для нескольких модулей добавьте параметр -a или -all :

Параметры команды modprobe

Доступные параметры команды modprobe разделены на категории в зависимости от их варианта использования.

Параметры управления

Параметры управления позволяют обрабатывать различные ситуации с модулями при вставке или удалении модулей с помощью команды modprobe.

Терминальный вывод доступных модулей с помощью команды find

Примечание. Рассмотрите возможность удаления старых версий ядра. Ознакомьтесь с нашим руководством по удалению старых ядер в Ubuntu.

Добавление модулей ядра с помощью команды modprobe

<р>1. Добавьте модуль с помощью команды modprobe:

 Добавление модуля с помощью команды modprobe в терминале

<р>2. Подтвердите загруженный модуль:

Вывод выводит ошибку, поскольку модуль уже находится в ядре.

Терминальный вывод добавления модуля с modprobe --first-time error

В качестве альтернативы найдите модуль в списке загруженных активных модулей с помощью lmod :

 Терминальный вывод модуля lsmod и grep

Удаление модулей ядра с помощью команды modprobe

<р>1. Удалите модуль с помощью команды modprobe -r:

<р>2. Подтвердите удаление модуля, запустив:

Появляется сообщение об ошибке, говорящее о том, что модуль отсутствует в ядре:

Терминальный вывод удаления модуля с помощью modprobe -r --first-time error

В качестве альтернативы проверьте список загруженных активных модулей:

Удаленный модуль отсутствует в списке загруженных модулей.

Ядро Linux создано модульным и легко расширяемым. Обязательно изучите модули, которые вы хотите добавить или удалить, чтобы избежать проблем с ядром.

Для дальнейшего чтения следуйте нашему руководству по сборке ядра Linux с нуля.

Милика Данчук — начинающий технический писатель в phoenixNAP и специалист по работе с данными. Ее образование в области электротехники и вычислительной техники, а также ее опыт преподавания дают ей уникальный набор навыков — способность легко объяснять сложные технические концепции с помощью своего контента.

Все дистрибутивы Linux поставляются с предустановленным ядром. Однако они обычно устаревают. Следуйте этому.

Linux выпустила свою последнюю версию ядра LTS, ядро ​​Linux 5.7. Ознакомьтесь со всеми новыми функциями и.

Существует несколько способов удаления старых или неиспользуемых ядер. Это также считается хорошей гигиеной системы.

Ядро Linux очень похоже на центральный мозг операционной системы. Хотя это с открытым исходным кодом - смысл.

modprobe интеллектуально добавляет или удаляет модуль из ядра Linux: обратите внимание, что для удобства нет разницы между _ и - в именах модулей. modprobe ищет в каталоге модулей /lib/modules/'uname -r' все модули и другие файлы, за исключением необязательного файла конфигурации /etc/modprobe.conf. и каталог /etc/modprobe.d (см. modprobe.conf(5)). modprobe также будет использовать параметры модуля, указанные в командной строке ядра в виде . .

Обратите внимание, что эта версия modprobe ничего не делает с самим модулем: работа по разрешению символов и пониманию параметров выполняется внутри ядра. Поэтому сбой модуля иногда сопровождается сообщением ядра: см. dmesg(8).

modprobe ожидает обновленный файл modules.dep, сгенерированный depmod (см. depmod(8)). В этом файле перечислены другие модули, которые нужны каждому модулю (если они есть), и modprobe использует его для автоматического добавления или удаления этих зависимостей. См. modules.dep(5)).

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

Параметры

-v --verbose Выводить сообщения о том, что делает программа. Обычно modprobe выводит сообщения только в том случае, если что-то пойдет не так.

Эта опция передается через команды установки или удаления другим командам modprobe в переменной среды MODPROBE_OPTIONS. -C --config Этот параметр переопределяет каталог/файл конфигурации по умолчанию (/etc/modprobe.d или /etc/modprobe.conf).

Эта опция передается через команды установки или удаления другим командам modprobe в переменной среды MODPROBE_OPTIONS. -c --showconfig Выгрузить действующую конфигурацию из каталога config и выйти. -n --dry-run Эта опция делает все, кроме фактической вставки или удаления модулей (или выполнения команд установки или удаления). В сочетании с -v это полезно для отладки проблем. -i --ignore-install --ignore-remove Эта опция заставляет modprobe игнорировать команды установки и удаления в файле конфигурации (если есть) для модуля, указанного в командной строке (любые зависимые модули по-прежнему подчиняются командам, установленным для них). в файле конфигурации). См. modprobe.conf(5). -q --quiet Обычно modprobe сообщает об ошибке, если вы пытаетесь удалить или вставить модуль, который он не может найти (и это не псевдоним или команда установки/удаления). С этим флагом modprobe будет просто игнорировать любые поддельные имена (ядро использует это для случайного поиска модулей, которые могут существовать). -r --remove Эта опция заставляет modprobe удалять, а не вставлять модуль. Если модули, от которых он зависит, также не используются, modprobe также попытается удалить их. В отличие от вставки, в командной строке можно указать более одного модуля (не имеет смысла указывать параметры модуля при удалении модулей).

Обычно нет причин удалять модули, но некоторые модули с ошибками требуют этого. Ваше ядро ​​может не поддерживать удаление модулей. -w --wait Этот параметр применим только с параметрами -r или --remove. Это заставляет modprobe блокироваться в ядре (внутри самого кода обработки модуля ядра), ожидая, пока счетчик ссылок указанного модуля не достигнет нуля. По умолчанию modprobe работает как rmmod, который завершается с EWOULDBLOCK, если счетчик ссылок модуля не равен нулю. -V --version Показать версию программы и выйти. -f --force Попытаться удалить из модуля любую информацию о версии, которая в противном случае могла бы помешать его загрузке: это то же самое, что и использование --force-vermagic и --force-modversion. Естественно, эти проверки нужны для вашей защиты, поэтому использовать эту опцию опасно.

Это относится ко всем вставленным модулям: как к модулю (или псевдониму) в командной строке, так и к любым модулям, от которых он зависит. --force-vermagic Каждый модуль содержит небольшую строку, содержащую важную информацию, такую ​​как версии ядра и компилятора. Если модуль не загружается, а ядро ​​жалуется, что «магия версии» не совпадает, вы можете использовать эту опцию для его удаления. Естественно, эта проверка предназначена для вашей защиты, поэтому использование этого варианта опасно.

Это относится ко всем вставленным модулям: как к модулю (или псевдониму) в командной строке, так и к любым модулям, от которых он зависит. --force-modversion Когда модули компилируются с установленным CONFIG_MODVERSIONS, создается раздел с подробным описанием версий каждого интерфейса, используемого (или поставляемого) модулем.Если модуль не загружается и ядро ​​жалуется, что модуль не согласен с версией какого-либо интерфейса, вы можете использовать «--force-modversion», чтобы полностью удалить информацию о версии. Естественно, эта проверка предназначена для вашей защиты, поэтому использовать эту опцию опасно.

Это относится ко всем вставленным модулям: как к модулю (или псевдониму) в командной строке, так и к любым модулям, от которых он зависит. -l --list Список всех модулей, соответствующих заданному подстановочному знаку (или "*", если подстановочный знак не указан). Эта опция предусмотрена для обратной совместимости: смотрите find(1) и basename(1) для более гибкой альтернативы. -a --all Вставить все имена модулей в командную строку. -t --type Ограничить -l модулями в каталогах, соответствующих заданному имя каталога. Эта опция предусмотрена для обратной совместимости: смотрите find(1) и basename(1) для более гибкой альтернативы. -s --syslog Эта опция заставляет любые сообщения об ошибках проходить через механизм системного журнала (как LOG_DAEMON с уровнем LOG_NOTICE), а не стандартную ошибку. Это также автоматически включается, когда stderr недоступен.

Эта опция передается через команды установки или удаления другим командам modprobe в переменной среды MODPROBE_OPTIONS. -S --set-version Установить версию ядра вместо использования uname(2) для выбора версии ядра (которая определяет, где найти модули). -D --show-depends Список зависимостей модуля (или псевдонима), включая сам модуль. Это создает (возможно, пустой) набор имен файлов модулей, по одному в строке, каждое из которых начинается с «insmod». Команды установки, которые применяются, показаны с префиксом «установить». Он не запускает ни одну из команд установки. Обратите внимание, что modinfo(8) может использоваться для извлечения зависимостей модуля из самого модуля, но ничего не знает о псевдонимах или командах установки. -o --name Эта опция пытается переименовать модуль, вставляемый в ядро. Некоторые тестовые модули можно с пользой вставлять несколько раз, но ядро ​​отказывается иметь два модуля с одинаковыми именами. Обычно модули не должны требовать многократной вставки, так как это сделало бы их бесполезными, если бы не было поддержки модулей. --first-time Обычно modprobe завершается успешно (и ничего не делает), если ему говорят вставить модуль, который уже присутствует, или удалить модуль, которого нет. Это идеально подходит для простых сценариев; однако более сложные скрипты часто хотят знать, действительно ли modprobe что-то сделал: в этом случае эта опция приводит к сбою modprobe. --dump-modversions Распечатать список информации о версии модуля, необходимой для модуля. Этот параметр обычно используется в дистрибутивах для упаковки модуля ядра Linux с помощью модулей управления версиями. -b --use-blacklist Эта опция заставляет modprobe применять команды черного списка в файлах конфигурации (если они есть) также к именам модулей. Обычно используется udev(7). -d --dirname Каталог, в котором можно найти модули, по умолчанию /lib/modules/RELEASE.

Окружающая среда

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


< /p>

Ядро Linux — это основной компонент операционной системы Linux. Ядро Linux имеет модульную структуру, что позволяет расширять его функциональность. Модули — это небольшие фрагменты кода, которые могут быть загружены и выгружены ядром без перезагрузки компьютера. Модули ядра можно загружать/удалять вручную или автоматически.

При подключении/удалении нового устройства, такого как USB или PCI, ядро ​​отправляет uevents. События uevents содержат информацию об устройстве, например сведения о производителе и модели. Udev (диспетчер устройств) прослушивает эти события и передает их modprobe. Modprobe интеллектуально идентифицирует запрошенный драйвер путем поиска в каталоге модулей /lib/modules/uname -r и загружает файл модуля в ядро. После успешной загрузки модуля он появляется в списке команд lsmod. Кроме того, modprobe используется для ручного добавления или удаления загружаемого модуля из ядра.

Modprobe распространяется как часть пакета kmod. В этом руководстве мы узнаем, как использовать команду modprobe для добавления и удаления модулей из ядра Linux.

синтаксис команды modprobe

Проверим синтаксис команды modprobe:

команда modprobe для добавления модуля ядра

Модули ядра расположены в подкаталогах, расположенных в /lib/modules/$(uname -r) . Команду uname -r можно использовать для определения текущей версии ядра.

При добавлении модуля modprobe интеллектуально проверяет зависимость модуля, где insmod этого не делает. Зависимости перечислены в файле /lib/modules/$(uname -r)/modules.dep, а ссылка на имя модуля указана в файле /etc/modules.

Чтобы вывести каталог, в котором находится модуль ядра, введите:

Вы можете найти все драйверы устройств в каталоге /lib/modules/$(uname -r)/kernel/drivers/ .

Обычно файлы модулей ядра имеют расширения .ko. Вы можете перечислить все файлы .ko следующим образом:

Вы можете добавить модуль в ядро ​​Linux с помощью команды modprobe вместе с именем модуля.

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

команда modprobe для удаления модуля ядра

Чтобы удалить модуль, используйте команду modprobe с параметром -r и именем модуля.

Например, чтобы удалить модуль с именем img_i2s_in , введите:

Параметры modprobe

У команды modprobe есть несколько параметров, которые разделены на три категории в зависимости от вариантов их использования.

Вариант управления

При использовании команды modprobe для добавления или удаления модулей параметры управления включают несколько сценариев обработки модулей.

< /tbody>
ПараметрыОписание
-a
-all
Удалить или добавить сразу несколько модулей
--remove
-r
Удалить модуль, также применяется для --remove -dependencies
--remove-dependenciesУдалить модули зависимостей
--resolve-alias
-R
Определить и распечатать имя, соответствующее псевдониму
--first-timeОшибка печати для добавленные или удаленные модули
--ignore-install
--ignore-remove
-i
Игнорировать установку или удаление команды, написанные в модуле при вставке или удалении модуля
--use-blacklist
-b
Псевдоним разрешен в черном списке
--force
-f
При отображении ошибки версии принудительно добавить или удалить модуль. Это относится как к --force-modversion, так и к --force-vermagic.
--force-modversionИгнорировать версию модуля при добавлении или удалении модуль.
--force-vermagicИгнорировать магию версии модуля при добавлении или удалении модуля.
Параметр управления командой modprobe

Параметры запроса

Опция запроса команды modprobe предоставляет информацию о конфигурации и зависимостях.

ПараметрыОписание
--show-depends
-D
Если есть какие-либо модули с файлами зависимостей, он отображает этот модуль
--showconfig
--show-config
-c
Показать текущую конфигурацию и выйти
--show-modversions
--dump-modversions
Показать зависимости версии модуля
Параметры запроса команды modprobe

Общие параметры

Общие параметры команды modprobe настраивают параметры вывода, расположение модулей и версии.

< /tr>
ПараметрыОписание
--пробный запуск
--show
-n
Распечатать вывод, но ничего не добавлять и не удалять.
--config=[Filename]
- C
Переопределяет зависимость конфигурации по умолчанию, т.е. /etc/modprobe.d с [Имя файла]
--dirname=[Directory]
-d
Для /lib/modules используйте [Каталог] в качестве корня файловой системы
--set-version=[версия]
- S
Вместо указанного ядра uname использовать ядро ​​[версия]
--syslog
-s
Отображает сообщение об ошибке через системный журнал
--quiet
-q
Не отображать сообщения об ошибках
--verbose
-v
Включает отображение большего количества сообщений
--version
-V
Показать версию modprobe
--help
-h
Показать справку вместе с командами
Общие параметры команды modprobe

Заключение

В этом руководстве мы узнали о команде modprobe для добавления или удаления модулей из ядра Linux.

Читайте также: