Подгружаем, отгружаем, управляем – просто и эффективно
Прошлый пост нам рассказал о том, что из себя представляет модуль ядра. Понимание этого - уже супер, но хочется больше!
Сегодня посмотрим на парочку команд и приемов по администрированию модулей.
Перечисление загруженных модулей
У вас есть возможность вывести список, подгруженных на данный момент, модулей. Выполнить это нам поможет
lsmod - простая утилита, которая не принимает никаких опций или аргументов.
Все, что делает команда - читает файл "
/proc/modules" и отображает его содержимое в хорошо отформатированном списке:
$ lsmod
Module Size Used by
tcp_lp 12663 0
bluetooth 372662 7 bnep
rfkill 26536 3 bluetooth
Результат дает нам следующую информацию:
1)
Module - название модуля, выгруженного в память;
2)
Size - количество памяти (в килобайтах), которое занимает модуль;
3)
Used by - количество экземпляров модуля, используемое в настоящее время. Нулевое значение означает, что модуль не используется и его можно безопасно выгрузить.
Разделенный запятыми список после числа показывает, какие модули использует экземпляр;
Вывод информации о модуле
Команда
modinfo отображает дополнительную информацию о модуле:
$ modinfo i915
filename: /lib/modules/6.8.12-060812-generic/kernel/drivers/gpu/drm/i915/i915.ko.zst
license: GPL and additional rights
description: Intel Graphics
author: Intel Corporation
...
Загрузка модулей в рантайме
Как уже говорилось, подгрузка модулей - эффективный способ расширить функционал ядра. Как загрузить модуль? Использовать команды
modprobe и
insmod:
1)
modprobe - умная команда, которая анализирует файл
modules.dep, чтобы сначала загрузить зависимости, потом уже сам модуль:
$ modprobe i915
$ lsmod | grep i915
i915 4268032 53
2)
insmod - более простая и менее гибкая команда, которая загружает модуль без проверки зависимостей:
$ insmod helloWorld.ko
Welcome to Hello world Module.
Выгрузка модулей в рантайме
При необходимости можно удалить модули из работающей системы. Это также можно выполнить 2 способами: использовать
rmmod или
modprobe -r.
Последняя используется для более безопасного удаления, учитывая зависимости.
При выгрузке модуля через
rmmod, остальные, которые от него зависят, будут пытаться функционировать.
Также команда поддерживает опцию "
--force", которая ингода может быть полезна для агрессивной выгрузки:
$ rmmod module.ko
Goodbye, from module
$ modprobe -r module.ko
Goodbye, from module
Исключение модуля из автоматической загрузки
Для того, чтобы не загружать модуль на этапе бута системы, его требуется добавить в ЧС - файл
blacklist.conf:
$ cat /etc/modprobe.d/blacklist.conf
blacklist eepro100
blacklist evbug
Такой прием бывает полезен, если требуется отключить проблемное оборудование или драйверы.
Автозагрузка модулей
Для того, чтобы каждый раз не производить ручную загрузку модулей, работать с которыми требуется регулярно, существует отдельный каталог, в котором можно настроить автоматическую загрузку модулей на старте системы "
/etc/modules-load.d/".
В каталоге хранятся конфиги, содержащие наименования необходимых модулей:
$ cat modules.conf
video
e1000
serio_raw
При следующем запуске системы, указанные в файле модули, будут автоматически загружены.
Linux++ | IT-Образование