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:
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:
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:
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:
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
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/
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
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
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
* 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