Cómo arrancar a través de la red con Gentoo Linux
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:
- Cliente envía una solicitud ARP inversa (RARP) para una
dirección IP
- Un servidor responde al cliente con la dirección IP
- El cliente intenta descargar una imagen de arranque del
servidor RARP, usando el protocolo TFTP
- 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:
- 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.
- 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.
- Nadie responde a la petición RARPD porque no existe un servicio
pendiente de las mismas. Verifique que el servicio rarpd esté
funcionando.
- 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.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|