Cómo cargar y descargar módulos de kernel en Linux
Un módulo del kernel es un programa que puede cargarse o descargarse del kernel a pedido, sin necesariamente compilarlo (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, tendrían que agregarse en nuevas versiones de un software.
Del mismo modo, sin módulos, el kernel debería 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 volver a compilar 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 núcleo acceder a un componente/dispositivo de hardware conectado al sistema.
Listar 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 listar 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 de 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 usando 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) para todos los módulos y archivos relacionados, pero excluye archivos de configuración alternativos en /etc/modprobe.d directorio.
Aquí, no necesitas 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 la marca -r
de esta manera.
# modprobe -r speedstep-lib
rojo
Para obtener más información y opciones de uso, lea la página del manual de modprobe.
# man modprobe
No te olvides de revisar:
- How to Change Kernel Runtime Parameters in a Persistent and Non-Persistent Way
- How to Install or Upgrade to Latest Kernel Version in CentOS 7
- How to Upgrade Kernel to Latest Version in Ubuntu
¡Eso es todo por ahora! ¿Tiene alguna idea útil que desee que agreguemos a esta guía o consultas? Utilice el formulario de comentarios que se encuentra a continuación para enviarnos un mensaje.