Diskless nodes/es

Este CÓMO le ayudará a crear configuraciones de nodos sin disco en Gentoo Linux.

Acerca de este CÓMO
Este CÓMO le ayudará a configurar estaciones de trabajo "sin disco" basadas en la distribución Gentoo Linux. Hemos intentado hacerla fácil de usar y atractiva para el principiante, porque todos nosotros en algún momento hemos sido uno :&#41;. Si bien un usuario experimentado puede unir varios CÓMOS sobre nodos sin disco y juntarlos con otros sobre trabajo en red, esperamos que esta guía facilite la instalación a todos los usuarios interesados, geeks" o no.

¿Qué es una máquina sin disco?
Una máquina sin disco es un PC sin ninguno de los dispositivos de arranque tradicionales, como discos duros, disquetes o CD-ROMs. Un nodo sin disco arranca desde la red y por lo tanto necesita un servidor que le ofrezca un espacio de almacenamiento que pueda utilizar como disco local. De ahora en adelante llamaremos al servidor "maestro" y a la máquina sin disco "esclavo" (menudo nombre :). El nodo esclavo necesita un adaptador de red con soporte para el arranque PXE o Etherboot; eche un vistazo a Etherboot.org para obtener una lista de dispositivos soportados. La mayoría de tarjetas actuales soportan PXE y muchos de los adaptadores incorporados en las placas base también funcionarán.

Antes de empezar
Debe tener Gentoo instalado en su nodo maestro y tener espacio suficiente en él para almacenar los sistemas de ficheros de los nodos esclavos a los que vaya a servir. Además, asegúrese de tener una interfase conectada a Internet distinta de la que se utiliza para la conexión a la red local.

Acerca de los núcleos
El núcleo es el software situado entre el hardware y el resto de software instalado en su máquina, es esencialmente el corazón de un sistema operativo basado en núcleo. Cuando inicia su computadora, el BIOS ejecuta las instrucciones que están en el espacio reservado para el arranque en su disco duro. Estas instrucciones son típicamente un cargador de arranque que carga su núcleo. Después de que se ha cargado el núcleo, éste se ocupa de todos los demás procesos.

Para obtener más información acerca del núcleo o de su configuración, puede que quiera leer el CÓMO del núcleo.

Configurar el núcleo maestro
El núcleo maestro puede ser tan grande y personalizado como se desee, sin embargo, existen algunas opciones requeridas que se necesitan seleccionar. Teclee la siguiente orden para ir al menú de configuración del núcleo:

Debe aparecer una pantalla azul y gris que ofrece una alternativa segura para editar manualmente el fichero. Si el núcleo actual funciona correctamente, es recomendable que guarde el fichero de configuración, para ello puede salir de la interfaz gráfica y teclear:

Entre en los siguientes submenús y asegúrese de que las opciones listadas se construyen como integradas en el núcleo (built-in) (y "NO" como módulos). Las opciones mostradas abajo se han tomado de la versión 2.6.10 del núcleo. Si utiliza una versión distinta, el texto o la secuencia podrían diferir. Simplemente asegúrese de que selecciona al menos las opciones mostradas a continuación.

Si quiere acceder a Internet a través de su nodo maestro o tener un cortafuegos seguro, añade el soporte para iptables.

Si quiere activar el filtrado de paquetes, puede añadir el resto como módulos más tarde. Asegúrese de leer el Manual de seguridad Gentoo Capítulo 12 acerca de los Cortafuegos para saber cómo configurarlo de manera adecuada.

Después de haber reconfigurado el núcleo maestro, debe reconstruirlo:

A continuación añada una opción para el nuevo núcleo nuevo en o  dependiendo del cargador de arranque que utilice, y asegúrese de que el nuevo núcleo es la opción predeterminada. Ahora que la nueva bzImage se ha copiado al directorio de arranque, todo lo que necesita hacer para cargar estas nuevas opciones es reiniciar el sistema.

Acerca del núcleo esclavo
Recomendamos que compile su núcleo esclavo sin módulos, ya que cargar y configurarlos en un arranque por red es un proceso dificultoso e innecesario. Además, el núcleo esclavo debe ser tan simple y compacto como sea posible, para hacer el arranque a través de la red eficiente. Vamos a compilar el núcleo esclavo en el mismo lugar donde configuramos el núcleo maestro.

Para evitar cualquier confusión y desperdicio de tiempo es una buena idea hacer una copia de seguridad del fichero de configuración del núcleo maestro tecleando:

Ahora configuraremos el núcleo esclavo de la misma forma que lo hicimos con el núcleo maestro. Si va empezar con un fichero de configuración nuevo, recuerde que puede recuperar el fichero por defecto f tecleando:

