Top.Mail.Ru
Краткий экскурс в модули в Linux — this_is_the_way
root@4stm4:~/linux $ cat linux_modules.md

Краткий экскурс в модули в Linux

Загрузка и выгрузка модулей ядра Linux

В Linux ядро можно расширять динамически — с помощью модулей ядра. Эти модули могут добавляться и удаляться в любое время, без перезагрузки системы. Такой подход облегчает разработку, тестирование и поддержку оборудования, сетевых протоколов, файловых систем и других функций.

Хотя Linux использует модули активно, архитектура ядра остаётся монолитной: загруженный модуль становится полноценной частью ядра и взаимодействует с остальными компонентами напрямую, а не через межпроцессное взаимодействие, как в микроядерных ОС.

Модули ядра Linux — это файлы с расширением .ko, например:

  • e1000e.ko — драйвер сетевой карты Intel,
  • ext4.ko — драйвер файловой системы ext4,
  • nouveau.ko — драйвер видеокарт NVIDIA с открытым кодом.

Основные команды работы с модулями

Для работы с модулями требуются права суперпользователя (root).

Загрузка модуля

Модуль можно загрузить напрямую:

sudo insmod /путь/к/module_name.ko

Можно также передать параметры:

sudo insmod /путь/к/module_name.ko irq=12 debug=3

Однако чаще используется команда modprobe, которая умеет:

  • искать модуль в /lib/modules/$(uname -r)/,
  • автоматически загружать зависимости.
sudo modprobe module_name
sudo modprobe module_name irq=12 debug=3

Просмотр загруженных модулей

lsmod

Пример вывода:

Module         Size    Used by
coretemp       16384   0
e1000e         237568  0
ptp            20480   1 e1000e
pps_core       20480   1 ptp

Удаление модуля

Для удаления напрямую:

sudo rmmod module_name

Для автоматического удаления с зависимостями:

sudo modprobe -r module_name

Важные замечания

  • Нельзя выгрузить модуль, который используется другими модулями или процессами. Это видно по полю Used by в lsmod.
  • Некоторые модули (особенно драйверы сетевых устройств) могут не отслеживать количество ссылок, что усложняет безопасную выгрузку.
  • modprobe -r пытается также выгрузить модули-зависимости, если они больше нигде не используются.

Управление модулями

Файлы конфигурации modprobe находятся в:

/etc/modprobe.d/

Они позволяют:

  • задавать псевдонимы для модулей,
  • автоматически подставлять параметры при загрузке,
  • указывать модули, которые следует игнорировать (черный список).

Получение информации о модуле

modinfo module_name.ko

Показывает:

  • описание модуля,
  • автора,
  • лицензию,
  • параметры загрузки,
  • зависимости,
  • путь к файлу.