4.3. Preparar Ficheiros para Arrancar Através da Rede por TFTP

Se a sua máquina estiver ligada a uma rede local poderá, utilizando TFTP, conseguir arrancar pela rede a partir de outra máquina. Se tencionar iniciar a instalação do sistema a partir de outra máquina, os ficheiros de arranque terão de ser colocados numa localização específica dessa máquina, e a máquina terá de ser configurada para suportar o arranque da sua máquina especifica.

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

O Reverse Address Resolution Protocol (RARP) é uma forma de informar o cliente do IP que deve utilizar para o próprio. Outra forma será utilizar o protocolo BOOTP. BOOTP é um protocolo IP que informa um computador do seu endereço IP e em que local da rede obtém 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 ao cliente. Teoricamente, qualquer servidor, em qualquer plataforma, que implemente estes protocolos, pode ser utilizado. Nos exemplos desta secção, iremos disponibilizar comandos para 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 ( o endereço MAC) dos computadores clientes a serem instalados. Se não sabe esta informação, pode-a obter nas mensagens iniciais de arranque do OpenPROM, use o comando OpenBoot .enet-addr, ou pode arrancar no modo Rescue (e.g., a partir da disquete de recuperação) e utilizar o comando ip endereço show dev 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 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 um servidor DHCP

O ISC dhcpd é um software livre servidor de DHCP. Para Debian GNU/Linux é recomendado o pacote isc-dhcp-server. Aqui está um exemplo de ficheiro de configuração (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.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. Irá muito provavelmente necessitar 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 deverá ser o nome do ficheiro obtido por TFTP.

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

4.3.3. Configurar o servidor BOOTP

Estão disponíveis dois servidores de BOOTP para GNU/Linux. O primeiro é o CMU bootpd. O outro é na verdade um servidor de 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 de 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 o ISC dhcpd é realmente fácil, pois trata os clientes de BOOTP como casos moderadamente especiais de clientes de DHCP. Algumas arquitecturas necessitam duma configuração complexa para arrancarem os clientes por BOOTP. Se for um desses casos, leia a secção Secção 4.3.2, “Configurar um servidor DHCP”. Caso contrário poderá ser capaz de o conseguir simplesmente acrescentando a directiva allow bootp ao bloco de configuração para a subnet que contém o cliente em /etc/dhcp/dhcpd.conf, e reiniciar o dhcpd com /etc/init.d/isc-dhcp-server restart.

4.3.4. Disponibilizar o Servidor TFTP

Para ter o servidor de TFTP pronto, primeiro deve assegurar-se que o tftpd está activo.

No caso do tftpd-hpa o serviço pode ser corrido de duas formas. Pode ser iniciado a pedido pelo daemon inet do sistema, ou pode ser configurado para correr como um daemon independente. O método a utilizar é escolhido quando o pacote é instalado e pode ser alterado reconfigurando o pacote.

Nota

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

Todas as alternativas do in.tftpd disponíveis em Debian devem registar, por predefinição, os pedidos TFTP no registo do sistema. Algumas suportam um argumento -v para aumentar o detalhe. É recomendado verificar essas mensagens de registo no caso de ocorrerem problemas de arranque já que são um bom ponto de partida para diagnosticar a causa dos erros.

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.

4.3.5.1. Arrancar SPARC TFTP

As Arquitecturas SPARC acrescentam nomes de sub-srquitecturas, tais como SUN4M ou SUN4C, ao nome do ficheiro. Assim, se a sub-arquitectura do seu sistema for SUN4C, e o seu IP for 192.168.1.3, o nome do ficheiros será C0A80103.SUN4C. No entanto, existem também sub-arquitecturas onde o ficheiro que o cliente procura é apenas client-ip-in-hex. Uma maneira simples de determinar o código hexadecimal para o endereço IP é introduzir o seguinte comando numa shell (assumindo que o IP pretendido para a máquina é 10.0.0.4).

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

Para obter o nome do ficheiro correcto, necessitará de alterar todas as letras para maiúsculas e se necessário adicionar o nome da sub-arquitectura.

Se fez tudo isto correctamente, dando o comando boot net a partir da OpenPROM deve carregar a imagem. Se a imagem não puder ser encontrada, tente ver os logs do seu servidor tftp para ver qual o nome da imagem que está a ser pedida.

Pode também forçar alguns sistemas sparc a procurar por um nome de ficheiro especifico adicionando-o no final do comando de arranque OpenPROM, tal como boot net my-sparc.image. Isto tem de residir no directório onde o servidor TFTP procura.