Caso sua máquina esteja conectada a uma rede de área local, é possivel inicia-la através da rede a partir de outra máquina usando o servidor TFTP. Se tem a intenção de iniciar o sistema de instalação para outra arquitetura, os arquivos de inicialização precisarão ser colocados em localizações específicas da máquina e a máquina configurada para suportar inicialização em sua máquina específica.
Você precisará configurar um servidor TFTP e para muitas máquinas um servidor BOOTP , ou um servidor DHCP.
O BOOTP é um protocolo IP que informa um computador de seu endereço IP e onde na rede será obtida a imagem de inicialização. O DHCP (Dynamic Host Configuration Protocol) é uma extensão mais flexível, compatível com versões mais antigas do BOOTP. Alguns sistemas somente podem ser configurados via DHCP.
O protocolo Trivial File Transfer Protocol (TFTP) é usado para servidor uma imagem de inicialização ao cliente. Teoricamente, qualquer servidor, em qualquer plataforma que implementa estes protocolos poderá ser usados. Nos exemplos desta seção, nós mostraremos comando para o SunOS 4.x, SunOS 5.x (a.k.a. Solaris), e para o GNU/Linux.
Existem dois servidores BOOTP disponíveis para o GNU/Linux: o
CMU bootpd e o outro atualmente é o
servidor DHCP, ISC dhcpd, que estão disponíveis
nos pacotes bootp
e dhcp
no Debian GNU/Linux.
Para usar o CMU bootpd você deverá primeiro
descomentar (ou adicionar) a linha relevante em
/etc/inetd.conf
.
No Debian GNU/Linux, você poderá executar update-inetd --enable
bootps
então o comando /etc/init.d/inetd
reload
para fazer isto. Em todo caso, a linha em questão
deverá se parecer com:
bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
Agora, você deverá criar um arquivo /etc/bootptab
.
Este terá a mesma quantidade de formato críptico e familiar como o
bom e antigo printcap
do BSD,
termcap
, e
disktab
. Veja a página de manual do
bootptab
para mais informações. Para o
CMU bootpd você precisará conhecer o endereço de
hardware (MAC) do cliente. Aqui está um exemplo de arquivo
/etc/bootptab
:
client:\ hd=/tftpboot:\ bf=tftpboot.img:\ ip=192.168.1.90:\ sm=255.255.255.0:\ sa=192.168.1.1:\ ha=0123456789AB:
Você pelo menos precisará mudar a opção “ha”, que especifica o endereço de hardware do cliente. A opção “bf” especifica o arquivo que o cliente deverá baixar via TFTP; veja Seção 4.3.4, “Movendo as imagens TFTP para o Local” para mais detalhes.
Em contraste, a configuração de um BOOTP com o ISC dhcpd
é realmente fácil, por causa que ele trata clientes BOOTP de uma
forma especial como clientes DHCP. Algumas arquiteturas requerem uma
configuração complexa para a inicialização dos clientes via
BOOTP. Caso a sua seja uma destas, leia a seção Seção 4.3.2, “Configurando um servidor DHCP”.
Caso contrário, você será provavelmente capaz de adicionar a diretiva
allow bootp
no bloco de configuraçào de sub-rede
de seu cliente e reiniciar o servidor dhcp
dhcpd com o comando /etc/init.d/dhcpd
restart
.
Um servidor DHCP livre é o ISC dhcpd. Na
Debian GNU/Linux, ele está disponível no pacote dhcp
.
Aqui está um modelo de configuração deste pacote (normalmente
/etc/dhcpd.conf
):
option domain-name "exemplo.com"; option domain-name-servers ns1.exemplo.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; }
Nota: O novo (e preferido) pacote dhcp3
utiliza o
arquivo de configuração /etc/dhcp3/dhcpd.conf
.
Neste exemplo, existe somente um servidor
servername
que faz todo o trabalho
do servidor DHCP, servidor TFTP e gateway de rede. Você precisará
modificar as opções domain-name assim como o nome do servidor e
endereço de hardware do cliente. A opção filename
deve ter o nome do arquivo que será baixado via TFTP.
Após editar o arquivo de configuração dhcpd,
reinice-o com /etc/init.d/dhcpd restart
.
Para ter um servidor TFTP funcionando, primeiro deverá ter certeza
que o tftpd está ativado. Ele normalmente é ativado
através da seguinte linha no seu arquivo /etc/inetd.conf
:
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot
Os pacotes da Debian geralmente configurarão isto corretamente por padrão quando forem instalados.
Olhe neste arquivo e lembre-se do diretório que é usado como
argumento para o in.tftpd; você irá precisa dele
mais abaixo. O argumento -l
permite que
alguns tipos de versões do in.tftpd registrem
todas as requisições para os logs do sistema; isto é mais útil para
diagnosticar erros de inicialização. Se você tiver que mudar o
/etc/inetd.conf
, você terá que notificar o
processo em execução inetd de que o arquivo foi
modificado.
Em máquinas Debian, execute /etc/init.d/inetd
reload
; em outras máquinas,
encontre o ID do processo do inetd e execute o
comando kill -HUP
.
inetd-pid
Como próximo passo, coloque a imagem de inicialização TFTP
que precisa, como encontrada no
Seção 4.2.1, “Aonde achar as imagens de instalação” no diretório de imagens de inicialização
do tftpd. Geralmente este diretório será
/tftpboot
. Você tera que fazer um link
deste arquivo para o arquivo que o tftpd usará
para inicializar em cliente em particular. Infelizmente, o nome do
arquivo é determinado pelo client e TFTP e não existem padrões
rígidos.
Para as DECstations, existem arquivos tftpimage para cada
sub-arquitetura. que contém ambos os kernels e o programa de
instalação em um arquivo. A convenção de nomes é
subarquitetura
/netboot-boot.img.
Copie o arquivo tftpimage que deseja usar para
/tftpboot/tftpboot.img
caso você utilize o
exemplo BOOTP/DHCP descritos acima.
A firmware do DECstation é inicializada pelo TFTP com o comando
boot
, onde
#
/tftp#
é o número do dispositivo TurboChannel
que será inicializado. Na maioria das DECstations este número é
o “3”. Se o servidor BOOTP/DHCP não fornecer o nome de arquivo
ou você precisar passar parâmetros adicionais, eles poderão
ser opcionalmente adicionados com a seguinte sintaxe:
boot #/tftp/filename param1=value1 param2=value2 ...
Diversas revisões da firmware da DECstation mostram um problema
se tratanto com a inicialização via rede: a transferência
inicia, mas após algum tempo ela para com o erro
a.out err
. Isto pode ter diversas
razões:
A firmware não responde a uma requisição ARP durante uma
transferência TFTP. Isto leva a um timeout de ARP e a transferência é
interrompida. A solução é adicionar o endereço MAC da
placa ethernet na DECstation estaticamente para a tabela ARP do
servidor de TFTP. Isto é feito rodando arp -s
como root na
máquina que atua como servidor TFTP. O endereço MAC da DECstation
pode ser lido entrando com o comando cnfg
no aviso da firmware da DECstation.
IP-address
MAC-address
A firmware tem o limite de tamanho nos arquivos que podem ser inicializados através do TFTP.
Existem também revisões de firmware que não permitem inicializações através do TFTP. Uma visão sobre as diferentes revisões de firmware podem ser encontradas nas páginas web do NetBSD: http://www.netbsd.org/Ports/pmax/board-list.html#proms.