4.3. Preparar Ficheiros para arranque pela Rede via TFTP

Se a sua máquina está ligada a uma rede local, pode ser capaz de a arrancar através da rede a partir de outra máquina, utilizando TFTP. Se tenciona iniciar a instalação do sistema a partir de outra máquina, será necessário colocar os ficheiros de arranque numa localização específica dessa máquina, e a máquina configurada para suportar o arranque da sua máquina especifica.

Precisa configurar o servidor TFTP, e para muitas máquinas, um servidor DHCP, ou servidor RARP , ou um servidor BOOTP.

O Reverse Address Resolution Protocol (RARP) é uma maneira de informar o cliente qual o IP deve usar. Outra forma é utilizar o protocolo BOOTP. BOOTP é um protocolo IP que informa o computador do seu endereço IP e em que local da rede pode obter uma imagem de arranque. O DHCP (Dynamic Host Configuration Protocol) é mais flexível, compatível com extensões anteriores do BOOTP. Alguns sistemas apenas podem ser configurados via DHCP.

O Trivial File Transfer Protocol (TFTP) é utilizado para servir a imagem de arranque para o cliente. Teoricamente, qualquer servidor, em qualquer plataforma, que implemente estes protocolos, pode ser utilizado. Nos exemplos desta sessão, iremos disponibilizar comandos para for SunOS 4.x, SunOS 5.x (a.k.a. Solaris), e GNU/Linux.

4.3.1. Configurar o servidor RARP

Para configurar o RARP, necessita saber o endereço de Ethernet (a.k.a. o endereço MAC) dos computadores cliente a serem instalados. Se não sabe esta informação, pode encontrá-la arranque no modo “Rescue” (e.g., a partir da disquete de recuperação) e utilize o comando /sbin/ifconfig eth0.

Num sistema servidor RARP que utilize um kernel Linux 2.4 ou 2.6, ou Solaris/SunOS, você utiliza o programa rarpd. Você necessita assegurar-se que o endereço de hardware Ethernet para o cliente está listado na base de dados /etc/ethers (ou no ficheiro /etc/ethers, ou via NIS/NIS+) na base de dados “hosts”. De seguida necessita iniciar o daemon RARP. Envie o comando (como root): na maioria dos sistemas Linux e sunOS 5 (Solaris 2) /usr/sbin/rarpd -a, /usr/sbin/in.rarpd -a em alguns outros sistemas Linux, ou /usr/etc/rarpd -a em SunOS 4 (Solaris 1).

4.3.2. Configurar o servidor BOOTP

Estão disponíveis dois servidores BOOTP para GNU/Linux. O primeiro é o CMU bootpd. O outro é na verdade um servidor DHCP: o ISC dhcpd. Em Debian GNU/Linux estes estão contidos respectivamente nos pacotes bootp e dhcp3-server.

Para utilizar o CMU bootpd, primeiro você tem de retirar o comentário (ou adicionar) da linha relevante em /etc/inetd.conf. Em Debian GNU/Linux, você pode executar update-inetd --enable bootps, para o fazer. No caso do seu servidor BOOTP não correr em Debian, a linha em questão deve parecer-se com:

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

Agora, você tem de criar um ficheiro /etc/bootptab. Este tem o mesmo tipo de formato familiar e críptico do bom velho BSD printcap, termcap, e disktab. Para mais informações veja a página do manual de bootptab. Para o CMU bootpd, você vai necessitar saber o endereço de hardware (MAC) do cliente. Aqui está um /etc/bootptab de exemplo:

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

Você tem de alterar pelo menos a opção “ha”, que especifica o endereço de hardware do cliente. A opção “bf” especifica o ficheiro que o cliente deve obter via TFTP; para mais detalhes veja a Secção 4.3.5, “Mover Imagens TFTP Para o Lugar”.

Por contraste, configurar BOOTP com ISC dhcpd é realmente fácil, porque trata os clientes BOOTP como casos moderadamente especiais de clientes DHCP. Algumas arquitecturas requerem uma configuração complexa para iniciarem clientes via BOOTP. Se o seu caso é um desses, leia a secção Secção 4.3.3, “Configurar um servidor DHCP”. Nesse caso, irá provavelmente ser capaz de conseguir com simplesmente adicionando a directiva allow bootp para o bloco de configuração para a subnet que contém o cliente, e reiniciar dhcpd com /etc/init.d/dhcpd3-server restart.

4.3.3. Configurar um servidor DHCP

Um servidor DHCP de software livre é o ISC dhcpd. Para Debian GNU/Linux é recomendado o pacote dhcp3-server. Aqui está um exemplo de ficheiro de configuração para ele (veja /etc/dhcp3/dhcpd.conf):

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

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 clientname {
  filename "/tftpboot/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

Neste exemplo, existe um servidor servername que executa todo o trabalho de servidor DHCP, de servidor TFTP e gateway de rede. Vai precisar quase de certeza de alterar as opções de domain-name, tal como o nome do servidor e o endereço de hardware do cliente. A opção filename deve ser o nome do ficheiro obtido via TFTP.

Após ter editado o ficheiro de configuração dhcpd, reinicie-o com /etc/init.d/dhcpd3-server restart.

4.3.4. Disponibilizar o Servidor TFTP

Para ter o servidor TFTP pronto a funcionar, deve primeiro certificar-se que é permitido executar tftpd. Usualmente, isto é permitido tendo algo como a seguinte linha em /etc/inetd.conf:

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

Os pacotes Debian em geral irão configurá-lo correctamente, por omissão, quando são instalados.

Nota

Historicamente os servidores TFTP utilizavam /tftpboot como directório para servir imagens. No entanto, os pacotes Debian GNU/Linux podem utilizar outros directórios para estarem de acordo com o Filesystem Hierarchy Standard. Por exemplo, tftpd-hpa por omissão utiliza /var/lib/tftpboot. Poderá ter de ajustar de acordo os exemplos de configuração nesta secção.

Procure em /etc/inetd.conf e lembre-se do directório que é utilizada como argumento do in.tftpd[2]; vai necessitar disso abaixo. Se teve de alterar o /etc/inetd.conf, terá de notificar o processo em execução inetd que o ficheiro foi alterado. Numa máquina Debian, execute /etc/init.d/inetd reload; noutras máquinas, procure o ID do processo de inetd, e execute kill -HUP inetd-pid.

4.3.5. Mover Imagens TFTP Para o Lugar

Em seguida, coloque a imagem de arranque do TFTP que necessita, conforme encontrada na Secção 4.2.1, “Onde Encontrar Imagens de Instalação”, no directório de imagem de arranque tftpd. Terá de fazer um link a partir desse ficheiro para o ficheiro que o tftpd irá utilizar para iniciar um cliente em particular. Infelizmente, o nome do ficheiro é determinado pelo cliente TFTP, e não existem standards sólidos.



[2] O argumento -l permite que algumas versões do in.tftpd registem todos os pedidos aos logs de sistema; isto é útil para diagnosticar erros de arranque.