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 um servidor de TFTP, e para muitas máquinas, um servidor de DHCP , ou um servidor de 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.
Para utilizar o método Pre-boot Execution Environment (PXE), vai necessitar de um servidor TFTP com suporte para tsize
. Num servidor Debian GNU/Linux, os pacotes atftpd
e tftpd-hpa
permitem-no; nós recomendamos o tftpd-hpa
.
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.5.4, “Mover Imagens TFTP Para o Lugar”.
Por contraste, configurar BOOTP com ISC dhcpd é realmente fácil, porque trata os clientes de BOOTP como casos moderadamente especiais de clientes de DHCP. Algumas arquitecturas necessitam duma configuração complexa para iniciarem clientes via BOOTP. Se o seu caso é um desses, leia a secção Secção 4.5.2, “Configurar um servidor DHCP”. Nesse caso, irá provavelmente ser capaz de o conseguir simplesmente acrescentando a directiva allow bootp
ao bloco de configuração para a subnet que contém o cliente, e reiniciar o dhcpd com /etc/init.d/dhcpd3-server restart
.
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
.
Aqui está outro exemplo para um dhcp.conf
utilizando o método Pre-boot Execution Environment (PXE) de TFTP.
option domain-name "example.com"; default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; # O próximo parágrafo necessita ser alterado para se adequar com o seu caso subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option broadcast-address 192.168.1.255; # O endereço de gateway que pode ser diferente # (acesso à internet por exemplo) option routers 192.168.1.1; # indica o dns que quer utilizar option domain-name-servers 192.168.1.3; } group { next-server 192.168.1.3; host tftpclient { # endereço de harware do cliente tftp hardware ethernet 00:10:DC:27:6C:15; filename "/tftpboot/pxelinux.0"; } }
Note que para um arranque PXE, o ficheiro do cliente com o nome de pxelinux.0
, é o gestor de arranque, não uma imagem de kernel (veja a Secção 4.5.4, “Mover Imagens TFTP Para o Lugar” abaixo).
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.
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 é utilizado como o argumento do in.tftpd[7]; vai necessitar disso abaixo. Se teve de alterar o /etc/inetd.conf
, terá de notificar o processo inetd em execução que o ficheiro foi alterado. Numa máquina Debian, execute /etc/init.d/inetd reload
; noutras máquinas, procure o ID do processo inetd, e execute kill -HUP
. inetd-pid
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.
Para um arranque PXE, tudo o que deve precisar configurar está no tarball netboot/netboot.tar.gz
. Extraia simplesmente este tarball para o directório da imagem de arranque tftpd. Certifique-se que o servidor dhcp está configurado para passar /pxelinux.0
ao tftpd como o nome do ficheiro para arrancar.
[7] Todas as alternativas in.tftpd disponíveis em Debian devem registar os pedidos TFTP nos registos pré-definidos do sistema. Alguns deles suportam um argumento -v
para aumentar o detalhe. No caso de problemas de arranque é recomendado verificar estas mensagens de registo já que são um bom ponto de partida para diagnosticar a causa de erros.