Autor: Koji
Fecha: 16/09/2000
Módulos en FreeBSD
A partir de la version 3.0 de FreeBSD se introduce el kld (dynamic kernel
linker facility), el nuevo interface para los módulos, dejando ya de lado
al antiguo LKM (Loadable Kernel Modules).
Basicamente tenemos 3 programas que nos servirán para llevar todo esto de los módulos
en FreeBSD. Los programas son: kldload, kldunload y kldstat.
kldload: Esta es la orden que ejecutaremos para cargar un modulo
en concreto. Puede cargar tanto módulos .out como ELF.
kldunload: Esto nos servirá para descargar cualquier módulo que
tengamos cargados en ese momento.
kldstat: por ultimo, esta orden nos mostrara información sobre
los módulos que tenemos actualmente cargados.
Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb
|
|
NOTA: Os remitimos a
las paginas man de cada uno de estos comandos para obtener mayor detalle de
todas sus opciones disponibles.
Los módulos que podemos cargar y que tenemos compilados listos para ser usados
los encontraremos en /modules. Como ejemplo vamos a cargar el
modulo msdos.ko (ko es la extension por defecto de los módulos en
FreeBSD) usando cada uno de los comandos explicados anteriormente para ir
familiarizandonos con ellos.
Lo primero de todo es asegurarnos si efectivamente existe el modulo msdos.ko
en nuestro directorio /modules:
# ls /modules/msdos.ko
/modules/msdos.ko
Antes de cargarlo sacaremos un kldstat para ver que tenemos actualmente:
# kldstat
Id Refs Address Size
Name
1
3 0xca8 kernel
3
1 0xc linux.ko
4 1
0xc129d000 3000 daemon_saver.ko
Aquí podemos ver que la maquina tiene actualmente 3 módulos en memoria.
Normalmente estos son los módulos que tendréis por defecto cargados. Si por
ejemplo elegiis en la instalación soporte de binarios linux en FreeBSD, se os
cargará en el arranque el modulo linux.ko. Los otros dos corresponden al
kernel y al salvador de pantallas.
Ahora pasaremos a cargar el modulo msdos.ko que corresponde al soporte
del sistema de archivos msdos (FAT, FAT32...):
# kldload msdos
#
Parece que ha ido bien. No hace falta especificar la extensión .ko, es
algo optativo. Para asegurarnos de que todo ha ido bien sacaremos de nuevo un kldstat:
# kldstat
Id Refs Address Size
Name
1
4 0xca8 kernel
3
1 0xc linux.ko
4
1 0xc129d000 3000
daemon_saver.ko
5
1 0xc12fd000 c000
msdos.ko
Efectivamente, vemos el modulo msdos.ko además de todos los otros módulos.
A partir de ahora tendríamos soporte para montar partición FAT por ejemplo.
Ahora si deseamos descargarlo solo tendremos que utilizar kldunload:
# kldunload msdos
#
Y sacamos de nuevo un kldstat:
# kldstat
Id Refs Address Size
Name
1
3 0xca8 kernel
3
1 0xc linux.ko
4
1 0xc129d000 3000
daemon_saver.ko
Así de fácil.
Quizá mas de uno se pregunte las ventajas de usar módulos. La principal
ventaja es la de tener un kernel mas pequeño y mas optimizado. Por defecto, el
kernel de FreeBSD viene con soporte para muchas cosas. Continuando con nuestro
ejemplo del modulo de msdos, FreeBSD trae soporte para el sistema de archivos de
msdos en el propio kernel. Esto supone que el kernel tiene en memoria este
soporte en todo momento, y en los momentos que no hagamos ningún tipo de
operación con alguna partición msdos estaremos malgastando espacio y memoria.
Lo ideal es cargar el modulo de msdos cuando necesitemos hacer alguna operación
con este tipo de sistema de archivos, consiguiendo así un kernel mas pequeño y
mas rápido.
Si deseamos por ejemplo activar el módulo de msdos, lo primero que tenemos que
hacer, es asegurarnos de que nuestro kernel no tiene soporte para
esto. Por defecto FreeBSD trae soporte para sistemas de archivos msdos, asi que
deberemos borrar la línea que pone:
options MSDOSFS
#MS DOS File System
NOTA: Es
muy importante el asegurarnos de que cuando vayamos a usar un modulo para dar
soporte a alguna cosa, no tengamos ya este soporte en el kernel, porque si aun
sigue en el kernel no habremos ganado nada.
Una vez grabado y compilado el nuevo kernel, tenemos 3 alternativas para usar
los modulos. La primera es usar 'a mano' el cargado y descargado de los modulos
mediante los comandos que hemos visto antes.
La segunda es cargar el modulo msdos.ko (siguiendo con el ejemplo) en el
arranque. Si deseamos hacer esto solo tenemos que especificarlo en el archivo /boot/loader.conf.
Este archivo carga múltiples configuraciones antes de iniciarse FreeBSD.
Pondremos algo asi:
msdos_load="YES"
De esta forma se cargaría el módulo solo iniciarse FreeBSD y lo tendríamos en
todo momento en memoria.
La otra alternativa es no poner ni cargar nada. De esta forma al intentar montar
una partición de msdos, y al no tener soporte de msdos en nuestro kernel, éste
buscara en /modules a ver si hay algún modulo que haga esta función, y
si lo encuentra lo cargará montando posteriormente la partición.
Es algo transparente para el usuario. Así que no teneis que preocuparos de
nada. Lo único que no he visto, a sido que una vez desmontada la partición el
modulo sigue en memoria, así que seguramente tengamos que desmontarlo nosotros
a mano una vez dejemos de usar la partición (si es que nos importa el tenerlo
en la memoria claro).
NOTA: En el archivo /boot/defaults/loader.conf teneis todas
las líneas disponibles que podeis poner en /boot/loader.conf para cargar
cualquier módulo disponible en FreeBSD.
Si deseais obtener mas información sobre los módulos remitiros al manual
de kld (man kld) en el que también podreis encontrar
información referente a como programaros vuestro propio modulo.