Ahora entremos a la interfaz visual de configuración tecleando:

Debe asegurarse de seleccionar las siguientes opciones como integradas (built-in) y "NO" como módulos del núcleo:

Ahora necesitará compilar el núcleo esclavo. Tiene que ser cuidadoso en este paso ya que seguro que no quiere estropear los módulos (si es que hay alguno) que compiló para su núcleo maestro:

Ahora cree el directorio en el maestro que se utilizará para almacenar los ficheros del esclavo además de sus ficheros de sistema. Nosotros utilizamos un directorio pero puede elegir la ubicación que prefiera. Ahora, copie la bzImage de su esclavo dentro de :

Configurar un sistema de ficheros esclavo preliminar
Se pueden ajustar los sistemas de ficheros maestro y esclavo y cambiar bastante, pero por ahora solo nos interesa tener sistemas de ficheros preliminares con los ficheros de configuración apropiados y los puntos de montaje necesarios. Primero, necesitamos crear un directorio dentro de para el primer esclavo. Cada esclavo necesita su propio sistema de ficheros raíz porque compartir ciertos ficheros del sistema causará problemas con los permisos y caídas del sistema. Les puede poner a estos directorios los nombres que desee pero le sugerimos que utilice las direcciones IP de los esclavos, ya que estas son únicas y no confunden. La dirección IP estática de su primer esclavo sería, por ejemplo, :

Se necesitan modificar varios ficheros de configuración dentro de para que funcionen en el esclavo. Copie su directorio maestro en el nuevo directorio raíz de su esclavo tecleando:

Este sistema de ficheros no está listo aún porque necesita varios puntos de montaje y directorios. Para crearlos, teclee:

La mayoría de estos directorios le deben resultar familiares. Algunos como, o  se llenarán una vez haya arrancado el esclavo, los demás se montarán más tarde. Además, debe cambiar el fichero para que este contenga el nombre del anfitrión del esclavo. Los binarios, librerías y otros ficheros se copiarán más tarde en esta CÓMO antes de que intente iniciar el esclavo.

Aunque más tarde  se encargará de poblar, necesitará crear la entrada. En caso contrario, recibirá el error "no es posible abrir la consola inicial" ("unable to open initial console").

Acerca del servidor DHCP
DHCP son las iniciales (en inglés) de Protocolo Dinámico de Configuración del Anfitrión. El servidor DHCP es la primera máquina con la que el esclavo se comunicará en el momento del arranque PXE. El propósito principal del servidor DHCP es el de asignar las direcciones IP. El servidor DHCP puede asignar direcciones IP basándose en la dirección MAC Ethernet del anfitrión. Una vez que el esclavo tiene su dirección IP, el servidor DHCP le dirá donde conseguir su sistema de ficheros inicial y el núcleo.

Antes de empezar
Hay un par de cosas de las que debe comprobar su funcionamiento antes empezar. En primer lugar, revise la conectividad a la red:

Debe asegurarse de tener un dispositivo "eth0" funcionando. La salida de la orden anterior debe parecerse algo a esto:

Un dispositivo eth0 funcionando correctamente

Es importante que indique "MULTICAST", si no lo hace deberá recompilar su núcleo para incluir el soporte para multicast.

Instalar el servidor DHCP
Si su red no tiene un servidor DHCP instalado, deberá instalar uno:

Si su red ya tiene un servidor DHCP, deberá modificar el fichero de configuración de manera que tenga la función de arranque PXE correctamente configurada.

Configurar el servidor DHCP
Solo hay un fichero de configuración que tendrá que modificar antes de iniciar su servidor DHCP:. Copie y modifique el fichero de ejemplo que se ofrece:

La disposición general con sangrías del fichero se asemeja a esta:

Disposición ejemplo de dhcpd.conf

El bloque  es opcional y se debe utilizar para las direcciones IP que quiera asignar y que pertenecen a la misma topología de red. Al menos se debe declarar una  y el bloque opcional   le permitirá agrupar opciones entre elementos. Un buen ejemplo de es:

Sample dhcpd.conf

A la dirección IP después de  se le preguntará por el. Esta dirección IP debe ser la IP del servidor tftp, normalmente la misma dirección que el maestro. El  es relativo al directorio  (esto se debe a las opciones específicas del servidor tftp que serán explicadas más adelante). Dentro del bloque, la opción   especifica la dirección MAC, y   asigna la dirección IP estática a esa dirección MAC en particular. Hay una muy buena página de manual sobre el fichero con varias opciones que están más allá del ámbito de esta guía. La puede leer escribiendo:

