next up previous contents
Next: 3.2.3 Organización de sistemas Up: 3.2.2 Instalación y configuración Previous: 3.2.2.3 Cargador de arranque   Índice General

3.2.2.4 Creación del kernel para los nodos

El archivo que el servidor TFTP entregará a los nodos es un kernel de Linux funcional. Éste asume el control del sistema y realiza el arranque normal. Ya que la configuración en las estaciones es bastante particular, el kernel debe contar internamente con las funciones necesarias para inicializar el dispositivo de red, obtener su configuración de un servidor remoto, y montar su sistema de archivos raíz a través de NFS. Una vez realizadas estas funciones, el kernel invoca al proceso init (funcionamiento tradicional en un sistema Unix) y el arranque prosigue normalmente.

La naturaleza modular del kernel de Linux permite una gran eficiencia y versatilidad en el manejo de los módulos que controlan a los dispositivos e implementan ciertas características a nivel kernel. Esto es práctico si se cuenta con almacenamiento local, pero en el caso de un nodo sin dichas facilidades, se requiere que el kernel contenga internamente todas las funciones necesarias para su arranque, al menos hasta el montaje del sistema de archivos raíz. En el ámbito de Linux, se dice que los módulos necesarios deben compilarse monolíticamente dentro del kernel. En este caso necesitamos compilar monolíticamente las siguientes opciones en el kernel:

Para configurar el kernel con las opciones requeridas, se pasa al directorio
/usr/src/linux, que contiene el código fuente del kernel de Linux. Se puede utilizar la utilería make menuconfig, que presenta un menú fácil de utilizar, y se seleccionan las opciones especificadas (cuídese de especificar ``y'' para compilar las opciones en forma monolítica).

Otra posibilidad es editar directamente el archivo de configuración del kernel (.config), donde existe variables que especifican las opciones de configuración que se desean. Las opciones requeridas son las siguientes:

CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL3=y
CONFIG_NE2K_PCI=y
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y

El archivo de configuración completo, utilizado para crear el kernel de los nodos, se encuentra en el apéndice (B.2)

Una vez realizada la configuración se procede a la compilación del kernel. Esto se realiza con los siguientes comandos, desde el directorio /usr/src/linux:

# make dep
# make clean
# make bzImage

Este proceso toma entre algunos minutos y unas horas, dependiendo de la capacidad del sistema donde se realice la compilación. Al término, el kernel está en el archivo
/usr/src/linux/arch/i386/bzImage.

Este kernel es adecuado para un sistema normal, pero para uso en un nodo del cluster se requiere un paso adicional. Se requiere que la imagen ejecutable cargada por el programa Etherboot contenga información adicional, que permita al cargador de arranque colocar la imagen en la locación de memoria correcta para su ejecución.

La distribución Etherboot contiene un programa para agregar esta información al kernel, denominado mknbi. Este programa permite crear archivos con formato NBI (Network Bootable Image). Para esto debemos pasar al directorio
etherboot-4.6.7/mknbi-1.0 y realizar lo siguiente:

# make
# make install
# /usr/local/lib/mknbi/mknbi --target=linux \
  --output=/tftpboot/vmlinuz-nbi-2.2 \
  /usr/src/linux/arch/i386/boot/bzImage

Estos comandos generan la utilería mknbi y sus archivos auxiliares y la instalan bajo /usr/local/lib/mknbi. El último comando invoca la utilería mknbi, especificando generar una imagen binaria para Linux, tomando el archivo de origen
/usr/src/linux/arch/i386/boot/bzImage, que es el kernel que acabamos de compilar, y dejando la imagen en formato NBI en el archivo /tftpboot/vmlinuz-nbi-2.2. Nótese que esta ubicación corresponde a la especificada en el parámetro filename para todos los hosts, en el archivo de configuración de DHCP. Es decir, tras realizar este proceso la imagen del kernel queda lista para ser cargada por los nodos.

En este momento podemos volver a intentar el arranque de uno de los nodos. En esta ocasión el nodo obtendrá su configuración y logrará cargar el kernel. El kernel realiza su proceso de arranque normal, pero se detendrá con un mensaje de error al intentar montar el sistema de archivos raíz por NFS. Se aprecia que el siguiente paso deberá ser configurar el servidor de NFS y proporcionar un directorio raíz adecuado para que el nodo lo monte y realice el resto del arranque de manera tradicional.


next up previous contents
Next: 3.2.3 Organización de sistemas Up: 3.2.2 Instalación y configuración Previous: 3.2.2.3 Cargador de arranque   Índice General
2002-05-15