Ядро Linux имеет модульную конструкцию. Функциональность можно расширять с помощью модулей или драйверов. Чтобы добавить или удалить модули в Linux, используйте команду modprobe. Команда работает интеллектуально и добавляет все зависимые модули автоматически.
Ядро использует modprobe для запроса модулей. Команда modprobe просматривает стандартные каталоги установленных модулей, чтобы найти необходимые драйверы.
В этой статье объясняется, как использовать modprobe для добавления или удаления модулей ядра.
Объяснение синтаксиса команды modprobe
Все команды modprobe требуют привилегий sudo. Общий синтаксис для использования modprobe следующий:
1 | sudo modprobe <опции> <имя модуля> |
По умолчанию команда modprobe добавляет один модуль.
Для добавления нескольких модулей используйте опцию -a или -all:
1 | sudo modprobe <опции> -a <имя первого модуля> <имя второго модуля> |
Опции для команды modprobe
Доступные опции команды modprobe разделены на категории в зависимости от их использования.
Опции управления
Опции управления позволяют использовать различные ситуации с модулями при вставке или удалении модулей с помощью команды modprobe.
--all -a | Позволяет одновременно вставлять или извлекать несколько модулей. |
--remove -r | Удалить модуль. Применяется также к --remove-dependencies. Полезно для удаления неработающих модулей. |
--remove-dependencies | Удаляет зависимые модули. |
--resolve-alias -R | Поиск и печать всех имен модулей, соответствующих псевдониму. Полезно для отладки проблем с псевдонимами. |
--first-time | Выводит ошибку для уже вставленных или удаленных модулей. |
--ignore-install --ignore-remove -i | Игнорирует команды install/remove, записанные в модуле, при вставке/удалении модуля. |
--use-blacklist -b | Заносить разрешенные псевдонимы в черный список. Модули из черного списка не загружаются автоматически. |
--force -f | Принудительная вставка или удаление модуля при появлении ошибок версии. Применяется как к --force-modversion, так и к --force-vermagic. Используйте с осторожностью. |
--force-modversion | Игнорировать версию модуля при вставке или удалении. Использовать с осторожностью. |
--force-vermagic | Игнорировать магию версии модуля при вставке или удалении. Используйте с осторожностью. |
Параметры запроса
Параметры запроса для modprobe показывают информацию о конфигурации и зависимостях.
--show-depends -D | Выводит список модуля с файлами зависимостей, если таковые имеются. Зависимости, устанавливаемые вместе с модулем, имеют префикс «install». |
--showconfig --show-config -c | Выводит текущую конфигурацию и существующие версии. |
--show-modversions --dump-modversions | Выводит зависимости от версии модуля. |
Общие параметры
Общие параметры настраивают параметры вывода modprobe, расположение модулей и их версии.
--dry-run --show -n | Не выполняйте вставку/удаление, а выведите результат. Используется для отладки. |
--config=<имя файла> -C | Заменяет конфигурационную зависимость по умолчанию (/etc/modprobe.d) на <имя файла>. |
--dirname=<директория> -d | Использовать <директорию> в качестве корня файловой системы для /lib/modules. |
--set-version=<версия> -S | Использовать указанную <версию> ядра вместо использования uname. |
--syslog -s | Выводить сообщения об ошибках через syslog вместо стандартной ошибки (stderr). Если stderr недоступен, ошибки автоматически выводятся в syslog. |
--quiet -q | Отключить отображение сообщений об ошибках. |
--verbose -v | Включает показ большего количества сообщений, если они доступны. modprobe печатает сообщения только в том случае, если что-то пошло не так. |
--version -V | Показывает версию modprobe. |
--help -h | Показывает сообщение справки со всеми перечисленными командами. |
Примеры команды modprobe
Все модули ядра по умолчанию перечислены в системе каталогов /lib/modules в файлах .ko (kernel object).
Найти все доступные модули для текущей версии ядра можно с помощью команды:
1 | find /lib/modules/$(uname -r) -type f -name '*.ko*' | more |
Добавление модулей ядра с помощью команды modprobe
Добавьте модуль с помощью команды modprobe
1 | sudo modprobe <имя модуля> |
Например:
1 | sudo modprobe torture |
Добавление модуля с помощью команды modprobe в терминале
Подтвердите загрузку модуля с помощью команды
1 | sudo modprobe <имя модуля> --first-time |
Вывод выдает ошибку, так как модуль уже находится в ядре.
В качестве альтернативы найдите модуль в списке активных загруженных модулей с помощью lmod:
1 | lsmod | grep <имя модуля> |
Например:
1 | lsmod | grep torture |
Удаление модулей ядра с помощью команды modprobe
Удалите модуль с помощью команды modprobe -r:
1 | sudo modprobe -r <имя модуля> |
Например:
1 | sudo modprobe -r torture |
Убедитесь, что модуль удален, выполнив команду:
1 | sudo modprobe -r <имя модуля> --first-time |
В качестве альтернативы проверьте список активных загруженных модулей:
1 | lsmod | grep <имя модуля> |
Заключение
Ядро Linux создано как модульное и легко расширяемое. Обязательно изучите модули, которые вы хотите добавить или удалить, чтобы избежать проблем с ядром.