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.

[ Hits: 80.429 ]

Por: Gerson Henrique Diesel em 20/06/2007 | Blog: http://www.gersondiesel.com.br


Disquete de Boot



Esta seção descreve como criar um disquete de boot remoto sem necessitar de um servidor DHCP.

No disquete ficam as informações de IP e a localização dos arquivos de inicialização (menu.lst, kernel, etc).

Grub

É possível utilizar o GRUB em um disquete para inicializar um terminal LTSP. Por padrão o GRUB não vem com suporte a NetBoot, não possuindo os drivers de rede em sua compilação. É necessário baixar o código-fonte do GRUB e incluir alguns parâmetros no ./configure.

Baixar o GRUB:

# apt-get source grub

Dentro do diretório do código fonte do grub, digitar:

# ./configure --enable-lance --enable-tulip --enable-otulip --enable-diskless CC=/usr/bin/gcc-3.4

Obs: Com o gcc >= 4.0 ocorrem erros de compilação.

Digite "./configure --help" para obter uma lista de drivers de placas de rede disponíveis.

Serão criados dois arquivos, necessários para a inicialização:

/stage1/stage1
/stage2/stage2

Estes arquivos deverão ser copiados para um disquete mais tarde.

Crie o arquivo menu.lst (não é o mesmo arquivo criado anteriormente, este aqui será copiado para o disquete) com o seguinte conteúdo:

default 0
timeout 0
hiddenmenu
title Boot Remoto Rede
ifconfig --address=<IP do Terminal> --mask=<máscara de rede> --server=<servidor de boot remoto>
configfile (nd)/menu.lst

Onde:
  • nd significa Network Drive;
  • a linha configfile (nd)/menu.lst chama o outro menu.lst presente no servidor, que contém as informações sobre o kernel a ser utilizado.

Formate um disquete, monte-o e copie os arquivos para o mesmo:

# mke2fs -m 0 /dev/fd0
# mount /media/floppy/
# cp <fonte-grub>/stage1 <fonte-grub/stage2 /media/floppy/ <caminho>/menu.lst
# sync

Grave o grub no setor de boot do disquete utilizando o shell interativo do grub:

# grub
grub> install (fd0)/stage1 (fd0) (fd0)/stage2 p (fd0)/menu.lst
grub> quit

Etherboot

É possível utilizar também um disquete de etherboot. No site http://rom-o-matic/ é possível criar uma imagem pronta para gravar no disquete.

Procedimento para criar uma imagem:
  1. Choose NIC/ROM type: <escolha a placa de rede na relação>;
  2. Choose ROM output format: escolha Floppy bootable ROM image (.zdsk);
  3. Clique em configure;
  4. Marque a opção NO_DHCP_SUPPORT;
  5. Marque a opção USE_STATIC_BOOT_INFO;
  6. Preencha todos os campos:
    1. STATIC_CLIENT_IP: IP fixo do cliente
    2. STATIC_SUBNET_MASK: Mascara da rede
    3. STATIC_SERVER_IP: IP do servidor
    4. STATIC_GATEWAY_IP: IP do gateway
    5. STATIC_BOOTFILE: nome do arquivo de kernel (vmlinuz). Ex: /vmlinuz-2.6.20.9-ltsp-1

  7. Clique em GET ROM;
  8. Salve o arquivo;
  9. Vá no diretório onde foi salvo o arquivo e digite:

    # cat eb-5.4.3-<nic>.zdsk > /dev/fd0

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Configuração do servidor
   3. Disquete de Boot
   4. Considerações a respeito do Etherboot e Grub
   5. Arquivos importantes
   6. Referências
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalando o Nagios Core no Suse Linux Enterprise Server

Criando mirror do Debian Lenny e Debian Lenny Security em sua rede local

O gerenciador de boot GRUB

ISPconfig - Uma alternativa ao CPanel

Criação de usuário, grupo e permissão

  
Comentários
[1] Comentário enviado por diesel em 20/06/2007 - 08:22h

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:

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.





[2] Comentário enviado por removido em 20/06/2007 - 12:33h

Isso que é trabalho!!!
(sem desmerecer ninguém!!!...)
10!

[3] Comentário enviado por mascote24 em 22/06/2007 - 15:53h

Parabéns Gerson, bom artigo, apenas uma observação: é sim possível conviver com dois servidores DHCP na mesma rede, eu já tive essa necessidade e configurei dois servidores que funcionavam perfeitamente.

[4] Comentário enviado por thiagodvp em 20/07/2007 - 19:10h

Cara, dois servidores DHCP podem conviver na mesma rede, vc só tem que configurar o servidor DHCP do LTSP para não atribuir ip's para MAC's que não estiverem cadastrados no seu dhcpd.conf. Dessa forma ele só atribuirá ip's para os terminais LTSP. (Claro que eu parto do pre-suposto que vc terá que cadastrar todos os MAC's dos terminais LTSP de sua rede).
FlW

[5] Comentário enviado por rebinat em 02/08/2007 - 11:12h

como ficaria se usasse dhcp

obrigado

[6] Comentário enviado por diesel em 02/08/2007 - 11:23h

Thiago. Tens razão. Pode-se utilizar deny unknown-clients no dhcpd.conf

Dois servidores DHCP podem até conviver na mesma rede. Neste caso deve existir um controle maior sobre os terminais e sobre o servidor DHCP, visto que pode-se forjar um MAC address em alguns drivers, e também quando um técnico tiver que fazer a substituição de uma placa ou equipamento, o dhcpd.conf deve ser atualizado.

[7] Comentário enviado por diesel em 02/08/2007 - 11:24h

Rebinat.

Para usar DHCP, é só utilizar os vários tutoriais disponíveis pela rede, inclusive o do site do projeto oficial.

[8] Comentário enviado por capitainkurn em 06/11/2007 - 07:46h

Gerson! Parabéns pelo belíssimo artigo e obrigado por compartilhar sua experiência com a comunidade.
Mas é possível empregar mais de um dhcp server em uma mesma rede sim.
no fim da seção raiz do seu /etc/dhcpd.conf acrescente o parâmetro "athoritative;" (sem as aspas é claro) e na seção subnet acrescente o parâmetro "deny unknown-clients;" daí estabeleça um vínculo IP/MAC como está em minha dica http://www.vivaolinux.com.br/dicas/verDica.php?codigo=8612

Muito bom mesmo seu artigo, mais uma prova de que o limite do Linux é o da criatividade.

[9] Comentário enviado por diesel em 06/11/2007 - 11:54h

capitainKurn.

Fico feliz que o meu artigo agradou os leitores.
Sim, você tem razão, vários DHCP's podem conviver na mesma rede, como eu havia escrito em um comentário acima.

[10] Comentário enviado por thiiagofernando em 25/04/2014 - 13:02h

tentei fazer no Debian 6 e Debian 7 não alguns pacotes não estão disponíveis estou com o mesmo problema peguei uma rede que ja possuiu uma estrutura e não posso mexer em nada


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts