Gentoo Logo

Cómo arrancar a través de la red con Gentoo Linux

Contenido:

1.  Introducción

Nota: Esta guía se centra en el uso de hardware Sparc y asumiendo que el servidor netboot será una máquina Gentoo Linux.

Este documento describirá cómo configurar un entorno netboot para una computadora basada en Sun Microsystems Sparc o UltraSparc. Asume que dispone de una computadora Gentoo Linux para funcionar como servidor netboot.

Ambas máquinas, el servidor y el cliente netboot deberán estar en la misma subred ya que el protocolo ARP típicamente no se reenvía a otras subredes.

Una apreciación esquemática de lo que ocurre durante el proceso del netboot es el siguiente:

  1. Cliente envía una solicitud ARP inversa (RARP) para una dirección IP
  2. Un servidor responde al cliente con la dirección IP
  3. El cliente intenta descargar una imagen de arranque del servidor RARP, usando el protocolo TFTP
  4. Una vez descargada la imagen, el cliente netboot la usa para arrancar

Basándonos en este esquema, hará falta instalar software para un demonio ARP inverso y un demonio TFTP.

2.  Instalación y Configuración del Software

El demonio ARP Inverso

En su sistema se habrá instalado un demonio ARP inverso; es parte del paquete net-misc/iputils.

Configurando elementos comunes de rarpd: /etc/ethers

Necesitará configurar el fichero /etc/ethers. Este fichero indica las máquinas a las que rarpd debe responder cuando vea una petición, y con qué dirección debe responder.

El formato de /etc/ethers es la dirección MAC del interfaz con la cual arranca y su nombre. El espacio en blanco separa la dirección MAC del nombre del anfitrión y cada entrada se hace en una línea. El siguiente ejemplo es para un anfitrión llamado sparc-netboot.gentoo.org:

Listado de Código 2.1: Ejemplo de /etc/ethers

08:00:20:77:1f:3e  sparc-netboot.gentoo.org

Nota: Si algún número hexadecimal de la dirección MAC comienza en o es 0, puede escoger omitir el primer 0 (por ejemplo 08:00:20:77:1f:3e se convertiría en 8:0:20:77:1f:3e).

Si desea agregar anfitriones adicionales a /etc/ethers, no es necesario reiniciar el servicio rarpd ya se revisa este archivo cada vez que se reciba una solicitud.

Resolviendo nombres de anfitriones: /etc/hosts

Ya que cada entrada de /etc/ethers tiene un nombre de anfitrión, el servidor netboot debe poder resolver la dirección IP con respecto al nombre. Esto puede hacerse de dos maneras, por medio del archivo /etc/hosts o con el servidor dns usado por el servidor netboot.

Una entrada en el archivo /etc/hosts para resolver el nombre de un anfitrión será similar al que existe desde el momento que se instaló Gentoo en el servidor netboot. Para nuestro anfitrión ejemplo, sparc-netboot.gentoo.org, asumiremos que tiene la dirección IP 10.0.1.15. De manera que la entrada correspondiente en el archivo /etc/hosts sería:

Listado de Código 2.2: /etc/hosts

10.0.1.15  sparc-netboot.gentoo.org

Nota: Dependiendo del entorno, hará falta consultar al administrador de la red para obtener una dirección o direcciones IP apropiadas con las cuales arrancar a los anfitriones.

Si usa un servidor DNS, entonces hará falta que el administrador del servidor DNS agregue un registro para el anfitrión, en nuestro ejemplo el sparc-netboot.gentoo.org apuntar a la dirección IP apropiada. Por favor consulte con el administrador del servidor DNS y/o la documentación del software del servidor DNS acerca de cómo agregar este registro.

Nota: Si /etc/hosts y el servidor DNS tienen entradas para el anfitrión a ser arrancado a través de la red, el archivo /etc/hosts será usado primero (en caso que el orden especificado en el archivo /etc/nsswitch.conf no haya sido alterado).

Configurando rarpd

Primero debemos averiguar cuáles opciones usar para el rarpd. Como hay más opciones que las cubiertas en esta guía, éstas servirán para iniciar. Como actualmente no existe un guión para rarpd, se necesita añadir una entrada a /etc/conf.d/local.start si quiere activar los servicios rarpd al iniciar el sistema. A continuación se muestra un ejemplo:

Listado de Código 2.3: /etc/conf.d/local.start

/usr/sbin/rarpd -v -e eth0

Una explicación de las opciones usadas anteriormente con rarpd (tomadas de la página man):

  • -v opción informativa
  • -e no revise la existencia de una imagen de arranque, responda solamente si la dirección MAC resuelve a una dirección IP válida usando los datos en /etc/ethers y DNS
  • eth0 representa el interfaz usado por rarpd

Para más opciones, consulte man 8 rarpd.

El demonio tftpd

Existen dos opciones para un demonio TFTP, net-ftp/atftp y net-ftp/tftp-hpa. Solo necesita instalar uno de ellos para poder operar correctamente.

Configurando elementos comunes del tftpd

