10.4. Módulos del kernel

Existe una gran cantidad de componentes de hardware para PCs. Para utilizar este hardware correctamente, se necesita un controlador que haga de intermediario entre el sistema operativo (en Linux es el kernel) y el hardware. Normalmente existen dos mecanismos para integrar controladores en el kernel:

En la configuración del kernel se define qué controladores se unirán al módulo y cuáles se añadirán como módulos. Todos los componentes del kernel que no sean necesarios durante el proceso de arranque deberán añadirse como módulos. De esta forma nos aseguramos de que el kernel no aumente excesivamente de tamaño, lo que provocaría dificultades al ser cargado por la BIOS y por el cargador de arranque. El controlador de los discos duros, soporte para ext2 y similares se suelen compilar directamente en el kernel; mientras que el soporte para isofs, msdos o sound se debe compilar como módulo.

Los módulos del kernel se guardan en el directorio /lib/modules/pathversión, donde versión corresponde a la versión actual del kernel.

10.4.1. Detectar el hardware actual con hwinfo

SUSE LINUX incluye el programa hwinfo con el que puede detectar el hardware actual de su ordenador para asignar así los controladores disponibles. Puede obtener unas líneas de ayuda sobre este programa con el comando hwinfo --help.

Por ejemplo, para obtener los datos del dispositivo SCSI integrado, utilice el siguiente comando:

hwinfo --scsi 
   

El resultado de este programa de ayuda se encuentra también en el módulo de información de hardware de YaST.

10.4.2. Manejo de los módulos

Existen los siguientes comandos para trabajar con módulos:

insmod

El comando insmod carga el módulo indicado que se busca en un subdirectorio de /lib/modules//<version>. Se recomienda dejar de usar insmod en favor del comando modprobe.

rmmod

Este comando descarga el módulo indicado, lo cual solo es posible cuando se ha dejado de usar esta función del módulo, y no es posible descargar por ejemplo el módulo isofs cuando todavía hay un CD montado.

depmod

Este comando genera en el directorio /lib/modules/<version> el archivo modules.dep que registra la dependencia de los módulos entre sí. De este modo hay seguridad de que se cargan automáticamente todos los módulos que dependen del primero. El archivo con las dependencias de los módulos se genera automáticamente cuando Linux se inicia (salvo que el archivo ya exista).

modprobe

Carga o descarga de un módulo considerando las dependencias con otros. El comando es muy versátil así que se puede usar para muchas otras cosas (por ejemplo para probar todos los módulos de un determinado tipo hasta que se cargue uno exitosamente). Al contrario de insmod, modprobe evalúa el archivo /etc/modprobe.conf y por eso solo se debería usar para cargar módulos. La página de manual de modprobe explica todas las posibilidades.

lsmod

Muestra los módulos actualmente cargados y sus dependencias. Los módulos que fueron cargados por el daemon del kernel se identifican por autoclean al final de la línea. Esta palabra indica que se trata de un módulo que se descarga automáticamente cuando deja de ser usado para un determinado tiempo y si se hayan tomado las medidas necesarias para ello, ver 10.4.4, “Kmod (Kernel Module Loader)”.

modinfo

Muestra información sobre un módulo.

10.4.3. /etc/modprobe.conf

Los archivos /etc/modprobe.conf, /etc/modprobe.conf.local y el directorio /etc/modprobe.d controlan la carga de módulos (ver la página del manual man modprobe.conf). Este archivo permite indicar los parámetros para aquellos módulos que acceden directamente al hardware y por lo tanto deben ser adaptados específicamente al ordenador (por ejemplo controlador de unidades CD­-ROM o controlador para tarjetas red). Los parámetros aquí mencionados se describen en las fuentes del kernel. Instale con este fin el paquete kernel-source y lea la documentación en el directorio /usr/src/linux/Documentation.

10.4.4. Kmod – el cargador de módulos del kernel (Kernel Module Loader)

El modo más elegante para emplear módulos de kernel es el uso del cargador de módulos del kernel. Kmod permanece en segundo plano y se ocupa de cargar automáticamente los módulos con llamadas a modprobe cuando se necesita la correspondiente función del kernel.

Para usar el Kmod se debe activar, durante la configuración del kernel, la opción Kernel module loader (CONFIG_KMOD).

Kmod no está diseñado para descargar automáticamente módulos; pensando en la cantidad de memoria RAM de los ordenadores de hoy en día, se trata de un operación no necesaria, ya que con la descarga de un módulo se desocuparía muy poca memoria. Los servidores que cumplen tareas muy específicas trabajan más rápido con un kernel monolítico.