Diskless nodes/es

Este CÓMO le ayudará a crear y poner en marcha 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. Esta guía está orientada a que este proceso sea lo más fácil posible para el usuario principiante de Linux, 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, se espera 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 será el "maestro" y 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
Se debe instalar Gentoo en el maestro y tener espacio suficiente en él para almacenar los sistemas de ficheros de los nodos esclavos a los que se vaya a servir. Además, debe existir una interfaz 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 que se carga en la máquina, es esencialmente el corazón de un sistema operativo basado en núcleo. Cuando se inicia la computadora, el BIOS ejecuta las instrucciones que están en el espacio reservado para el arranque en el disco duro. Estas instrucciones son típicamente un cargador de arranque que carga el 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, se puede 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. Teclear la siguiente orden para ir al menú de configuración del núcleo:

Debería 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 se 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 se utiliza una versión distinta, el texto o la secuencia podrían diferir. Simplemente asegúrese de seleccionar al menos las opciones mostradas a continuación.

Si se tiene que acceder a Internet a través del nodo maestro o se necesita un cortafuegos seguro, asegurarse de añadir el soporte para iptables:

Si se necesita filtrado de paquetes, añada 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.

Una vez haya reconfigurado el núcleo, necesitará reconstruirlo:

A continuación añada una opción para el nuevo núcleo nuevo en o  dependiendo del cargador de arranque que se esté utilizando 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 (boot), todo lo que se necesita hacer para cargar estas nuevas opciones es reiniciar el sistema.

Acerca del núcleo esclavo
Recomendamos compilar el núcleo esclavo sin módulos, ya que cargar y configurarlos en un arranque por red es un proceso difícil 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. Se compilará el núcleo esclavo en el mismo lugar en el que se configuró 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 se configura el núcleo esclavo de la misma forma que el núcleo maestro. Si se necesita un nuevo fichero de configuración, se puede recuperar desde el fichero por defecto tecleando:

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

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

Ahora hay que compilar el núcleo esclavo. Se debe ser cuidadoso en este paso ya para no sobrescribir o estropear los módulos (si es que hay alguno) que ya se compilaron para el 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. Aquí se utiliza el directorio pero se puede elegir otra ubicación que se prefiera. A continuación copiar el fichero bzImage del 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 el único punto de interés es tener los sistemas de ficheros preliminares con los ficheros de configuración apropiados y los puntos de montaje necesarios. Primero, es necesario 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. Estos directorios se pueden nombrar de cualquier forma que el administrador considere oportuna, sin embargo, se recomienda utilizar las direcciones IP de los esclavos, ya que estas son únicas y no confunden. La dirección IP estática del 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 del 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, se debe cambiar el fichero para que contenga el nombre del anfitrión del esclavo. Los binarios, librerías y otros ficheros se copiarán más tarde en este CÓMO antes de que se intente iniciar el esclavo.

Even though is populated by   later on, the  entry needs to be created. If not, the error message "unable to open initial console" will be encountered.

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
There are several things to make sure of, that they are working properly before beginning. First check the network connectivity:

Asegúrese de tener un dispositivo "eth0" funcionando. La salida de la orden anterior debe parecerse algo a esto:

It's important that it says MULTICAST, if it doesn't then the kernel will have to be recompiled to include multicast support.

Instalar el servidor DHCP
If the network does not already have a DHCP server installed, one needs to be installed now:

If the network already has a DHCP server installed, edit the configuration file to get the PXE boot to function correctly.

Configurar el servidor DHCP
There is only one configuration file that needs to be edited before starting the DHCP server:. Copy and edit the provided sample file:

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

The  block is optional and should be used for IPs that are required to be assigned that belong to the same network topology. At least one  must be declared and the optional   block allows options to be grouped between items. A good example of looks like this:

The IP address after  will be asked for the specified. This IP address should be the IP of the tftp server, usually the same as the master's IP address. The  is relative to the  directory (this is due to the tftp server specific options which will be covered later). Inside the  block, the   option specifies a MAC address, and   assigns a fixed IP address to that particular MAC address. There is a pretty good man page on with options that are beyond the scope of this HOWTO. The man page can be read by typing:

Iniciar el servidor DHCP
Before starting the dhcp initialization script edit the file so that it looks something like this:

The  variable is the device that the DHCP server will be running on, in this case. Adding more arguments to the  variable can be useful for a complex network topology with multiple Ethernet cards. To start the dhcp server type:

To add the dhcp server to the start-up scripts type:

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

If the following message is encountered it probably means there is something wrong in the configuration file but that the DHCP server is broadcasting correctly.

Every time after changing the configuration file the DHCP server must be restarted. To restart the server type:

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
Edit. The tftproot directory needs to specified with  and any command line options with. It should look something like this:

The  option indicates that this server listens in stand alone mode so inetd does not have to be run. The  indicates that log/error messages should be verbose. The  specifies the root of the tftp server.

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

This should start the tftp server with the options that were specified in the. If this server is to be automatically started at boot type:

