Caso sua máquina esteja conectada a uma rede de área local, você poderá ser capaz de 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 máquinas CATS um servidor BOOTP , ou um servidor RARP , ou um servidor DHCP.
O Reverse Address Resolution Protocol (RARP) é o único método para dizer aos clientes qual endereço IP usar para si mesmo. Outro método é usar o protocolo BOOTP. 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.
Para configurar o RARP, você precisará saber o endereço ethernet do cliente (e.g. o MAC address). Se não souber isto, você poderá inicie no modo "Rescue" (e.g., a partir do disquete de recuperação) e use o comando /sbin/ifconfig eth0.
Em sistemas usando o kernel do Linux 2.2.x, você precisará popular a tabela RARP do kernel. Para fazer isto execute os seguintes comandos:
/sbin/rarp -s client-hostname client-enet-addr
/usr/sbin/arp -s client-ip client-enet-addr
Você obterá
SIOCSRARP: Invalid argument |
então provavelmente precisará carregar o módulo RARP do kernel ou senão recompilar o kernel para suportar RARP. Tente modprobe rarp e então tente o comando rarp denovo.
Em sistemas usando um kernel do Linux 2.4.x, não existe módulo RARP e você deverá ao invés disso usar o programa rarpd. O processo é idêntico ao usado sob o SunOS do seguinte parágrafo.
Sob o SunOS, você precisará ter certeza que o endereço de hardware Etehrent para o cliente está listado no banco de dados "ethers" (ou no arquivo /etc/ethers ou via NIS/NIS+) e no banco de dados "hosts". Então você precisará iniciar o daemon RARP. No SunOS 4, digite o comando (como root): /usr/etc/rarpd -a; no SunOS 5, use /usr/sbin/rarpd -a.
Existem dois servidores BOOTP disponívies 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 na Debian GNU/Linux.
Para usar o CMU bootpd você deverá primeiro descomentar (ou adicionar) a linha relevante em /etc/inetd.conf. Na 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 criptico 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 Secção 4.6.5, “Mover 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 Secção 4.6.3, “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.
Quando este documento foi escrito, existia somente um servidor DHCP que é software livre, seu nome é 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 "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 somente um servidor "servername" que faz todo o trabalho do DHCP, servidor, 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.
Aqui está outro exemplo para o dhcp.conf usando o método Pre-boot Execution Environment (PXE) do TFTP.
option domain-name "example.com"; default-lease-time 6048; max-lease-time 604800; allow booting; allow bootp; # The next paragraph needs to be modified to fit your case subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; # the gateway address which can be different # (access to the internet for instance) option routers 192.168.1.1; # indicate the dns you want to use option domain-name-servers 192.168.1.3; } host tftpserver { # tftp server ip address fixed-address 192.168.1.90; # tftp server hardware address hardware ethernet 01:23:45:67:89:AB; } group { next-server 192.168.1.3; host tftpclient { # tftp client hardware address hardware ethernet 00:10:DC:27:6C:15; filename "/tftpboot/pxelinux.0"; } } |
Note que para a inicialização via PXE, o nome do arquivo do cliente pxelinux.0 é o gerenciador de partida, e não a imagem do kernel (veja Secção 4.6.5, “Mover as imagens TFTp para o Local” abaixo).
Para ter o servidor TFTP pronto, você terá primeiro que ter certeza que o tftpd está ativado. Ele normalmente é ativado tendo a seguinte linha no seu arquivo /etc/inetd.conf:
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /tftpboot |
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 (para a potato/2.2 e sistemas mais novos use /etc/init.d/inetd reload); em outras máquinas, encontre o ID do processo do inetd e execute o comando kill -HUP inetd-pid.
Para usar o método Pre-boot Execution Environment (PXE) na inicialização TFTP, você somente precisará de um servidor TFTP com o suporte a tsize. Em um servidor Debian GNU/Linux o tftp-hpa se qualifica.
Como próximo passo, coloque a imagem de inicialização TFTP que precisa, como encontrada no Secção 4.2.3, “Onde encontrar os arquivos 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.
Freqüentemente, o arquivo que o cliente TFTP irá procurar é client-ip-in-hexclient-architecture. Para computar client-ip-in-hex, pegue cada byte do endereço IP do cliente e transforme-o em notação hexadecimal. Se tiver uma máquina por perto com o programa bc, você poderá usa-lo. Primeiro digite o comando obase=16 para ajustar a base para hex, então entre com componentes individuais do IP do cliente um de cada vez. Como em client-arquitetura, tente alguns valores.
Para a inicialização usando o PXE, você poderá usar o gerenciador de inicialização incluído com o syslinux: pxelinux.0. O gerenciador de partida deverá ser copiado na pasta /tftpboot. Então crie um subdiretório dentro de /tftpboot com o nome /tftpboot/pxelinux.cfg e dentro daquele diretório crie um arquivo texto chamado default. Aqui está um exemplo do conteúdo do arquivo default:
default lanlinux prompt 1 label lanlinux kernel tftpboot.img append load initrd=root.bin devfs=nomount |
devfs=nomount é importante, porque sem ele você poderá ter problemas durante a montagem do sistema de arquivos root.bin assim que o kernel inicializar.
Finalmente, copie o arquivo tftpboot.img e root.bin do arquivo ftp da Debian para a pasta /tftpboot, onde o gerenciador de partida procurará por eles.
Em alguns sistemas, o disco RAM de instalação padrão, combinado com os requerimentos de memória da imagem de inicialização do TFTP, não cabem na memória. Neste caso, você ainda poderá instalar usando o TFTP, você terá que ir através do passo adicional de montagem do sistema de arquivos raíz via NFS pela rede também. Este tipo de configuração também é apropriada para clientes sem discos (diskless) ou sem dados (dataless).
Primeiro, siga todos os passos acima descritos em Secção 4.6, “Preparando os arquivos para inicialização via rede usando TFTP”.
Copie a imagem do kernel do Linux para seu servidor TFTP usando a imagem a.out para a arquitetura que estiver inicializando.
Descompacte o arquivo raíz tar em seu servidor NFS (pode ser o mesmo sistema que seu servidor TFTP):
# cd /tftpboot # tar xvzf root.tar.gz |
Tenha certeza de utilizar o comando tar da GNU (ao invés de outros programas, como o do SunOS, que manipula os dispositivos de forma incorreta como texto plano).
Exporte seu diretório /tftpboot/debian-sparc-root com acesso root para seus clientes. E.g., adicione a seguinte linha ao seu arquivo /etc/exports (sintaxe do GNU/Linux, deverá ser similar no SunOS):
/tftpboot/debian-sparc-root cliente(rw,no_root_squash) |
NOTA: "cliente" é o nome de estação ou endereço IP reconhecido pelo servidor para o sistema que deseja inicializar.
Crie um link simbólico do endereço IP do seu cliente em notação pontuada para o arquivo debian-sparc-root no diretório /tftpboot directory. Por exemplo, caso o endereço IP do cliente seja 192.168.1.3, faça
# ln -s debian-sparc-root 192.168.1.3 |
A instalação com TFTP e NFS raíz é similar a Secção 4.6.6, “Instalação via TFTP em sistemas com pouca memória” porque você não precisará carregar o disco RAM mais mas inicializará através do seu novo sistema de arquivos NFS criado. Você precisará então substituir o link simbólico para a imagem tftpboot por um link simbólico apontando para uma imagem de kernel (por exemplo, linux-a.out).
O RARP/TFTP requer que todos os daemons estejam sendo executados no mesmo servidor (a estação de trabalho que estiver enviando requisições TFTP de volta para o servidor que respondeu a requisição RARP anterior).