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.423 ]

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


Configuração do servidor



Os seguintes serviços devem estar instalados no servidor:
  • tftpd - servidor ftp trivial: para disponibilizar o kernel;
  • portmap - servidor RPC;
  • nfs-kernel-server - servidor NFS para montar o diretório root (/) nos terminais;
  • KDM, GDM ou XDM - permite que os terminais obtenham a tela de login e executem as aplicações remotamente;
  • inetd - daemon que mantém o tftpd, entre outros serviços. No Debian o pacote chama-se openbsd-inetd.

Configurar TFTPD

Deve ser criado um diretório no servidor para armazenar os arquivos de boot (kernel, initrd, etc...):

# mkdir /tftpboot/lts

verificar se o arquivo /etc/inetd.conf possui a seguinte linha:

tftp  dgram  utp  wait root  /usr/sbin/in.tftpd    /usr/sbin/in.tftpd -s /tftpboot/lts/

A linha acima habilita o tftp e indica o caminho onde ficam os arquivos (/tftpboot/lts/).

Inicializar o serviço:

# /etc/init.d/openbsd-inetd restart

Pacotes do LTSP:

Para criar o sistema básico do LTSP é necessário começar instalando o pacote ltsp-utils:

# apt-get install ltsp-utils

Executar no console:

# ltspadmin

Aparecerá a tela do configurador do LTSP.
  1. Vá em Install/Update LTSP Packages;
  2. Selecione todos os pacotes;
  3. Pressione "Q" para instalar os pacotes selecionados.

Após instalar os pacotes, vá na opção Configure LTSP e revise todas as opções.

Kernel para inicialização dos terminais

Como não será utilizado um servidor DHCP para atribuir um IP aos terminais, é necessário alterar algumas configurações no initramfs.

Dentro do diretório /tftpboot/lts/ existem algumas pastas com o a versão do kernel. Como exemplo, será utilizado a versão 2.6.20.9-ltsp-1.

Crie uma pasta, copie o arquivo initramfs.gz para esta pasta, entre nesta pasta e digite a seguinte linha:

# zcat initramfs_data.cpio.gz | cpio -i -d -H newc --no-absolute-filenames

Isto irá descompactar o arquivo initramfs.gz, criando várias pastas e o arquivo init.
  1. Edite o arquivo init;
  2. Comente todas as linhas referentes ao dhcpcd;
  3. Adicione o seguinte após a linha /etc/dhcpc/dhcpcd-eth0.info:

    /sbin/ifconfig eth0 <ip do terminal> netmask <mascara> up
    /sbin/route add default gw <ip do gateway>
    ROOTPATH=<ip do servidor>/opt/lts/i386


    As linhas acima correspondem às informações que o servidor DHCP enviariam ao terminal, caso fosse utilizado DHCP.

Para criar o novo arquivo initramfs, utilize os comandos:

# rm initramfs.gz
# find . | cpio -o -H newc | gzip -9 > ../initramfs.gz

Copie o arquivo gerado para a pasta /tftpboot/lts/2.6.20.9-ltsp-1/.

Vá para o diretório /tftpboot/lts e crie o arquivo menu.lst com o seguinte conteúdo:

timeout 3
title Boot Remoto
kernel (nd)/2.6.20.9-ltsp-1/bzImage-2.6.20.9-ltsp-1
initrd (nd)/2.6.20.9-ltsp-1/initramfs.gz
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

Instalação do Nagios no Ubuntu Linux

Arch Linux - Repositório offline

Integrando o BIND com DHCPd

Configurando o CACIC (parte 2)

MUGPIS 14.1

  
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