Acerca de PXELINUX
This section is not required if only Etherboot is being used. PXELINUX is the network bootloader equivalent to LILO or GRUB and will be served via TFTP. It is essentially a tiny set of instructions that tells the client where to locate its kernel and initial filesystem and allows for various kernel options.

Antes de empezar
Now the file pxelinux.0 is required, which comes in the SYSLINUX package by H. Peter Anvin. This package can be installed by typing:

Configurar PXELINUX
Before starting the tftp server pxelinux needs to be set up. First copy the pxelinux binary into the directory:

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.

Comencemos con el fichero :

The  tag directs pxelinux to the kernel bzImage that was compiled earlier. The  tag appends kernel initialisation options. Since the slave kernel was compiled with , the nfsroot will be specified here. The first IP is the master's IP and the second IP is the directory that was created in to store the slave's initial filesystem.

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  permite crear distintas imágenes con opciones diferentes.

Antes de comenzar
The  (utility for making tagged kernel images useful for netbooting) package is needed to create the Etherboot images. This tool will create a preconfigured kernel image from the original kernel. This contains the boot options as shown further down.

Configurar Etherboot
In this section a simple etherboot image will be created. As the dhcp server gives out the clients root-path in the "option root-path" dhcp.conf, this does not have to be included here. More details can be found in the mknbi manual.

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
There are a few things that can be done to debug the network boot process. Primarily a tool called  can be used. To install  type:

Now various network traffic can be listened to, to make sure the client/server interactions are functioning. If something isn't working there are a few things that could be checked. First make sure that the client/server is physically connected properly and that the networking cables are not damaged. If the client/server is not receiving requests on a particular port make sure that there is no firewall interference. To listen to interaction between two computers type:

The  command can also be configured to listen on particular port such as the tftp port by typing:

A common error that might be received is: "PXE-E32: TFTP open time-out". This is probably due to firewall issues. If  is being used, it might be worth checking  and  and make sure that they are configured properly. The client should be allowed to connect to the server.

Acerca del servidor NFS
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 that is wanted is a preliminary slave node to boot diskless.

Acerca de Portmapper
Algunos servicios cliente/servidor no escuchan en un puerto en particular, en cambio utilizan RPCs (llamadas a procedimientos remotos). Cuando se inicializa un servicio, escucha en un puerto al azar y luego registra este puerto en la utilidad Portmapper. NFS utiliza RPCs y por lo tanto requiere tener a Portmapper corriendo antes de su inicio.

Antes de comenzar
The NFS Server needs kernel level support so if the kernel does not have this, the master's kernel needs to be recompiled. To double check the master's kernel configuration type:

The output should look something like this if the kernel has been properly configured:

Instalar el servidor NFS
El paquete NFS se puede instalar mediante portage escribiendo:

Este paquete instalará la utilidad portmapping, el servidor nfs, y las utilidades nfs del cliente y automáticamente gestionará la inicialización de las dependencias.

Configurar el servidor NFS
There are three major configuration files that will have to be edited:

El fichero especifica como, a quién y qué se debe exportar a través de NFS. Se debe modificar el fstab del esclavo para que pueda montar el sistema de ficheros NFS que el maestro está exportando.

Un fichero típico del maestro se parece a esto:

El primer campo indica el directorio que será exportado y el siguiente indica a quién y cómo. Este campo puede dividirse en dos partes: a quién se le debe permitir montar ese directorio en particular, y qué puede hacer el cliente con él:  de solo lectura,   de lectura y escritura;   y   son importantes para clientes sin disco que escriben en el disco de manera que no sean "apretados" al hacer pedidos de E/S. El fichero fstab del esclavo,, debe ser similar a este:

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 here they are made hard mounts, a look into various options should be done to make the cluster more efficient.

El último fichero que se debe modificar es que describe las opciones del nfs cuando es inicializado y es parecido a este:

Se debe cambiar  por el número de nodos sin disco en la red.

Iniciar el servidor NFS
Se debe iniciar el servidor nfs con el guión de inicio localizado en, escribiendo:

Para que este guión se ejecute cada vez que se inicie el sistema, simplemente escribir:

Copiar los ficheros que faltan
Ahora se sincronizarán el sistema de ficheros del esclavo con el del maestro y se ofrecerán los binarios necesarios, preservando los ficheros específicos del esclavo.

Configurar la red sin disco
In order to prevent the networking initscript from killing the connection to the NFS server, an option needs to be added to on the diskless client's filesystem.

Guiones de inicialización
Los guiones de inicio para los esclavos están localizados en para los servicios que se necesitan en los nodos sin disco. Cada esclavo se puede configurar y poner en marcha aquí, esto depende únicamente de lo que se desee realizar con cada nodo esclavo.

Ahora es un buen momento para iniciar los esclavos y cruzar los dedos. ¿Funciona? Felicidades, ahora es un orgulloso poseedor de un(os) nodo(s) sin disco.