38.1. Управление модулями ядра
Набор команд для управления модулями ядра доступен, если установлен пакет module-init-tools . С помощью этих команд можно определить, был ли модуль успешно загружен, или попробовать различные модули с новым оборудованием.
Команда /sbin/lsmod выводит список загруженных в данный момент модулей. Например:
Module Size Used by nfs 218437 1 lockd 63977 2 nfs parport_pc 24705 1 lp 12077 0 parport 37129 2 parport_pc,lp autofs4 23237 2 i2c_dev 11329 0 i2c_core 22081 1 i2c_dev sunrpc 157093 5 nfs,lockd button 6481 0 battery 8901 0 ac 4805 0 md5 4033 1 ipv6 232833 16 ohci_hcd 21713 0 e100 39493 0 mii 4673 1 e100 floppy 58481 0 sg 33377 0 dm_snapshot 17029 0 dm_zero 2369 0 dm_mirror 22957 2 ext3 116809 2 jbd 71257 1 ext3 dm_mod 54741 6 dm_snapshot,dm_zero,dm_mirror ips 46173 2 aic7xxx 148121 0 sd_mod 17217 3 scsi_mod 121421 4 sg,ips,aic7xxx,sd_mod
В первом столбце каждой строки указывается название модуля, во втором — его размер, а в третьем показывается, сколько раз он использовался.
Команда /sbin/lsmod выводит меньше информацию, и прочитать её проще, чем просмотреть /proc/modules .
Чтобы загрузить модуль ядра, выполните команду /sbin/modprobe , указав в параметрах название модуля ядра. По умолчанию modprobe пытается загрузить модуль из подкаталогов /lib/modules/ /kernel/drivers/ . Для модулей разных типов предназначены разные подкаталоги, например, подкаталог net/ содержит драйверы сетевых плат. Некоторые модули ядра имеют зависимости, это значит что перед ними должны быть загружены другие модули. Команда /sbin/modprobe проверяет эти зависимости и загружает необходимые модули, прежде чем загрузить указанный модуль.
загружает все модули, от которых зависит модуль e100 , а затем указанный модуль.
Чтобы по мере того, как /sbin/modprobe выполняет команды, они выводились на экран, воспользуйтесь параметром -v . Например:
/sbin/modprobe -v e100
В результате на экран выводится примерно следующее:
/sbin/insmod /lib/modules/2.6.9-5.EL/kernel/drivers/net/e100.ko Using /lib/modules/2.6.9-5.EL/kernel/drivers/net/e100.ko Symbol version prefix ‘smp_’
Для загрузки модулей ядра также есть команда /sbin/insmod , однако она не разрешает зависимости. Таким образом, рекомендуется использовать команду /sbin/modprobe .
Чтобы выгрузить модули ядра, воспользуйтесь командой /sbin/rmmod , указав в параметрах имя модуля. Команда rmmod выгружает модули, только если они не используются непосредственно и не зависят от других используемых модулей.
выгружает модуль ядра e100 .
Другой полезной командой управления модулями ядра является modinfo . Используйте команду /sbin/modinfo , чтобы просмотреть информацию о модуле ядра. Общий синтаксис приведён ниже:
Эта команда, в частности, принимает параметр -d , показывающий краткое описание модуля, и -p , перечисляющий параметры, поддерживаемые модулем. За полным списком параметров обратитесь к странице руководства modinfo ( man modinfo ).
| Назад | Начало | Вперёд |
| Проверка загрузчика | Вверх | Статическая загрузка модулей |
Модули ядра

Вступление
Управление модулями
Управление модулями ядра осуществляется следующими утилитами:
lsmod вывод всех загруженных модулей в виде таблицы.
modinfo вывод информации о модуле: файл модуля, краткое описание, авторы, лицензия, параметры.
insmod утилита для загрузки модулей ядра. Повторяет функционал modprobe название_модуля .
rmmod простая программа для выгрузки модулей. Повторяет функционал modprobe -r название_модуля .
modprobe утилита для загрузки и выгрузки модулей.
В большинстве случаев загрузка модулей осуществляется одной из следующих команд:
sudo modprobe название_модуля sudo insmod название_модуля
При загрузке модуля ему можно указывать определенные параметры:
sudo modprobe название_модуля параметр=значение
sudo insmod название_модуля параметр=значение
Список параметров можно узнать выполнив
modinfo название_модуля
Выгружаются модули командами
sudo rmmod название_модуля sudo modprobe -r название_модуля
DKMS

