Cómo cargar y descargar módulos del kernel en Linux


Un módulo del kernel es un programa que puede cargarse o descargarse del kernel a pedido, sin necesariamente recompilarlo (el kernel) o reiniciar el sistema, y está destinado a mejorar la funcionalidad del kernel.

En términos generales de software, los módulos son más o menos como complementos de un software como WordPress. Los complementos proporcionan medios para ampliar la funcionalidad del software; sin ellos, los desarrolladores tendrían que crear un único software masivo con todas las funcionalidades integradas en un paquete. Si se necesitan nuevas funcionalidades, deberían agregarse en nuevas versiones de un software.

Asimismo, sin módulos, el kernel tendría que construirse con todas las funcionalidades integradas directamente en la imagen del kernel. Esto significaría tener núcleos más grandes y los administradores del sistema necesitarían recompilar el núcleo cada vez que se necesite una nueva funcionalidad.

Un ejemplo simple de un módulo es un controlador de dispositivo, que permite al kernel acceder a un componente/dispositivo de hardware conectado al sistema.

Lista de todos los módulos de kernel cargados en Linux

En Linux, todos los módulos terminan con la extensión .ko , y normalmente se cargan automáticamente cuando se detecta el hardware en el arranque del sistema. Sin embargo, un administrador del sistema puede administrar los módulos usando ciertos comandos.

Para enumerar todos los módulos cargados actualmente en Linux, podemos usar el comando lsmod (listar módulos) que lee el contenido de/proc/modules de esta manera.

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

Cómo cargar y descargar (eliminar) módulos del kernel en Linux

Para cargar un módulo del kernel, podemos usar el comando insmod (insertar módulo). Aquí, tenemos que especificar la ruta completa del módulo. El siguiente comando insertará el módulo Speedstep-lib.ko.

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

Para descargar un módulo del kernel, usamos el comando rmmod (eliminar módulo). El siguiente ejemplo descargará o eliminará el módulo Speedstep-lib.ko.

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

Cómo administrar los módulos del kernel mediante el comando modprobe

modprobe es un comando inteligente para listar, insertar y eliminar módulos del kernel. Busca en el directorio de módulos/lib/modules/& # 36 (uname -r) todos los módulos y archivos relacionados, pero excluye archivos de configuración alternativos en el directorio /etc/modprobe.d.

Aquí, no necesita la ruta absoluta de un módulo; esta es la ventaja de usar modprobe sobre los comandos anteriores.

Para insertar un módulo, simplemente proporcione su nombre de la siguiente manera.

# modprobe speedstep-lib

Para eliminar un módulo, use el indicador -r de esta manera.

# modprobe -r speedstep-lib

Nota: Bajo modprobe, se realiza la conversión automática de subrayado, por lo que no hay diferencia entre _ y - al ingresar los nombres de los módulos.

Para obtener más información y opciones de uso, lea la página de manual de modprobe.

# man modprobe

No olvide revisar:

  1. Cómo cambiar los parámetros de tiempo de ejecución del kernel de forma persistente y no persistente
  2. Cómo instalar o actualizar a la última versión del kernel en CentOS 7
  3. Cómo actualizar el kernel a la última versión en Ubuntu

¡Eso es todo por ahora! ¿Tiene alguna idea útil que quisiera que agreguemos a esta guía o consultas? Utilice el formulario de comentarios a continuación para enviárnoslas.