View in Telegram
Подгружаем, отгружаем, управляем – просто и эффективно Прошлый пост нам рассказал о том, что из себя представляет модуль ядра. Понимание этого - уже супер, но хочется больше! Сегодня посмотрим на парочку команд и приемов по администрированию модулей. Перечисление загруженных модулей У вас есть возможность вывести список, подгруженных на данный момент, модулей. Выполнить это нам поможет 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-Образование
Love Center
Love Center
Find friends or serious relationships easily