Как загружать и выгружать модули ядра в Linux
Модуль ядра — это программа, которая может загружаться в ядро или выгружаться из него по требованию без необходимости его перекомпиляции (ядра) или перезагрузки системы и предназначена для улучшения функциональности ядра.
В общих терминах программного обеспечения модули более или менее похожи на плагины к такому программному обеспечению, как WordPress. Плагины предоставляют средства для расширения функциональности программного обеспечения, без них разработчикам пришлось бы создавать единое массивное программное обеспечение со всеми функциями, интегрированными в пакет. Если потребуются новые функции, их придется добавить в новые версии программного обеспечения.
Аналогично, без модулей ядро пришлось бы собирать со всеми функциями, интегрированными непосредственно в образ ядра. Это означало бы наличие более крупных ядер, и системным администраторам пришлось бы перекомпилировать ядро каждый раз, когда потребуется новая функциональность.
Простым примером модуля является драйвер устройства, который позволяет ядру получать доступ к аппаратному компоненту/устройству, подключенному к системе.
Рекомендуется к прочтению: Как узнать, какую версию Linux вы используете
Список всех загруженных модулей ядра в Linux
В Linux все модули заканчиваются расширением .ko
и обычно загружаются автоматически при обнаружении оборудования при загрузке системы. Однако системный администратор может управлять модулями с помощью определенных команд.
Чтобы вывести список всех загруженных в данный момент модулей в Linux, мы можем использовать команду lsmod (список модулей), которая считывает содержимое /proc/modules следующим образом.
lsmod
Module Size Used by
rfcomm 69632 2
pci_stub 16384 1
vboxpci 24576 0
vboxnetadp 28672 0
vboxnetflt 28672 0
vboxdrv 454656 3 vboxnetadp,vboxnetflt,vboxpci
bnep 20480 2
rtsx_usb_ms 20480 0
memstick 20480 1 rtsx_usb_ms
btusb 45056 0
uvcvideo 90112 0
btrtl 16384 1 btusb
btbcm 16384 1 btusb
videobuf2_vmalloc 16384 1 uvcvideo
btintel 16384 1 btusb
videobuf2_memops 16384 1 videobuf2_vmalloc
bluetooth 520192 29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
videobuf2_v4l2 28672 1 uvcvideo
videobuf2_core 36864 2 uvcvideo,videobuf2_v4l2
v4l2_common 16384 1 videobuf2_v4l2
videodev 176128 4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
intel_rapl 20480 0
x86_pkg_temp_thermal 16384 0
media 24576 2 uvcvideo,videodev
....
Как загружать и выгружать (удалять) модули ядра в Linux
Чтобы загрузить модуль ядра, мы можем использовать команду insmod (вставить модуль). Здесь мы должны указать полный путь к модулю. Приведенная ниже команда вставит модуль speedstep-lib.ko.
insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko
Чтобы выгрузить модуль ядра, мы используем команду rmmod (удалить модуль). В следующем примере выгружается или удаляется модуль speedstep-lib.ko.
rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko
Как управлять модулями ядра с помощью команды modprobe
modprobe — это интеллектуальная команда для просмотра, вставки и удаления модулей из ядра. Он ищет в каталоге модулей /lib/modules/$ (uname -r) все модули и связанные файлы, но исключает альтернативные файлы конфигурации в /etc/modprobe.d. каталог.
Здесь вам не нужен абсолютный путь к модулю; в этом преимущество использования modprobe по сравнению с предыдущими командами.
Чтобы вставить модуль, просто укажите его имя следующим образом.
modprobe speedstep-lib
Чтобы удалить модуль, используйте флаг -r
следующим образом.
modprobe -r speedstep-lib
Примечание. В modprobe выполняется автоматическое преобразование подчеркивания, поэтому нет никакой разницы между _
и –
, пока ввод названий модулей.
Дополнительную информацию об использовании и параметрах можно найти на странице руководства modprobe.
man modprobe
Не забудьте проверить:
- Как изменить параметры времени выполнения ядра постоянным и непостоянным способом
- Как установить или обновить до последней версии ядра в CentOS 7
- Как обновить ядро до последней версии в Ubuntu
На данный момент это все! Если у вас есть какие-либо полезные идеи, которые вы хотели бы, чтобы мы добавили в это руководство, или вопросы, воспользуйтесь формой обратной связи ниже, чтобы отправить их нам.