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.

For more information on kernels and kernel configuration check out the kernel article.

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:

If packet filtering is required, add the rest as modules later. Make sure to read the Gentoo Security Handbook Chapter about Firewalls on how to set this up properly.

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
The master and slave filesystems can be tweaked and changed a lot. Right now the only point of interest is in getting a preliminary filesystem of appropriate configuration files and mount points. First it's required to create a directory within for the first slave. Each slave needs its own root file system because sharing certain system files will cause permission problems and hard crashes. These directories can be called anything the administrator deems appropriate but the article suggests using the slaves IP addresses as they are unique and not confusing. The static IP of the first slave will be, for instance,  :

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.

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

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 que se debe comprobar que funcionan correctamente antes empezar. En primer lugar, revisar la conectividad a la red:

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

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

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

Si lared ya tiene un servidor DHCP, se deberá modificar el fichero de configuración de manera que se active el arranque PXE para que funcione correctamente.

Configurar el servidor DHCP
Solo se necesita editar un fichero de configuración antes de iniciar el servidor DHCP:. Copiar y modificar el fichero de ejemplo que se ofrece:

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

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

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. Se puede leer la página del manual tecleando:

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:

La variable  es el dispositivo en el cual desea el servidor DHCP va a correr, en este 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 hay que teclear:

Para añadir el servidor dhcp a los guiones de inicio escribir:

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:

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

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

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
Editar el fichero. Se neceista especificar el directorio tftproot en la variable  y cualquier opción de la linea de comandos en. Debe parecerse a:

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

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

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

Acerca de PXELINUX
Esta sección no es obligatoria para aquellos casos en los que solo se utiliza 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
Ahora se necesita el fichero pxelinux.0 que forma parte del paquete SYSLINUX de H. Peter Anvin. Se puede instalar este paquete escribiendo:

Configurar PXELINUX
Antes de arrancar el servidor tftp, se necesita configurar pxelinux. En primer lugar, copiar el binario de pxelinux en el 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.

Comencemos con el fichero :

La etiqueta  le indica a pxelinux dónde está la bzImage del núcleo que se compiló anteriormente. La etiqueta  añade las opciones de arranque para el núcleo. Dado que el núcleo se ha compilado con con, se debe especificar aquí 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  permite crear distintas imágenes con opciones diferentes.

Antes de comenzar
Se necesita obtener el paquete  (utilidad para crear imágenes etiquetadas del núcleo que son útiles para el arranque  por red) para crear las imágenes Etherboot. Esta utilidad creará una imagen preconfigurada del núcleo original. Esta contiene las opciones de arranque mostradas más adelante.

Configurar Etherboot
En esta sección se creará 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 es necesario 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 se pueden hacer para depurar errores que se produzcan en el proceso de arranque por red. Para empezar se puede utilizar una herramienta llamada. Para instalarla, escribir:

Ahora se puede escuchar el tráfico en la red para asegurarse de que las interacciones entre el cliente y el servidor funcionan correctamente. Si algo está mal hay un par de cosas que se pueden 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 el cliente o el 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:

Se puede también configurar la  para que escuche en un puerto en particular como el puerto tftp. Para ello, escribir:

Un error que comúnmente se recibe es "PXE-E32: TFTP open time-out". Esto es probablemente debido a problemas con el cortafuegos. Si se está utilizando, es conveniente revisar los ficheros  y  para asegurarse de que están bien configurados. Se debe permitir al cliente conectarse al servidor.

Acerca del servidor NFS
NFS son las siglas (en inglés) de Sistema de Ficheros en Red. El servidor NFS será utilizado para ofrecer al esclavo sus directorios. Esta parte se puede personalizar más tarde, por ahora, lo que se busca es tener el nodo esclavo funcionando sin disco.

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
El servidor NFS necesita soporte al nivel del núcleo así que si no se incluyó en el momento de su compilación, se neceista recompilar el núcleo maestro. Para revisar la configuración del núcleo maestro, escribir:

La salida se debe parecer a la siguiente si el núcleo está correctamente configurado:

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
Hay tres ficheros de configuración principales que se deben editar:

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:

En este ejemplo, "master" es solo el nombre de anfitrión del maestro pero podría fácilmente ser la dirección IP del maestro. El primer campo indica el directorio a montar y el segundo indica dónde. El tercer campo describe el sistema de ficheros y debe ser NFS para cualquier directorio NFS montado. El cuarto campo indica varias opciones que deben ser utilizadas en el proceso de montaje (eche un vistazo a mount(1) para obtener más información acerca de las opciones de montaje). Algunos usuarios han tenido dificultad con puntos de montaje suaves así que aquí se ha realizado con montajes duros, pero se deben revisar varias opciones en para que el cluster trabaje de forma más eficiente.

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
Para evitar que el guión de inicio de red corte la conexión al servidor NFS, se necesita agregar una opción al fichero del sistema de ficheros del cliente sin disco.

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.