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_installtras losmake dep; make clean; make zImagelo primero que ha de hacer al arrancar con el mismo, para computar las dependencias entre módulos, es invocar el comandoO make zlilo, si usaLILOcomo gestor de arranque.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 eskerneldquien se encarga de esto. Para hacer uso de él, asegúrese de responder sí al soportekernelddurante 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 esmodprobe modulo, que tendrá en cuenta las dependencias entre módulos, cargando todos los necesarios (como por ejemplo el móduloslhcen el caso de que queramos cargar el móduloppp.) 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 ordenmodprobe bsd_compcuando queramos cargarppp, o bien lo insertamos después de haber cargadopppyslhc, con por ejemplo,modprobe ppp. Lea el fichero/usr/src/linux/Documentation/modules.txt, disponible en castellano enhttp://www.insflug.org/pub/online/modulos.txtpara profundizar sobre este tema, así como sobre el tercero de los ítems: /etc/modules.confo/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
2.0.x, recuérdelo; con los 2.0.x puede compilarlo todo
seguido, y arrancar posteriormente, ejecutar depmod -a y estará todo
listo. /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
modprobe, que como hemos comentado,
tendrá en cuenta las dependencias entre módulos que ha generado depmod
-a, cargándolos todos.
Anterior Siguiente Índice