Cada demonio TFTP necesita un directorio desde donde servir archivos a sus clientes tftp. El directorio que usaremos para esta guía será /tftpboot. Este aparecerá como el directorio raíz (/) al recibir solicitudes. Adicionalmente, configuraremos el sistema para ejecutar el demonio TFTP como usuario y grupo nobody.

Si el directorio que ha escogido no existe, habrá que crearlo con la orden mkdir. La orden para el ejemplo /tftpboot es:

Listado de Código 2.4: Crear el directorio /tftpboot

# /bin/mkdir /tftpboot

Entonces necesitaremos cambiar el dueño de /tftpboot al usuario nobody y el grupo nobody:

Listado de Código 2.5: Cambiar la propiedad

# chown nobody:nobody /tftpboot

El demonio atftp

Primero instalamos el paquete atftp así:

Listado de Código 2.6: Instalar atftp

# emerge atftp

Luego de haber instalado el paquete atftp habrá que configurarlo. Si se desea proveer servicio tftpd al arrancar, debe agregarse al /etc/conf.d/local.start porque atftp no tiene guión init.d, inetd o xinetd propio. Si quiere usar inetd o xinetd para controlar el servicio tftpd, por favor vea las páginas man respectivas.

A continuación un ejemplo de una entrada para atftpd en /etc/conf.d/local.start:

Listado de Código 2.7: /etc/conf.d/local.start

/usr/sbin/in.tftpd -v --daemon /tftpboot

La explicación de las opciones usadas arriba (tomadas de la página man):

  • -v Aumentar o establecer el nivel de gestión de registro. Usado sin argumentos, aumenta el nivel actual de registro. El valor por defecto es LOG_NOTICE, vea syslog(3) para una descripción de este nivel. La gama actual va desde 0 (LOG_EMERG) a 7 (LOG_DEBUG)
  • --daemon Ejecutar como demonio. No use esta opción si atftpd es iniciado por inetd.

Para más opciones, consulte man 8 atftpd.

El demonio tftp-hpa

Primero instale el paquete tftp-hpa usando la siguiente orden:

Listado de Código 2.8: Instalar tftp-hpa

# emerge tftp-hpa

tftp-hpa incluye un guión init.d y su consiguiente archivo de configuración conf.d. Asegúrese que INIITFTPD_PATH e INITFTP_OPTS en /etc/conf.d/in.tftpd sean iguales a estos valores:

Listado de Código 2.9: /etc/conf.d/in.tftpd

INTFTPD_PATH="/tftpboot"
INTFTPD_OPTS="-s -v -l ${INTFTPD_PATH}"

El demonio TFTP puede ser iniciado por medio del guión init.d:

Listado de Código 2.10: Iniciar in.tftpd

# /etc/init.d/in.tftpd start

Para más opciones, consulte man 8 tftpd.

3.  Preparando una imagen tftpboot para ser usada por un cliente

Asegúrese de tener una imagen que quiera usar para arrancar a través de la red. Por favor, compruebe sus servidores Gentoo locales y réplica de ficheros de distribución para la imagen apropiada. asumiremos que está intentando arrancar usando la imagen gentoo-sparc64-20100128.tftpboot.

Una vez que tiene la imagen, cópiela al directorio /tftpboot:

Listado de Código 3.1: Copiar la imagen

# cp gentoo-sparc64-20100128.tftpboot /tftpboot
# chmod 644 /tftpboot/gentoo-sparc64-20100128.tftpboot

Ahora, cuando el cliente netboot hace una solicitud TFTP, busca un archivo que corresponda al número hexadecimal de su dirección IP actual, y en algunas plataformas adicionalmente un sufijo .ARCH. El número hexadecimal debe ser escrito con mayúsculas.

Veamos el equivalente hexadecimal para nuestra dirección IP de ejemplo:

Listado de Código 3.2: Conversión a hexadecimal

# printf "%.2X%.2X%.2X%.2X\n" 10 0 1 15

Listado de Código 3.3: Dirección IP de ejemplo

decimal       10  0   1   15
hexadecimal   0A  00  01  0F

De manera que para nuestro cliente netboot de ejemplo, se buscaría un archivo llamado 0A00010F al arrancar por tftp.

Si no se siente con ganas (como yo), puede hacer netboot del host para obtener el nombre de fichero que el cliente está buscando comprobando los registros del servidor.

Asegúrese de que los demonios rarpd y TFTP daemon que ha elegido están ejecutándose, entonces arranque el servidor como se describe abajo en Arrancando el cliente a través de la red .

El cliente aparentará colgarse después de lanzar la orden de arrancar a través de la red y luego en el servidor, revise los registros para una entrada correspondiente a in.tftpd.

Una entrada de ejemplo de un servidor netboot corriendo el gestor sysklogd y tftp-hpa se parecerá a:

Listado de Código 3.4: Entrada en el registro del sistema del servidor netboot

Jan  3 22:48:59 stargazer in.tftpd[8368]: RRQ from 10.0.1.15 filename 0A00010F

El nombre del archivo aparece después de "filename" en la entrada de registro, que en este caso es 0A00010F.

