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:
Controladores unidos al kernel. En este manual denominaremos a este tipo de kernel de una sola pieza como kernel monolítico. Algunos controladores sólo pueden funcionar de esta forma.
Controladores cargados en el kernel cuando se necesitan, lo que denominaremos como kernel modularizado. La ventaja aquí es que sólo se cargan los controladores que se necesitan realmente y por lo tanto el kernel no contiene ninguna carga innecesaria.
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, los controladores SCSI en un sistema SCSI y similares
se suelen compilar directamente en el kernel; mientras que el soporte para
isofs, msdos o sound
se debe compilar como módulo.
![]() | Sugerencia |
|---|---|
Incluso los controladores que son necesarios para arrancar el sistema pueden ser incluidos en el kernel como módulos. En este caso, el ramdisk inicial se emplea para cargarlos durante el arranque. | |
Los módulos del kernel se guardan en el directorio
/lib/modules/<versión>, donde
versión corresponde a la versión actual del kernel.
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 comando
hwinfo --scsi. La salida de este
programa de ayuda se encuentra también en el módulo de información de hardware
de YaST.
El paquete module-init-tools incluye las utilidades
necesarias para cargar módulos en el kernel. Existen los siguientes comandos
para trabajar con módulos:
El comando insmod carga el módulo
indicado que se busca en un subdirectorio de
/lib/modules//<versión>. Se recomienda dejar
de usar insmod en favor del comando
modprobe ya que éste comprueba también las dependencias del módulo.
Este comando descarga el módulo indicado, lo cual sólo 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.
Este comando genera en el directorio
/lib/modules/<versión> 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).
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.
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.
Muestra información sobre un módulo. Puesto que la información mostrada se extrae del mismo módulo, sólo es posible mostrar información que haya sido integrada por los desarrolladores del controlador. Entre los datos que pueden estar presentes se incluyen el autor, una descripción, la licencia, parámetros del módulo, dependencias y alias.
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.
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
(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.