4.3. 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 muchas máquinas, un servidor DHCP , o un servidor 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. DHCP («Dynamic Host Configuration Protocol», o protocolo de configuración dinámica de equipos) es una extensión de BOOTP compatible con éste, pero más flexible. Algunos sistemas solamente se pueden configurar 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.3.1. Configuración del servidor BOOTP

Existen dos servidores BOOTP disponibles para GNU/Linux, el bootpd de CMU. El otro que en realidad es un servidor DHCP, el dhcpd de ISC. En Debian GNU/Linux se pueden encontrar en los paquetes bootp y dhcp3-server respectivamente.

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 caso de que su servidor de BOOTP no se esté ejecutando en un sistema Debian GNU/Linux, la línea en cuestión deberá ser como sigue:

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. Este 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.3.4, “Mover las imágenes TFTP a su ubicación”.

En contraste, configurar BOOTP con 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 estas, lea la sección Sección 4.3.2, “Configuración del servidor DHCP”. En este caso, probablemente pueda continuar con sólo añadir la directiva allow bootp al bloque de configuración para la sub-red donde se ubique el cliente, y reiniciar dhcpd con /etc/init.d/dhcpd3-server restart.

4.3.2. Configuración del servidor DHCP

Un servidor DHCP de software libre es el dhcpd de ISC. Se recomienda el uso del paquete dhcp3-server en Debian GNU/Linux. A continuación se muestra una configuración de ejemplo para él (consulte /etc/dhcpd3/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;
}

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/dhcpd3-server restart.

4.3.3. Habilitar el servidor TFTP

Para tener listo el servidor TFTP, primero deberá asegurarse de 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

Cuando se instalan los paquetes de Debian, por lo general, lo configuran correctamente de forma predeterminada.

Nota

Los servidores de TFTP utilizan /tftpboot como directorio del que servir las imágenes por motivos históricos. Sin embargo, algunos paquetes Debian GNU/Linux puede utilizar otros directorios para cumplir con el estándar de jerarquía de sistemas de ficheros. Por ejemplo, tftpd-hpa utiliza, por omisión, /var/lib/tftpboot. Puede tener que ajustar los ejemplos de configuración en esta sección si la ubicación varía.

Busque en el fichero /etc/inetd.conf y recuerde el directorio que usa como argumento de in.tftpd[3], lo necesitará más adelante. Si ha tenido que cambiar /etc/inetd.conf, deberá notificar al proceso inetd en ejecución que el fichero ha cambiado. En un 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.3.4. Mover las imágenes TFTP a su ubicación

Seguidamente, ubique 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. Tendrá que hacer un enlace desde este fichero hacia el fichero que usará tftpd para arrancar un cliente en específico. Desafortunadamente, el nombre del fichero es determinado por el cliente TFTP, y no existe un estándar definido.

4.3.4.1. Imágenes TFTP para DECstation

Para DECstations existen ficheros «tftpimage» para cada subarquitectura que contienen tanto el núcleo como el instalador en un solo fichero. Por convención los nombres son del tipo subarquitectura/netboot-boot.img. Copie el fichero «tftpimage» que desee usar a /tftpboot/tftpboot.img si está usando la configuración BOOTP/DHCP de ejemplo descrita anteriormente.

El firmware de DECstations se arranca por TFTP con la orden boot #/tftp, donde # es el número del dispositivo TurboChannel desde el cual arrancar. En la mayoría de DECstations es «3». Si el servidor BOOTP/DHCP no provee el nombre del fichero o necesita pasar parámetros adicionales, éstos se pueden añadir opcionalmente con la siguiente sintaxis:

boot #/tftp/fichero param1=valor1 param2=valor2 ...

Varias revisiones del firmware de DECstations presentan un problema respecto al arranque a través de red: la transferencia se inicia, pero después de algún tiempo se para mostranto el mensaje a.out err. Esto puede deberse a diversas razones:

  1. El firmware no responde a solicitudes ARP durante una transferencia TFTP. Esto lleva a que expire el tiempo máximo de ARP y a la paralización de la transferencia. La solución es añadir la dirección MAC de la tarjeta Ethernet de la DECstation estáticamente a la tabla ARP del servidor TFTP. Esto se hace ejecutando arp -s Dirección IP Dirección MAC como superusuario en la máquina que actúe como servidor TFTP. La dirección MAC de la DECstation puede obtenerse con la orden cnfg en el cursor del firmware de la DECstation.

  2. El firmware tiene un límite de tamaño para los ficheros que pueden arrancarse a través de TFTP.

También existen revisiones de firmware que no pueden arrancar en absoluto a través de TFTP. Puede encontrar una descripción sobre las diferentes revisiones de firmware en las páginas web de NetBSD: http://www.netbsd.org/Ports/pmax/board-list.html#proms.



[3] El argumento -l hace que algunas versiones de in.tftpd registren todas las peticiones en los registros del sistemaes útil para diagnosticar fallos de arranque