Una manera de controlar cual imagen netboot está usando y para permitir que múltiples máquinas usen la misma imagen, use un enlace simbólico para crear el archivo con nombre en valores hexadecimales. Para nuestro anfitrión ejemplo sparc64 y la imagen gentoo-sparc64-1.4_rc4-20040102.tftpboot, use la siguiente orden:

Listado de Código 3.5: Enlaces simbólicos al archivo de imagen

# /bin/ln -s /tftpboot/gentoo-sparc64-20100128.tftpboot \
/tftpboot/0A00010F

¡Ahora todo está listo para arrancar a través de la red!

4.  Arrancando el cliente a través de la red

En el símbolo de espera de órdenes PROM OpenBoot (OBP) en el SPARC, escriba la orden:

Listado de Código 4.1: Arrancar en el OBP

ok boot net

Otra forma para ciertas máquinas sería:

Listado de Código 4.2: Arrancado en el OBP, manera alternativa

ok boot net-tpe

Nota: Si el sistema no presenta ningún símbolo de espera de órdenes OBP al arrancar, deberá pulsar las teclas Stop y A, o enviar una señal break por medio de la consola serie antes que el sistema inicie un sistema operativo. Si no se encuentra un sistema operativo, debería intentar arrancar a través del interfaz de red (que es lo que queremos), o dejarlo en un símbolo de espera de órdenes OBP.

Esto iniciaría el proceso de arranque a través de la red. Deben aparecer unos dígitos hexadecimales constantemente cambiantes. Al terminar de descargar la imagen, el núcleo tomará control e iniciará el proceso de arranque del sistema operativo. En el caso de nuestra imagen de instalación sparc64, terminará en un símbolo de espera de órdenes del intérprete de comandos, desde el cual puede comenzar el proceso de instalación.

5.  Solucionando problemas

Construyendo los pre-requisitos de software

Si el servidor netboot es un sistema Gentoo Linux y experimenta problemas instalando los paquetes rarpd y tftpd, por favor busque a través de Foros de Gentoo y Bugzilla Gentoo para determinar si el mismo problema ha sido encontrado por otra persona. Si no, o si las soluciones encontradas no funcionan, por favor archive un bug nuevo.

He usado la orden boot net pero aparentemente el equipo se colgó.

Presumiblemente es porque el archivo que el sistema está tratando de descargar no está disponible. En un sistema Sparc probablemente verá lo siguiente:

Listado de Código 5.1: El arranque aparenta estar colgado

Rebooting with command: boot
Boot device: net  File and args:

Revise si el archivo solicitado por el cliente realmente exista en /tftpboot. Puede confirmar el nombre del archivo solicitado mirando en los registros del sistema. Además, una vez que exista este archivo, el cliente tratará de descargarlo. A veces, cuando el archivo falta originalmente, la descarga se congela una vez que éste aparece. Para resolver esto, regrese al símbolo de espera de órdenes OBP y vuelva a escribir boot net. Entonces el anfitrión deberá empezar a descargar la imagen y arrancar el sistema operativo.

Intento hacer netboot, pero lo único que veo son mensajes que dicen "Timeout waiting for ARP/RARP packet" messages.

Esto puede ser debido a varios problemas distintos:

  1. Asegúrese que la entrada en el archivo /etc/ethers existe para el cliente en cuestión. Si la dirección MAC no es la correcta y/o el servidor netboot no logra resolver el nombre del anfitrión cliente, no podrá responder con la información necesaria.
  2. Verifique que el concentrador o o switch de la red al cual están conectados el servidor y el cliente permitan fluir libremente el tráfico RARP. Si la petición por parte del cliente no puede llegar al servidor o vice versa, el anfitrión no podrá continuar.
  3. Nadie responde a la petición RARPD porque no existe un servicio pendiente de las mismas. Verifique que el servicio rarpd esté funcionando.
  4. El cliente piensa que su interfaz no está conectado al concentrador/switch de la red a la cual está enchufado. Revise si el interfaz de red tiene una luz indicadora de conexión. Si está encendida, revise el contenido de tpe-link-test? en el OBP con la orden: printenv tpe-link-test?. Deberá recibir algo así como tpe-link-test? false true. La primera columna representa el nombre del parámetro, la segunda muestra el valor actual y la tercera el valor por defecto. En el ejemplo anterior podemos ver que el valor actual es falso, significando que el cliente no está constatando si el cliente y el concentrador/switch pueden establecer una conexión antes de llevar a cabo su petición RARP. A veces esto puede ser la causa de problemas.

Para cambiar el valor de tpe-link-test? desde el símbolo de espera de órdenes OBP, ejecute la siguiente orden:

Listado de Código 5.2: Cambiar el valor de tpe-link-test?

ok setenv tpe-link-test? true
tpe-link-test? =      true

Esto demuestra que el valor de tpe-link-test? ahora es verdadero. Intente el netboot otra vez.



Imprimir

Página actualizada 8 de julio, 2012

Sumario: Esta es una guía para configurar un servidor para arrancar a través de la red (de ahora en adelante referido, más sucintamente como netboot) usando las imágenes netboot de instalación Gentoo/Sparc.

Jason Wever
SPARC Developer

Joshua Saddler
Editor

John Christian Stoddart
Traductor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.