Iniciar el servidor DHCP
Antes de lanzar el guión de inicialización del servidor dhcp, modifique el fichero de manera que se parezca a lo siguiente:

Ejemplo de /etc/conf.d/dhcp

La variable  es el dispositivo en el cual desea que el servidor DHCP funcione, en nuestro caso es. El hecho de añadir más argumentos a  puede ser útil en redes de topología compleja y múltiples tarjetas ethernet. Para arrancar el servidor dhcp escriba:

Para añadir el servidor dhcp a sus guiones de inicio escriba:

Solucionar problemas con el servidor DHCP
Para comprobar que un nodo arranca puede echarle un vistazo a. Si el nodo arranca correctamente, el fichero debería mostrar líneas al final parecidas a estas:

Entradas ejemplo en el fichero de registro creado por dhcp

Si recibe el siguiente mensaje, es probable que algo esté mal en el fichero de configuración pero que el servidor DHCP esté transmitiendo correctamente.

Ejemplo de un error en el servidor dhcp

Cada vez que haga un cambio en el fichero de configuración, deberá reiniciar el servidor DHCP. Para ello, escriba:

Acerca del servidor DHCP
TFTP son las (en inglés) siglas del Protocolo Trivial de Transferencia de Archivos. El servidor TFTP les va a dar a los esclavos el núcleo y un sistema de fichero inicial. Todos los núcleos esclavos y sistemas de ficheros deben estar almacenados en el servidor TFTP, así que es una buena idea hacer que el maestro también sea el servidor TFTP.

Instalar el servidor TFTP
Un servidor tftp altamente recomendado está disponible en el paquete tftp-hpa. Este servidor lo escribió el autor de SYSLINUX y funciona muy bien con pxelinux. Para instalarlo simplemente escriba:

Configurar el servidor TFTP
Edite el fichero. Necesitará especificar el directorio tftproot en la variable  y cualquier opción de la linea de comandos en. Debe parecerse a:

Ejemplo de /etc/conf.d/in.tftpd

La opción  indica que este servidor escucha en modo "stand alone" así que no necesita ejecutar inetd. La  indica que se deben mostrar los mensajes de registro o error. La  especifica el directorio raíz de su servidor tftp.

Iniciar el servidor TFTP
Para iniciar el servidor tftp, escriba:

Esta orden debe iniciar el servidor tftp con las opciones que hemos especificado en. Si quiere que este servidor se inicie automáticamente cuando arranque el sistema, escriba:

Acerca de PXELINUX
Esta sección no es obligatoria para aquellos que utilizan Etherboot. PXELINUX es el cargador de arranque por red equivalente a LILO y GRUB y será distribuido mediante el TFTP. Es esencialmente un conjunto mínimo de instrucciones que indica al cliente dónde encontrar su núcleo y sistema de ficheros inicial y permite varias opciones del núcleo.

Antes de empezar
Necesita obtener el fichero pxelinux.0 que viene en el paquete SYSLINUX de H. Peter Anvin. Lo puede instalar escribiendo:

Configurar PXELINUX
Antes de arrancar su servidor tftp necesita configurar pxelinux. En primer lugar, copie el binario de pxelinux en su directorio

Esto creará el fichero de configuración por defecto del cargador de arranque. El binario buscará en el directorio un fichero cuyo nombre sea la dirección IP del cliente en hexadecimal. Si no lo encuentra, eliminará el dígito más a la derecha del nombre del fichero y lo volverá a intentar hasta que se terminen los dígitos. Las versiones a partir de la 2.05 de syslinux realizan en primer lugar una búsqueda de un fichero cuyo nombre sea la dirección MAC. Si no se encuentra, ejecuta la rutina ya descrita. Si no se localiza ningún fichero, se utiliza.

Ficheros que busca PXE secuencialmente en pxelinux.cfg

Comencemos con el fichero :

Ejemplo de pxelinux.cfg/default

La etiqueta  le indica a pxelinux dónde está la bzImage del núcleo. La etiqueta  añade las opciones de arranque para el núcleo. Dado que hemos compilado nuestro núcleo con, debemos especificar la dirección raíz del nfs. La primera dirección IP es la del maestro y la segunda es el directorio que se creó en para almacenar el sistema de ficheros inicial del esclavo.

Acerca de Etherboot
Los inicios mediante Etherboot cargan la imagen para arrancar desde el servidor TFTP. Al igual que PXE, es equivalente a LILO o GRUB. La utilidad  le permite crear distintas imágenes con opciones diferentes.

