Kernel/modules
Модули ядра Linux — файлы с программным кодом, расширяющим функциональность ядра. Представляют собой драйверы устройств или обеспечивают поддержку файловых систем, сетевых протоколов и т.д. Могут быть встроены в ядро или загружаться динамически, автоматически с помощью udev или вручную, без необходимости перезапуска системы.
Где находятся модули ядра
Ядро Linux загружается из /boot/vmlinuz, содержит базовую функциональность и некоторые встроенные модули (builtin), список которых для совместимости содержится в каталоге /lib/modules/версия_ядра/modules.builtin:
cat /lib/modules/$(uname -r)/modules.builtin
Отдельные модули для ранней загрузки могут включаться в образ /boot/initrd.img, чтобы просмотреть их список можно установить пакет dracut и выполнить команду lsinitrd:
lsinitrd /boot/initrd.img | grep .ko
Либо распаковать файл /boot/initrd.img во временный каталог и работать с ним:
mkdir tmp_init && cd tmp_init lsinitrd --unpack /boot/initrd.img
Динамически загружаемые модули ядра хранятся в каталоге /lib/modules/версия_ядра, например:
find /lib/modules/$(uname -r) -type f -name '*.ko*'
Установка модулей ядра
su - apt-get update update-kernel reboot
Посмотреть список установленных пакетов, содержащих ядра и модули ядра:
rpm -qa kernel* | sort
Для установки модуля из репозитория выполните команду (предварительно узнайте версию ядра командой uname -r):
su - apt-get install kernel-modules-имя_модуля-un-def
Также для обновления ядра и установки модулей можно воспользоваться графическим интерфейсом центра управления Альтератор.
Как посмотреть информацию о модулях
Просмотреть загруженные модули можно командой:
lsmod
или
cat /proc/modules
Получить информацию о модуле можно командой modinfo имя_модуля, например:
modinfo fuse
Вывод команды:
filename:
- файл модуля, если модуль является встроенным, здесь будет написано
(builtin)
; name:
- имя модуля;
description:
- краткое описание модуля;
depends:
- зависимости модуля;
intree:Y
- модуль включен в дерево исходников;
vermagic:
- версия ядра, для которого предназначен модуль;
alias:
- псевдонимы модуля;
firmware:
- прошивка для устройства из каталога /lib/firmware;
sig_*:
иsignature:
- цифровая подпись;
parm:
- параметры модуля.
Чтобы сократить вывод команды, например, вывести только зависимости модуля:
modinfo -F depends имя_модуля
Вывести параметры модуля:
modinfo -F parm имя_модуля
Показать параметры загруженного модуля может команда systool:
systool -vm имя_модуля
Также можно изучить каталог /sys/module для определения параметров загруженных модулей:
ls /sys/module
Загрузка и выгрузка модулей
Автоматическая загрузка модулей выполняется с помощью udev.
Загрузку и выгрузку модулей ядра вручную можно выполнить с помощью команды modprobe. Она заменяет отдельные команды для вставки (insmod) и удаления модуля (rmmod), в том числе учитывая зависимости. С помощью modprobe можно передать параметры модулю [опционально]. Для вставки модуля выполнить:
modprobe имя_модуля [параметр=значение]
Возможные опции:
- -i
- игнорировать команды конфигурационного файла в /etc/modprobe.d;
- -n
- только показать, не выполняя;
- -v
- подробный вывод.
Для выгрузки модуля с зависимостями выполнить команду (опции те же):
modprobe -r имя_модуля
Для хранения параметров загрузки и выгрузки модулей используется каталог /etc/modprobe.d. Конфигурационные файлы в этом каталоге (с суффиксом .conf) могут содержать псевдонимы модулей, их параметры и черные списки (blacklist) запрещенных для загрузки модулей:
ls /etc/modprobe.d/*.conf cat /etc/modprobe.d/имя_файла.conf
Для исключения модуля из загрузки:
echo "blacklist имя_модуля" >> /etc/modprobe.d/имя_файла_черного_списка.conf
Для включения модуля в процессе загрузки используется каталог /etc/modules-load.d. Конфигурационные файлы в этом каталоге (с суффиксом .conf) содержат список модулей для автоматической загрузки. Для добавления модуля в список:
echo "имя_модуля" >> /etc/modules-load.d/имя_файла.conf
Также для обновления ядра и включения/выключения модулей можно воспользоваться графическим интерфейсом центра управления Альтератор.