Com carregar i descarregar mòduls del nucli a Linux


Un mòdul del nucli és un programa que es pot carregar o descarregar del nucli a petició, sense necessàriament recompilar-lo (el nucli) ni reiniciar el sistema, i té la intenció de millorar la funcionalitat del nucli.

En termes generals de programari, els mòduls són més o menys com els complements d'un programari com WordPress. Els connectors proporcionen mitjans per ampliar la funcionalitat del programari, sense ells, els desenvolupadors haurien de construir un sol programari massiu amb totes les funcionalitats integrades en un paquet. Si calen noves funcionalitats, s'haurien d'afegir en noves versions d'un programari.

De la mateixa manera, sense mòduls, el nucli s'hauria de construir amb totes les funcionalitats integrades directament a la imatge del nucli. Això significaria tenir nuclis més grans i els administradors del sistema haurien de recompilar el nucli cada vegada que es necessiti una nova funcionalitat.

Un exemple senzill de mòdul és un controlador de dispositiu, que permet al nucli accedir a un component/dispositiu de maquinari connectat al sistema.

Llista tots els mòduls del nucli carregats a Linux

A Linux, tots els mòduls acaben amb l'extensió .ko i normalment es carreguen automàticament a mesura que es detecta el maquinari a l'arrencada del sistema. Tanmateix, un administrador del sistema pot gestionar els mòduls mitjançant determinades ordres.

Per llistar tots els mòduls carregats actualment a Linux, podem utilitzar l'ordre lsmod (llista de mòduls) que llegeix el contingut de /proc/modules així.

# 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
....

Com carregar i descarregar (eliminar) mòduls del nucli a Linux

Per carregar un mòdul del nucli, podem utilitzar l'ordre insmod (inserir mòdul). Aquí, hem d'especificar la ruta completa del mòdul. L'ordre següent inserirà el mòdul speedstep-lib.ko.

# insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

Per descarregar un mòdul del nucli, utilitzem l'ordre rmmod (remove module). L'exemple següent descarregarà o eliminarà el mòdul speedstep-lib.ko.

# rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

Com gestionar els mòduls del nucli mitjançant l'ordre modprobe

modprobe és una ordre intel·ligent per llistar, inserir i eliminar mòduls del nucli. Cerca al directori de mòduls /lib/modules/$ (uname -r) tots els mòduls i fitxers relacionats, però exclou els fitxers de configuració alternatius al directori /etc/modprobe.d.

Aquí, no necessiteu la ruta absoluta d'un mòdul; aquest és l'avantatge d'utilitzar modprobe sobre les ordres anteriors.

Per inserir un mòdul, només cal que proporcioneu el seu nom de la manera següent.

# modprobe speedstep-lib

Per eliminar un mòdul, utilitzeu el senyalador -r com aquest.

# modprobe -r speedstep-lib

Nota: Sota modprobe, es realitza una conversió automàtica de guió baix, de manera que no hi ha cap diferència entre _ i mentre s'introdueixen els noms dels mòduls.

Per obtenir més informació i opcions d'ús, llegiu la pàgina man de modprobe.

# man modprobe

No us oblideu de comprovar:

  1. Com canviar els paràmetres d'execució del nucli d'una manera persistent i no persistent
  2. Com instal·lar o actualitzar a la darrera versió del nucli a CentOS 7
  3. Com actualitzar el nucli a la darrera versió a Ubuntu

Això és tot per ara! Teniu alguna idea útil que volíeu que afegim a aquesta guia o consultes, utilitzeu el formulari de comentaris a continuació per enviar-nos-les.