Как использовать lsmod: обзор, советы и чек-листы

Quick Links
What Is lsmod?
lsmod: First Looks
Diving Deeper With modinfo
Wrapping up
Что такое lsmod?
lsmod — это небольшая утилита, которая выводит список модулей, доступных и/или загруженных в ядро Linux. По сути она форматирует содержимое виртуального файла /proc/modules в удобочитаемый вид.
Определение: модуль ядра — это отдельный скомпилированный кусок кода, который можно динамически загружать и выгружать из ядра. Модули расширяют функциональность ядра без необходимости пересобирать или перезагружать всё ядро.
Аналогия: модуль ядра похож на плагин в приложении. Разница в том, что модули работают ближе к оборудованию и к низкоуровневым подсистемам ОС.
Примеры модулей: драйвер графики (например, проприетарный драйвер NVidia), контроллеры дисков (AHCI), сетевые драйверы.
Важно: модуль может быть доступен системе, но не использоваться. lsmod показывает и доступные, и загруженные модули, а столбец “Used by” помогает понять фактическое использование.
lsmod: первый взгляд
Утилита не имеет опций. Она просто читает /proc/modules и форматирует его.
Файл /proc/modules — виртуальный. Его можно увидеть через cat, less или любой текстовый редактор. Пример поиска модуля AHCI (контроллер SATA):
cat /proc/modules | grep ahciЭто выводит строки, где встречается ahci. Файл /proc/modules в большинстве систем содержит имена модулей в нижнем регистре, поэтому поиск без -i обычно работает.
Более удобный подход — использовать lsmod и фильтрацию через grep. Например:
lsmod | grep -E '^Module|ahci'Здесь -E включает расширенные регулярные выражения, а ^Module находит строку заголовка, начинающуюся с “Module”. Так вы одновременно увидите заголовок и все строки с ahci.
Что означают столбцы в выводе lsmod:
- Module — имя модуля.
- Size — размер модуля в байтах.
- Used by — количество ссылок на модуль со стороны других частей ядра (сколько объектов/модулей ссылаются на этот модуль).
Если в третьем столбце стоит 0, модуль не ссылается ни на что и, возможно, не используется прямо сейчас. Если вы видите -2 — это редкий случай, связанный с особенностями подсчета ссылок для некоторых модулей. В таких ситуациях полезно посмотреть обсуждения на ресурсах сообщества (Stackexchange и т. п.).
Важно: lsmod не сообщает, почему модуль загружен — он только отражает состояние.
Уточнение через modinfo
Чтобы узнать подробности о конкретном модуле, используется modinfo. Он показывает метаданные модуля: описание, автора, лицензию, параметры, зависимости и подписанные ключи.
Примеры:
modinfo ahci -F 'description'modinfo ahci -F 'author'Можно получить сразу несколько полей через grep:
modinfo ahci | grep -E 'description|author'Или с якорями начала строки, чтобы избегать ложных совпадений:
modinfo ahci | grep -E '^description|^author'Если запустить modinfo ahci без опций, вы получите полный набор полей, включая возможные данные о подписи модуля и параметры, которые можно передавать при загрузке.
Совет: man modinfo содержит полный список опций и формат вывода.
Частые приёмы и лайфхаки
- Просмотр всех модулей и поиск по ключевому слову:
lsmod | grep keyword- Просмотр модулей с подробной информацией (комбинация):
for m in $(lsmod | awk 'NR>1 {print $1}'); do echo "--- $m"; modinfo $m | sed -n '1,6p'; doneЭтот однострочник перечисляет имена модулей (пропуская заголовок), затем выводит первые строки modinfo для каждого модуля. Полезно для быстрого обзора.
- Если модуль можно выгрузить, используйте
rmmodилиmodprobe -r.
sudo modprobe -r modulenamemodprobe -r учитывает зависимости и обычно безопаснее, чем rmmod.
Мини-методология: как быстро проверить модуль
- Посмотреть, загружен ли модуль:
lsmod | grep '^modulename\b'- Посмотреть базовую информацию:
modinfo modulename- Проверить связанные устройства или логи ядра:
dmesg | grep -i modulename
journalctl -k | grep -i modulename- Попробовать аккуратно выгрузить, если нужно:
sudo modprobe -r modulename- Если выгрузка не удаётся, искать зависимые модули и процессы, держащие ссылку.
Чек-листы по ролям
Системный администратор:
- Проверить, загружен ли модуль.
- Просмотреть описание и параметры через modinfo.
- Проверить сообщения ядра через dmesg/journalctl.
- Безопасно выгрузить через modprobe -r при необходимости.
Разработчик драйверов:
- Убедиться, что модуль скомпилирован с отладочными флагами при необходимости.
- Посмотреть параметры модуля через modinfo.
- Логировать сообщения dmesg при загрузке/выгрузке.
Служба поддержки / Helpdesk:
- Спросить, появились ли ошибки в dmesg.
- Проверить, не обновлялось ли ПО/ядро недавно.
- Собрать выводы lsmod и modinfo для инженера.
Быстрый шпаргалка команд
# Показать все модули
lsmod
# Фильтровать по имени
lsmod | grep -i nv
# Подробная информация по модулю
modinfo modulename
# Только определённое поле
modinfo modulename -F license
# Выгрузить модуль (с учётом зависимостей)
sudo modprobe -r modulename
# Просмотреть сообщения ядра, связанные с модулем
dmesg | grep -i modulename
journalctl -k | grep -i modulenameКогда lsmod или modinfo дают не ту картину — случаи и обходы
Модуль загружается поздно или динамически: некоторые модули загружаются по событию (например, подключение устройства). В этом случае в момент проверки их может не быть.
Модуль встроен в ядро: если функциональность скомпилирована в само ядро, имени модуля вы не увидите — оно не будет в lsmod.
Несовместимость версий: модуль, собранный для другого ядра, может не загрузиться или частично работать. Проверяйте версию заголовков и сигнатуры.
Ограничения прав:
lsmodможно запускать без sudo, но для получения логов и управления модулями нужны права администратора.
Советы по безопасности и приватности
Не загружайте сомнительные модули от непроверенных источников. Модуль имеет повышенные привилегии и может нарушить безопасность системы.
Проверяйте поле
signatureвmodinfo, если ядро настроено на проверку подписей.В корпоративной среде используйте политики контроля загрузки модулей (например, модульная белая/чёрная списки) и регулярно проверяйте целостность системных модулей.
Примечание: если вы работаете с устройствами пользователей, соблюдайте требования конфиденциальности при сборе логов — отбрасывайте персональные данные.
Диагностика: дерево решений
flowchart TD
A[Нужна информация о модуле?] --> B{Модуль загружен?}
B -- Да --> C[Используйте lsmod]
B -- Нет --> D[Проверьте dmesg и подключение устройства]
C --> E[Посмотреть modinfo для деталей]
E --> F{Нужна выгрузка?}
F -- Да --> G[modprobe -r modulename]
F -- Нет --> H[Оставить в покое]
D --> EСравнение подходов: lsmod vs /proc/modules vs modinfo
- /proc/modules — сырые данные, виртуальный файл. Полезен для парсинга и автоматизации.
- lsmod — форматированное представление /proc/modules, удобно для человека.
- modinfo — детальная метаинформация о конкретном модуле.
Выбирайте инструмент в зависимости от цели: быстрый обзор — lsmod, детальная проверка — modinfo, автоматизация — /proc/modules.
Совместимость и миграция
При обновлении ядра проверяйте, что сторонние модули совместимы с новой версией. Частая стратегия — перекомпиляция модулей для нового ядра или поиск обновлённых пакетов от поставщика.
Для контейнеров: в большинстве случаев контейнеры используют модули хоста. Проверьте, какие модули нужны приложениям внутри контейнера.
Для встроенных систем: многие функции собираются в ядро монолитно. При необходимости переносить функциональность в виде модулей планируйте пересборку ядра.
Краткий глоссарий
- Модуль — динамическая часть ядра, расширяющая функциональность.
- /proc — виртуальная файловая система ядра, предоставляющая информацию о состоянии системы.
- modinfo — утилита для чтения метаданных модуля.
- modprobe — утилита для загрузки/выгрузки модулей с учётом зависимостей.
Критерии приёмки
- Умеете показать, загружен ли модуль (lsmod или /proc/modules).
- Умеете получить описание и параметры модуля (modinfo).
- Можете безопасно выгрузить модуль с учётом зависимостей (modprobe -r).
- Понимаете, когда модуль может быть встроен в ядро и незаметен через lsmod.
Итог
lsmod — простая и надёжная утилита для быстрого просмотра модулей ядра. В сочетании с modinfo и логами ядра вы получите полноценную картину. Для автоматизации используйте /proc/modules, а для управления — modprobe. Следуйте базовым правилам безопасности: проверяйте источники модулей и подписи.
Если вы хотите углубиться: попробуйте собрать небольшую тестовую систему с модульной конфигурацией и потренируйтесь загружать/выгружать модули в контролируемой среде.
Нравится статья? Посмотрите также материалы по трассировке библиотечных вызовов (ltrace) и работе с зависимостями разделяемых библиотек в Linux. Удачи!
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента