Boot Remoto (LTSP) sem servidor DHCP
Este artigo mostra como configurar uma solução de boot remoto sem utilizar um servidor DHCP. Isto se torna necessário em ambientes onde não há a possibilidade de alterar os servidores DHCP existentes, alterar a topologia de rede, criar VPNs ou qualquer outro tipo de configuração já existente.
Introdução
Certo dia me deparei com um desafio na empresa onde trabalho: configurar um ambiente de boot remoto. Como assim desafio? O LTSP não é fácil, rápido e cheio de tutoriais na Internet? Sim claro, mas a principal dificuldade é o ambiente que já existe na rede, que não pode ser alterado.
Ou seja, eu não podia:
Então vamos lá, mão na massa, digo, no teclado!
Obs.: O SO utilizado foi o Debian Etch (4.0).
Ou seja, eu não podia:
- Alterar configuração de DHCP;
- Fazer uma VPN;
- Criar sub-rede;
- Alterar topologia de rede;
- Configurar portas no servidor;
- Criar outro servidor DHCP, pois dois servidores DHCP não convivem na mesma rede.
Então vamos lá, mão na massa, digo, no teclado!
Obs.: O SO utilizado foi o Debian Etch (4.0).
No arquivo menu.lst de /tftpboot/lts/ coloque alguns parâmetros de configuração de IP:
Complementando o meu próprio artigo, vai uma dica para evitar a criação de um initramfs específico para cada computador.
No arquivo menu.lst de /tftpboot/lts/ coloque alguns parâmetros de configuração de IP e rootpath:
timeout 3
title Boot Remoto
kernel (nd)/2.6.20.9-ltsp-1/bzImage-2.6.20-9-ltsp-1 ip=<ip> gw=<ip> netmask=<netmask> rootpath=<ip>:/opt/ltsp/i386
initr (nd)/2.6.20.9-ltsp-1/initramfs.gz
No arquivo init, dentro do initramfs, comente as linhas referentes ao dhcp e insira o seguinte:
#Pega paramentros no menu.lst
CMDLINE=`cat /proc/cmdline`
for VAR in ip netmask gw
do
eval $VAR=echo `/usr/bin/expr "$CMDLINE" : '.*\($VAR=[0-9.]*\)'` : cut -d"=" -f 2
echo -n $VAR=;eval "echo $`echo $VAR`"
done
ROOTPATH=$(echo `/usr/bin/expr "$CMDLINE" : '.*(rootpath=[a-zA-Z0-9./:]*\)'` : cut -d"=" -f 2)
#inicializa a rede
/sbin/ifconfig eth0 $ip netmask $netmask up
/sbin/route add default gw $gw
As linhas acima pegam os parametros do menu.lst (/proc/cmdline), evitando assim a construção de um initramfs para cada computador. Contudo, é necessário agora um menu.lst diferente para cada computador.