Logo de AulaDigital

Kernel Como 9

Kernel-Como: Módulos Anterior Siguiente Indice

9. Módulos

Los módulos del núcleo cargables le permitirán simplificar la configuración del núcleo y ahorrar memoria. Sirven para añadir dinámicamente nuevos soportes de sistemas de ficheros o manejadores, a un núcleo que ya está corriendo.

9.1 Instalación de las utilidades asociadas

Estas utilidades están disponibles allí donde esté el núcleo, como modules-x.y.z.tar.gz. Elija el que corresponda a su núcleo. Descomprímalo con `tar zxvf modules-x.y.z.tar.gz', cambie al directorio que crea (modules-x.y.z), léase el fichero README, y siga las instrucciones de instalación (normalmente, tan simple como `make install'). Con ello tendrá las utilidades insmod, rmmod, ksyms, lsmod, genksyms, modprobe y depmod en /sbin. Si lo desea, puede probar el manejador ejemplo ``hw'' con insmod; lea el fichero INSTALL para más detalle.

insmod inserta un módulo en el núcleo arrancado. Generalmente los módulos son ficheros .o; el manejador ejemplo es drv_hello.o, con lo que para insertarlo se usaría `insmod drv_hello.o'. Para ver los módulos cargados, pruebe lsmod. La salida será como ésta:

 blah# lsmod
 Module:#pages:Used by:
 drv_hello1

`drv_hello' es el nombre del módulo, que usa una página (4k) de memoria, y no hay módulos que dependan de él en este momento. Para quitar el módulo, teclee `rmmod drv_hello'. Vea que rmmod necesita el nombre del módulo, no del fichero. Ese nombre lo obtiene al listar los módulos instalados. Las otras utilidades de módulos se encuentran documentadas en los manuales on-line.

Inciso de la revisión 2.1

Tres cosas relativas a módulos:

  • Siempre que compile un kernel nuevo, y sus correspondientes módulos (con make modules; make modules_install tras los make dep; make clean; make zImage O make zlilo, si usa LILO como gestor de arranque. lo primero que ha de hacer al arrancar con el mismo, para computar las dependencias entre módulos, es invocar el comando
    depmod -a
    
  • Desde la aparición de kerneld, el andar insertando y retirando módulos de memoria a mano no se estila mucho, en su lugar es kerneld quien se encarga de esto. Para hacer uso de él, asegúrese de responder sí al soporte kerneld durante la configuración del núcleo, y llámelo desde los scripts de inicialización del sistema, que están típicamente en /etc/rc.d/rc.x. Sigue pudiendo cargar módulos a voluntad; el comando recomendado es modprobe modulo, que tendrá en cuenta las dependencias entre módulos, cargando todos los necesarios (como por ejemplo el módulo slhc en el caso de que queramos cargar el módulo ppp.) Atención: El soporte de compresión CCP (bsd_comp) no está incluído en esto debido a problemas de copyright, por lo que deberemos cargarlo a mano; o bien ejecutamos la orden modprobe bsd_comp cuando queramos cargar ppp, o bien lo insertamos después de haber cargado ppp y slhc, con por ejemplo, modprobe ppp. Lea el fichero /usr/src/linux/Documentation/modules.txt, disponible en castellano en http://www.insflug.org/pub/online/modulos.txt para profundizar sobre este tema, así como sobre el tercero de los ítems:
  • /etc/modules.conf o /etc/conf.modules. Lea el anterior fichero (modulos.txt).

9.2 Módulos distribuidos con el núcleo 1.2.2

Algunos sistemas de ficheros, manejadores SCSI y de tarjetas de red, así como otras utilidades son cargables como módulos. Para usarlos, lo primero, no incluirlos en el núcleo principal (al compilarlo, no decir que `sí' al manejador correspondiente durante el `make config'). Luego se arranca ese núcleo Esto es obsoleto en el caso de los núcleos 2.0.x, recuérdelo; con los 2.0.x puede compilarlo todo seguido, y arrancar posteriormente, ejecutar depmod -a y estará todo listo. y se entra de nuevo en /usr/src/linux para hacer `make modules', lo que compilará módulos para todas aquellas opciones que no se eligieron durante el `make config', y los dejará en /usr/src/linux/modules. Puede ahora ejecutar `make modules_install' que los instalará en /lib/modules/x.y.z siendo x.y.z la versión del núcleo.

Esto es especialmente útil con los sistemas de ficheros que, como minix o msdos, no se usan normalmente. Así, cuando se quiera leer un disquete MSDOS, primero se cargaría el módulo con insmod Mejor modprobe, que como hemos comentado, tendrá en cuenta las dependencias entre módulos que ha generado depmod -a, cargándolos todos. y se descargaría al finalizar. Esto ahorrará unos 50K de memoria en la operación normal del núcleo. Notar que el sistema Minix siempre deberá estar dentro del núcleo (no como módulo) si se quiere hacer un disquete de rescate con él.


Anterior Siguiente Indice