Поиск по сайту:

Как загружать и выгружать модули ядра в 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

Не забудьте проверить:

  1. Как изменить параметры времени выполнения ядра постоянным и непостоянным способом
  2. Как установить или обновить до последней версии ядра в CentOS 7
  3. Как обновить ядро до последней версии в Ubuntu

На данный момент это все! Если у вас есть какие-либо полезные идеи, которые вы хотели бы, чтобы мы добавили в это руководство, или вопросы, воспользуйтесь формой обратной связи ниже, чтобы отправить их нам.