Añadir o quitar módulos al Kernel de Linux

En la mayoría de las distribuciones de Linux cuando las instalamos se suelen cargar más módulos de los que necesitamos o al revés tenemos que instalar algún módulo que no se ha cargado automáticamente porque no se ha detectado el hardware correspondiente para realizar estas tareas disponemos el comando modprobe.

La instalación y desinstalación de módulos se pueden realizar con los comandos insmod y rmmod respectivamente pero estos comandos tienen limitaciones cuando los módulos tiene prerrequisitos o dependen de otros módulos, para evitarnos estos inconvenientes tenemos a modprobe que es un todo en uno de la gestión de módulos.

Añadir módulos

Vamos a añadir el módulo de bluetooth de este equipo, lo primero es comprobar que tenemos los módulos de los Drivers compilados:

# ls /lib/modules/5.6.0/build/drivers/bluetooth/*.ko

files ko

En esta caso vemos que disponemos de varios modules pertenecientes a varios fabricantes, para nuestra prueba cargaremos el módulo del Bluetooth de Atheos ath3k.ko 

Lo ideal es probar que el módulo se puede cargar correctamente con la opción de –dry-run y –verbose para ver cual serian las acciones a tomar pero sin efectuarlas en realidad 

#modprobe --dry-run --verbose ath3k

modprobe

Una vez comprobado que si añadimos el módulo encontrará todas sus dependencias y no generará ningún error procedemos a cargarlo

#modprobe ath3k

Y comprobamos que el módulo esta cargado correctamente listando los módulos con el comando lsmod:

También podremos ver la información el módulo con el comando modinfo:

modinfo

Al reiniciar el módulo no se vuelve a cargar, si queremos que los cambios sean permanentes tendremos que añadir el nombre del módulo en el fichero /etc/modules 

Quitar módulos

Lo primero es ver bajo que nombre está el módulo cargado, para ello disponemos del comando lsmod o podemos ver el contenido del archivo /proc/modules. Como ejemplo vamos a quitar el modulo de cdrom de nuestro equipo.

Buscamos el nombre el módulo

#lsmod |grep cdrom

lsmod

Ahora que sabemos que el nombre del modulo es cdrom procederemos a descargarlo con el siguiente comando:

#modprobe -r cdrom

Al reiniciar el sistema se volverá a cargar el módulo, si queremos evitar que un módulo en concreto se vuelva a cargar deberemos agregar la siguiente línea blacklist [nombre_modulo] en el fichero /etc/modprobe.d/blacklist.conf  

modprobe

Para los módulos que se «autocargan» en el Kernel no les afecta la configuración del fichero blacklist.conf, para evitar su carga se deberá realizar los siguientes pasos:

  • Crear el fichero /etc/modprobe.d/[nombre_modulo].conf y escribir la línea blacklist [nombre_modulo]
  • Ejecutar depmod -ae
  • Recrear el initrd con el comando update-initramfs –u

Nota: El modulo seguirá cargándose si otros dependen de él