4.4. Preparación de los ficheros para el arranque a través de red usando TFTP

Si su máquina está conectada a una red de área local, podría tener la posibilidad de arrancarla a través de la red desde otra máquina, usando TFTP. Si pretende arrancar el sistema de instalación desde otra máquina, debe ubicar los ficheros de arranque necesarios en lugares específicos en esa máquina, y debe configurarla para soportar el arranque desde ella.

Necesita configurar un servidor TFTP, y en caso de que tenga varias máquinas, un servidor BOOTP , ó un servidor RARP , ó un servidor DHCP.

El protocolo de resolución reversa de dirección (RARP) es una forma de decirle al cliente que dirección IP debe usar. Otra forma es usar el protocolo BOOTP. BOOTP es un protocolo IP que informa al ordenador de su dirección IP y desde dónde puede obtener una imagen de arranque en la red. El DHCP (Protocolo de configuración dinámica de sistema) es una extensión de BOOTP compatible con éste, pero más flexible. Algunos sistemas solamente pueden configurarse a través de DHCP.

El protocolo de transferencia trivial de ficheros (TFTP) se usa para servir la imagen de arranque al cliente. Teóricamente, se puede usar cualquier servidor, en cualquier plataforma, que implemente este protocolo. En los ejemplos de esta sección, mostraremos órdenes para SunOS 4.x, SunOS 5.x (conocido también como Solaris) y GNU/Linux.

4.4.1. Configuración del servidor RARP

Para configurar RARP, necesita saber las direcciones Ethernet (también conocidas como direcciones MAC) de los ordenadores cliente a instalar. Si no conoce esta información, puede tomarla de los mensajes iniciales de arranque de OpenPROM, use la orden .enet-addr de OpenBoot, o arrancar en modo «Rescue» (p. ej. desde el disquete de rescate) y usar la orden /sbin/ifconfig eth0.

En un servidor RARP con un núcleo Linux 2.2.x, necesitará rellenar la tabla RARP del núcleo. Para hacer esto, ejecute las siguientes órdenes.

# /sbin/rarp -s 
client-hostname
client-enet-addr

# /usr/sbin/arp -s 
client-ip
client-enet-addr

Si obtiene

SIOCSRARP: Invalid argument

probablemente necesite cargar el módulo RARP del núcleo o recompilarlo para que soporte RARP. Intente modprobe rarp y luego intente nuevamente ejecutar la orden rarp.

En un servidor RARP con un núcleo Linux 2.4.x, no hay ningún módulo RARP, y en su lugar debe usar el programa rarpd. El procedimiento es similar al que usa SunOS, descrito en el siguiente párrafo.

En SunOS, necesita asegurarse de que la dirección hardware Ethernet del cliente está en la base de datos «ethers» (ya sea en el fichero /etc/ethers, o a través de NIS/NIS+) y el la base de datos «hosts». Después necesita iniciar el demonio RARP. En SunOS 4, use a la orden (como superusuario): /usr/etc/rarpd -a; en SunOS 5, use /usr/sbin/rarpd -a.

4.4.2. Configuración del servidor BOOTP

Existen dos servidores BOOTP disponibles para GNU/Linux, el bootpd de CMU y el otro que en realidad es un servidor DHCP, el dhcpd de ISC. En Debian GNU/Linux vienen en los paquetes bootp y dhcp.

Para usar el bootpd de CMU, primero debe comentar (o añadir) la línea relevante en /etc/inetd.conf. En Debian GNU/Linux, puede ejecutar update-inetd --enable bootps, y luego /etc/init.d/inetd reload para hacerlo. En cualquier caso, la línea en cuestión deberá ser como la siguiente:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Ahora, debe crear el fichero /etc/bootptab. Tiene el mismo tipo de formato familiar y críptico que los ficheros antiguos de BSD printcap, termcap, y disktab. Vea la página de manual de bootptab para más información. Para el bootpd de CMU, necesitará conocer la dirección de hardware (MAC) del cliente. Éste es un /etc/bootptab de ejemplo:

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

Necesitará cambiar por lo menos la opción "ha", que especifica la dirección hardware del cliente. La opción "bf" especifica el fichero que el cliente debe recuperar a través de TFTP; para más detalles vea Sección 4.4.5, “Mover las imágenes TFTP a su ubicación”.

