Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Boot Remoto (LTSP) sem servidor DHCP

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo 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.
    Por: Gerson Henrique Diesel

    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:

    * 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.

    Tudo o que eu tinha era a possibilidade de utilizar IPs fixos na rede, mesmo assim não fixado através de MAC no servidor DHCP, mas sim diretamente nos terminais.

    Então vamos lá, mão na massa, digo, no teclado!

    Obs.: O SO utilizado foi o Debian Etch (4.0).

    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:
    Código:
    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:
    Código:
    /sbin/ifconfig eth0 <ip do terminal> netmask <mascara> up
    /sbin/route add default gw <ip do gateway>
    ROOTPATH=<ip do servidor>/opt/lts/i386
    3.


    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:
    Código:
    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
    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:
    Código:
    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 Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... é 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


    Considerações a respeito do Etherboot e Grub
    Vantagens do Etherboot em relação ao Grub:

    - É possível carregar imagens grandes que o GRUB não carrega. Estes arquivos grandes (formados pelo bzImage + initramfs) ficam na pasta /tftpboot/lts do servidor, começando com o nome vmlinuz, e são criados com o comando:

    # mknbi-linux bzImage-2.6.20.9-ltsp-1 initramfs --output=vmlinuz-2.6.20.9-ltsp-1

    - Mostra um indicador de progresso quando o kernel é baixado do servidor.

    Desvantagens:

    - Somente é possível incluir uma placa de rede por imagem. Além disto, apresentou problema com placas de rede que utilizam o módulo tulip. No momento de fazer a carga do kernel do servidor, ocorria erro de TX Timeout.

    Vantagens do Grub:

    - Permite incluir vários drivers de placas de rede no mesmo disquete. A detecção da placa é feita no boot da máquina.

    - Não dá erro de "TX Timeout", o que ocorre com o Etherboot em algumas placas (módulo tulip).

    Arquivos importantes
    /opt/ltsp/i386

    Árvore que é montado nos terminais (ROOTPATH).
    /opt/ltsp/i386/etc/lts.conf
    É um dos arquivos principais de configuração dos terminais. Contém diversas informações sobre a configuração dos terminais. É possível configurar driver de vídeo e outras configurações relacionadas ao X server como:

    * Drivers;
    * Resolução;
    * Mouse;
    * Teclado.

    Uso dos terminais:

    * Shell de manutenção;
    * Telnet;
    * X;
    * Rdesktop.


    E mais:

    * Som;
    * Impressão;
    * etc.

    Consulte a documentação sobre mais informações.

    /tftpboot/lts
    Arquivos de inicialização dos terminais: Kernel, initramfs.


    Fonte:
    VivaoLinux
    Postado Por: RedDeviL
X
Working...
X