Файлы конфигурации
Для того чтобы определенные модули загружались/не загружались во время старта системы их можно прописать в файл /etc/modules . Каждый модуль должен быть записан в отдельной строке. Строки начинающиеся со слова blacklist запрещают загрузку модуля.
Кроме /etc/modules существует директория /etc/modprobe.d. В ней лежат отдельные конфигурационные файлы аналогичные по сути /etc/modules.
В чем разница между insmod и modprobe

Статьи
Автор cryptoparty На чтение 3 мин Опубликовано 07.07.2022
Во время разработки вы обычно используете insmod для загрузки модуля, и ему должен быть указан путь к этому самому модулю:
$ insmod filename [module-options]
Это низкоуровневая форма загрузки модулей, которая является основой для других методов загрузки.
С другой стороны, есть modprobe, который в основном используется сисадминами или в производственной системе.
modprobe – это умная команда, которая анализирует файл modules.dep, чтобы сначала загрузить зависимости, прежде чем загрузить данный модуль.
Она автоматически обрабатывает зависимости модулей, как это делает менеджер пакетов:
$ modprobe module-name
| insmod | modprobe |
| Загружает модуль, заданный как ‘insmod /path/to/module.ko’. | Загружает модуль только в /lib/modules/$(uname -r). ‘modprobe /home/test/hello.ko’ не будет работать |
| Зависимости, если они присутствуют, не загружаются | modprobe вычисляет зависимости, загружает зависимости, а затем основной модуль |
Как modprobe вычисляет зависимости?
Modprobe зависит от инструмента depmod для вычисления зависимостей.
depmod вычисляет зависимости всех модулей, присутствующих в папке /lib/modules/$(uname -r), и помещает информацию о зависимостях в файл /lib/modules/$(uname -r)/modules.dep.
Например, kernel/drivers/net/wireless/admtek/adm8211.ko: kernel/net/mac80211/mac80211.ko kernel/net/wireless/cfg80211.ko kernel/drivers/misc/eeprom/eeprom_93cx6.ko
В этом случае сначала загружается eeprom_93cx6.ko, cfg80211.ko, а затем adm8211.ko.
Модули загружаются справа налево и удаляются слева направо.
Поэтому при удалении удаляется adm8211.ko, затем cfg80211.ko и, наконец, eeprom_93cx6.ko.
Мы можем повторно загрузить файл modules.dep, выполнив команду “depmod -a”.
Заключение
insmod – это команда системного администрирования для загрузки имени файла модуля в ядро.
Более простая, но менее гибкая, чем команда modprobe.
Сообщения об ошибках от insmod могут быть нечеткими, поскольку ядро выполняет операции с модулями внутри ядра и поэтому отправляет информацию об ошибках в журнал ядра вместо стандартного вывода; см. dmesg.
Информация в файлах module.* используется командой modprobe для поиска модуля по имени, а не по полному пути. modprobe имеет много других возможностей, которые описаны в руководстве.
Информация о зависимостях модулей также используется менеджерами устройств, в частности udev.
При обнаружении нового оборудования, например, нового USB-устройства, демон udevd получает предупреждение и передает информацию о производителе, а также считывает с оборудования идентификаторы продукта. udevd сканирует файлы зависимостей модулей в поисках модуля, который зарегистрировал эти идентификаторы.
Если такой модуль найден, он загружается с помощью modprobe.
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий Отменить ответ

Поддержать нас
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (110)
- Книги (27)
- Мануал (2 359)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (831)
- Обход запретов (34)
- Опросы (3)
- Скрипты (116)
- Статьи (360)
- Философия (124)
- Юмор (18)
Наш Telegram