En contraste, configurar BOOTP con el dhcpd de ISC es realmente fácil, porque trata los clientes BOOTP como casos moderadamente especiales de clientes DHCP. Algunas arquitecturas necesitan una configuración compleja para arrancar clientes a través de BOOTP. Si la suya es una de éstas, lea la sección Sección 4.4.3, “Configuración del servidor DHCP”. De otro modo, probablemente pueda continuar con sólo añadir la directiva allow bootp al bloque de configuración para la sub-red donde esté el cliente, y reiniciar dhcpd con /etc/init.d/dhcpd restart.

4.4.3. Configuración del servidor DHCP

Un servidor DHCP considerado software libre es el dhcpd de ISC. En Debian GNU/Linux, está disponible en el paquete dhcp. A continuación se muestra una configuración de ejemplo para él (generalmente /etc/dhcpd.conf):

option domain-name "ejemplo.com";
option domain-name-servers ns1.ejemplo.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "nombredeservidor";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host nombredecliente {
  filename "/tftpboot/tftpboot.img";
  server-name "nombredeservidor";
  next-server nombredeservidor;
  hardware ethernet 01:23:45:67:89:AB; 
  fixed-address 192.168.1.90;
}

Nota: el nuevo (y preferido) paquete dhcp3 usa /etc/dhcp3/dhcpd.conf.

En este ejemplo, hay un servidor "nombredeservidor" que hace el trabajo de DCHP, servidor, servidor TFTP y puerta de enlace de la red. Ciertamente necesitará cambiar las opciones de nombre de dominio, así como la dirección hardware del servidor y del cliente. La opción "filename" debe ser el nombre del fichero que se recuperará a través de TFTP.

Después de editar el fichero de configuración de dhcpd, reinícielo con /etc/init.d/dhcpd restart.

4.4.4. Habilitación del servidor TFTP

Para tener listo el servidor TFTP, primero deberá asegurarse que tftpd está habilitado. Generalmente se hace añadiendo a /etc/inetd.conf algo similar a lo siguiente:

tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Los paquetes de Debian cuando se instalan, por lo general, lo configuran correctamente de forma predeterminada.

Busque en ese fichero y recuerde el directorio que usa como argumento de in.tftpd; lo necesitará mas adelante. El argumento -l hace que algunas versiones de in.tftpd registren todas las peticiones en los registros del sistema; es útil para diagnosticar fallos de arranque. Si ha tenido que cambiar /etc/inetd.conf, deberá notificar al proceso inetd en ejecución que el fichero ha cambiado. En una sistema Debian, ejecute /etc/init.d/inetd reload; en otros sistemas, busque el ID del proceso inetd, y ejecute kill -HUP id-de-inetd.

4.4.5. Mover las imágenes TFTP a su ubicación

Seguidamente, localice la imagen TFTP de arranque que necesita, como se describe en la Sección 4.2.1, “Dónde encontrar las imágenes de instalación”, en el directorio de imagen de arranque de tftpd. Generalmente, este directorio será /tftpboot. Tendrá que hacer un enlace desde este fichero hacia el fichero que usará tftpd para arrancar un cliente en particular. Desafortunadamente, el nombre del fichero es determinado por el cliente TFTP, y no existe un estándar definido.

4.4.5.1. Arranque de TFTP en SPARC

Las arquitecturas SPARC por ejemplo usan los nombres de las subarquitecturas, como «SUN4M» o «SUN4C»; en algunos casos, la arquitectura se deja en blanco, de modo que el fichero que el cliente busca es simplemente ip-del-cliente-en-hex. Esto es, si la subarquitectura de su sistema es «SUN4C» y su IP es 192.168.1.3, el nombre del fichero será C0A80103.SUN4C. Una forma sencilla de determinarlo es usar la siguiente orden en un línea de órdenes (asumiendo que la IP sea 10.0.0.4).

$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4

Esto mostrará la IP en hexadecimal, para obtener el nombre correcto, necesita cambiar todas las letras a mayúsculas y añadir si es necesario el nombre de la subarquitectura.

También puede forzar algunos sistemas sparc para buscar un fichero específico añadiéndolo al final de la orden boot de OpenPROM, como boot net mi-imagen.sparc. Ésta deberá encontrarse en el directorio en el que busca el servidor TFTP.