Antes de empezar
Necesitará obtener el paquete  (utilidad para crear imágenes etiquetadas del núcleo que son útiles para el arranque  por red) para crear sus imágenes Etherboot. Esta utilidad creará una imagen del núcleo pre-configurada de su núcleo original. Esta contiene las opciones de arranque mostradas más adelante.

Configurar Etherboot
En esta sección crearemos una imagen simple de etherboot. Como el servidor dhcp le indica al cliente la dirección raíz en la opción "option root-path" del dhcp.conf, no necesitamos incluirla aquí. Más detalles en el manual de mknbi.

Crear la imagen de arranque. La siguiente orden creará la imagen ELF de arranque capaz de pasar el dhcp y la dirección del directorio raíz al núcleo. También obliga al núcleo a buscar en la red un servidor dhcp.

Solucionar problemas en el proceso de arranque por red
Hay un par de cosas que puede hacer para corregir errores en el proceso de arranque por red. Para empezar puede utilizar una herramienta llamada. Para instalarla, escriba:

Ahora puede escuchar el tráfico en la red y asegurarse de que las interacciones entre el cliente y el servidor funcionan correctamente. Si algo está mal hay un par de cosas que debería revisar. Primero asegúrese de que el cliente y el servidor estén físicamente bien conectados y que los cables no están dañados. Si su cliente o su servidor no están recibiendo pedidos a un puerto específico, compruebe la configuración del cortafuegos. Para escuchar la interacción entre dos computadores escriba:

You can also use  to listen on particular port such as the tftp port by typing:

A common error you might receive is: "PXE-E32: TFTP open time-out". This is probably due to firewall issues. If you are using , you might want to check  and  and make sure that they are configured properly. The client should be allowed to connect to the server.

About the NFS server
NFS stands for Network File System. The NFS server will be used to serve directories to the slave. This part can be somewhat personalized later, but right now all we want is a preliminary slave node to boot diskless.

About Portmapper
Various client/server services do not listen on a particular port, but instead rely on RPCs (Remote Procedure Calls). When the service is initialised it listens on a random port and then registers this port with the Portmapper utility. NFS relies on RPCs and thus requires Portmapper to be running before it is started.

Before you start
The NFS Server needs kernel level support so if you don't have this you should recompile your master's kernel. To double check your master's kernel configuration type:

You should see output that looks something like this if your kernel has been properly configured:

Installing the NFS server
The NFS package that can be acquired through portage by typing:

This package will emerge a portmapping utility, nfs server, and nfs client utilities and will automatically handle initialisation dependencies.

Configuring the NFS server
There are three major configuration files you will have to edit:

Nfs configuration files

The file specifies how, to who and what to export through NFS. The slave's fstab will be altered so that it can mount the NFS filesystems that the master is exporting.

A typical for the master should look something like this:

Sample master /etc/exports

The first field indicates the directory to be exported and the next field indicates to who and how. This field can be divided in two parts: who should be allowed to mount that particular directory, and what the mounting client can do to the filesystem:  for read only,   for read/write;   and   are important for diskless clients that are writing to the disk, so that they don't get "squashed" when making I/O requests. The slave's fstab file,, should look like this:

Sample slave fstab

In this example, master is just the hostname of the master but it could easily be the IP of the master. The first field indicates the directory to be mounted and the second field indicates where. The third field describes the filesystem and should be NFS for any NFS mounted directory. The fourth field indicates various options that will be used in the mounting process (see mount(1) for info on mount options). Some people have had difficulties with soft mount points so we made them all hard, but you should look into various options to make your cluster more efficient.

The last file you should edit is which describes a few options for nfs when it is initialised and looks like this:

Fichero ejemplo /etc/conf.d/nfs para el maestro

You should change  to the number of diskless nodes on the network.

Starting the NFS server
You should start the nfs server with its init script located in by typing:

If you want to this script to start when the system boots simply type:

Copy the missing files
We will now make the slave's file system in sync with the master's and provide the necessary binaries while still preserving slave specific files.

Configure diskless networking
In order to prevent the networking initscript from killing the connection to your NFS server, you will need to add an option to on your diskless client's filesystem.

Editing /etc/conf.d/net

Guiones de inicialización
You need as many init scripts under as you need services on your diskless nodes. It all depends on what you want your slaves to do.

Niveles de ejecución típicos del esclavo

Ahora es un buen momento para que iniciar sus esclavos y cruce los dedos. ¿Funciona? Felicidades, ahora es un orgulloso poseedor de nodo(s) sin disco :&#41;

Agradecimientos
Nos gustaría dar las gracias a los siguientes autores y editores por sus contribuciones a esta guía:


 * Michael Andrews
 * Kristian Jerpetjoen
 * Sven Vermeulen
 * Xavier Neys