Kernel/modules

Материал из ALT Linux Wiki
< Kernel(перенаправлено с «Модули ядра»)

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

Внимание! Многие команды для работы с модулями ядра доступны только суперпользователю root!
Примечание: После проведения usrmerge упоминаемые в статье каталоги /lib/modules будут перенесены в каталог /usr.

Где находятся модули ядра

Ядро 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*'
Примечание: Зависимости между модулями содержатся в файле /lib/modules/версия_ядра/modules.dep, псевдонимы — в файле /lib/modules/версия_ядра/modules.alias

Установка модулей ядра

Внимание! Рекомендуется выполнить обновление ядра до последней версии перед установкой модулей ядра.
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

Также для обновления ядра и включения/выключения модулей можно воспользоваться графическим интерфейсом центра управления Альтератор.

Ссылки