Социальные сети
Поделиться
Anything in here will be replaced on browsers that support the canvas element
- Каковы различные форматы сертификатов? 27.10.2023
Цифровые сертификаты могут использоваться для различных целей. Они могут использоваться для защиты соединений с веб-сайтами, для шифрования сообщений электронной почты или для проверки личности пользователя. Выбор правильного формата сертификата необходим для обеспечения безопасности и сохранности данных. Когда речь идет о различных форматах сертификатов, важно выбрать тот, который соответствует вашим потребностям Выберите формат сертификата, совместимый с […]
Преобразование файла PFX (PKCS #12) в формат PEM (Privacy Enhanced Mail) достаточно просто на Linux и Unix-подобных системах. В этой статье мы рассмотрим, как преобразовать файл сертификата в формате PFX в файл PEM с помощью OpenSSL из командной строки. Что такое файл PFX? PFX (также PKCS#12) – это формат файла, содержащего сертификат(ы) и закрытый(ые) ключ(ы), […]
Одним из основных нововведений, появившихся в Podman, стала возможность запуска контейнеров без прав root. С точки зрения безопасности это было существенным улучшением, поскольку потенциально скомпрометированный контейнер, запущенный от имени root, представляет собой угрозу безопасности для хост-системы. Чтобы добиться аналогичного поведения, последние версии Docker поддерживают запуск демона docker в пользовательском контексте. Почему процессы в контейнерах […]
Small Form Factor Pluggable (SFP) – это компактный приёмопередатчик, который устанавливается в SFP порт коммутатора Ethernet. Модуль используется для присоединения платы сетевого устройства к оптическому волокну или витой паре. Модули SFP заменили устаревшие модули GBIC благодаря своим миниатюрным размерам. Это преимущество в размерах позволяет им эффективно работать в ограниченных сетевых средах, обеспечивая быстрый обмен данными […]
Давайте поговорим о классификации вредоносных программ. Когда антивирусная программа или средство защиты от вредоносного ПО обнаруживает что-то потенциально вредоносное, она использует определенный формат, чтобы помочь вам или другим специалистам понять, с какой именно угрозой вы имеете дело. Формат может выглядеть примерно так: Type:Platform/Family.Variant!Suffixes Это не всегда будет выглядеть именно так, поскольку, как вы помните, не […]
Переводы страниц руководства
modprobe [-v] [-V] [-C файл_конфигурации] [-n] [-i] [-q] [-o мя_модуля] [мя_модуля] [параметры_модуля . ]
modprobe [-r] [-v] [-n] [-i] [мя_модуля . ]
modprobe [-l] [-t каталог] [шаблон]
modprobe [-c]
modprobe [—dump-modversions]
ОПИСАНИЕ
modprobe аккуратно добавляет или удаляет модуль из ядра Linux: отметим, что для удобства не делается различий между символами _ и — в именах модулей. modprobe ищет в каталоге модулей /lib/modules/‘uname -r‘ имена всех модулей и других файлов, исключая необязательный файл конфигурации /etc/modules.conf и каталог /etc/modprobe.d (смотри modprobe.conf(5)). Все файлы в каталоге /etc/modprobe.d/arch/ игнорируются.
Отметим, что эта версия modprobe не делает что-либо с самим модулем: работа по связыванию и обработке параметров выполняется внутри ядра. Так что ошибки модулей иногда сопровождаются сообщениями ядра: обратитесь к dmesg(8).
modprobe ожидает актуальный файл modules.dep, сгенерированный depmod (смотри depmod(8)). Этот файл перечисляет какие другие модули требуются каждому из модулей (если требуются). modprobe использует его для автоматического добавления или удаления этих зависимостей. Смотри modules.dep(5).
Если после имени_модуля указан какой-либо аргумент, он передаётся в ядро (в дополнение к опциям, перечисленным в файле конфигурации).
ОПЦИИ
-v —verbose Выводить сообщения о том, что делает программа. Обычно modprobe печатает сообщения только если что-то пошло не так. Эта опция передаётся через команды install или remove другим командам modprobe в переменной окружения MODPROBE_OPTIONS. -C —config Эта опция заменяет конфигурационный файл по умолчанию (/etc/modprobe.conf или /etc/modprobe.d/, если они не найдены). Эта опция передаётся через команды install или remove другим командам modprobe в переменной окружения MODPROBE_OPTIONS. -c —showconfig Вывести файл конфигурации и завершить работу. -n —dry-run Эта опция при вставке или удалении модулей (или запуская команды установки или удаления) на самом деле ничего не делает. В сочетании с опцией -v, она полезна для поиска проблем. -i —ignore-install —ignore-remove Эта опция заставит modprobe игнорировать в файле конфигурации команды install или remove (если они есть), соответствующие модулю, указанному в командной строке (любые зависимые модули по-прежнему обрабатываются с использованием команд, заданных для них в файле конфигурации). Обратитесь к modprobe.conf(5). -q —quiet Обычно modprobe сообщает об ошибках, если попытаться удалить или вставить модуль, который modprobe не может найти (и который не имеет псевдонима или команды install/remove). При указании данной опции, 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, в модуле создаётся секция, содержащая версии каждого интерфейса, используемого (или предоставляемого) модулем. Если модуль не удаётся загрузить и ядро жалуется, что модуль не соответствует версии некоторого интерфейса, вы можете воспользоваться этой опцией, чтобы удалить информацию о версии. Обычно эта проверка выполняется для вашей безопасности, поэтому использование этой опции опасно. Опция применяется ко всем вставляемым модулям: и к модулям (или псевдонимам) из командной строки, и к модулям, зависящим от них. -l —list Список всех модулей, совпадающих с заданным шаблоном (или «*» если шаблон не задан). Эта опция введена для достижения обратной совместимости: обратитесь к find(1) и basename(1) за более гибкой альтернативой. -a —all Вставить все имена модулей в командную строку. -t —type Ограничить -l модулями из каталогов, совпадающих с заданным именем_каталога. Эта опция введена для достижения обратной совместимости: обратитесь к find(1) и basename(1) или более гибкой альтернативе. -s —syslog Эта опция заставляет выводить любые сообщения об ошибках через механизм syslog (как LOG_DAEMON с уровнем LOG_NOTICE), а не на стандартный поток диагностики. Эта опция включается автоматически, если стандартный поток диагностики недоступен. Эта опция передаётся через команды install или remove другим командам modprobe в переменной окружения MODPROBE_OPTIONS. —set-version Задаёт версию ядра, вместо использования uname(2) для принятия решения о версии ядра (которая определяет, где искать модули). Эта опция также отключает проверки обратной совместимости (так что modprobe.old(8) в этом случае не будет запущена). —show-depends Список зависимостей модуля (или псевдонима), включая сам модуль. Будет создан (возможно пустой) набор имён файлов модулей, по одному в строке, а каждый модуль будет предварён строкой «insmod». Применяемые команды установки показываются с префиксом «install». Опция не запускает какую либо из команд установки. Отметим, что modinfo(8) может использоваться для извлечения зависимостей модуля из самого модуля, но он ничего не знает о псевдонимах или командах установки. -o —name Эта опция пытается переименовать модуль, вставленный в ядро. Некоторые тестируемые модули можно вставлять несколько раз, но ядро не позволяет вставлять модули с одинаковыми именами. Если поддержка множественной вставки не реализована в самом модуле, модуль не должен требовать множественной вставки, потому что это может привести к его непригодности для использования. —first-time Обычно modprobe завершается успешно (и ничего не делает), если указанный для вставки модуль уже загружен, или модуль указанный для удаления уже отсутствует. Эта опция обратно совместима с modutils, и идеальна для простых сценариев. Однако, более сложные сценарии часто хотят знать что в действительности слелал modprobe: эта опция заставит modprobe в таких случаях завершиться с ошибкой. —dump-modversions Вывести список с информацией о версиях модулей, требуемых указанным модулем. Эта опция обычно используется для распространения модулей ядра Linux в виде пакетов, для этого используется информация о зависимостях от определённых версий. —use-blacklist Применить совпадение модуля с записью в чёрном списке к запрошенному имени, а не только к запрошенному псевдониму.
ОБРАТНАЯ СОВМЕСТИМОСТЬ
Эта версия modprobe предназначена для ядер версий 2.5.48 и выше. Если обнаружено ядро, поддерживающее модули в старом стиле (бОльшая часть работы по загрузке которых выполняется в пространстве пользователя), программа попытается запустить modprobe.old, что приводит к полной прозрачности поведения программы для пользователя.
ОКРУЖЕНИЕ
Переменная окружения MODPROBE_OPTIONS может использоваться для передачи аргументов в modprobe.
АВТОРСКОЕ ПРАВО
Эта страница руководства: Copyright 2002, Расти Рассел (Rusty Russell), корпорация IBM.