Terminal Server sem fio

By Flávio Augusto

Cumprindo o que havia prometido no post anterior, trago, de forma documentada, minha primeira experiência de Terminal Server multiplataforma utilizando rede sem fio, servidor web, gPXE e ThinStation.

Sumário

Por que sem fio?

O objetivo aqui é prover aos terminais uma inicialização que evita fortemente o desperdício de dispositivos de grande capacidade (HD, pendrive, etc.); não completamente diskless, uma vez que um disquete de boot pré-configurado é obrigatório, mas como o objetivo é a metarreciclagem, para expandir a usabilidade do parque computacional, o disquete, por ser de menor capacidade, acaba sendo a melhor opção.

O gPXE é um bootloader cuja principal função é inicializar o computador via rede, com suporte a diversos formatos de arquivos de boot e protocolos de rede. Ele permite a pré-configuração de imagens de disco para acesso a servidores de terminais, para serem gravados inclusive em disquetes. A versão em desenvolvimento do gPXE já dá suporte para placas Realtek e Atheros, no padrão 802.11b/g, o que já nos desperta o interesse em montar uma rede de terminais sem o inconveniente dos cabos.

Procurando por mini-distribuições Linux que pudessem prover funcionalidade considerável para os terminais, de forma que o acesso por eles seja totalmente automatizado, encontramos o ThinStation, que permite máxima customização e tamanho mínimo dos arquivos a serem baixados. O tamanho compacto dos arquivos do ThinStation permite a inicialização do sistema totalmente em memória RAM, bem como o desligamento repentino do terminal com segurança, sem precisar seguir os procedimentos típicos de um sistema operacional.

É possível a gravação do gPXE na placa de rede ou na BIOS, bem como a instalação do ThinStation em um HD ou pendrive. Mas esses procedimentos fogem do escopo do nosso artigo.

Boot via rede

Quem já teve contato com o LTSP sabe da obrigatoriedade de uma rede específica para os terminais, bem como dos protocolos de rede necessários para o seu funcionamento: DHCP, NFS e TFTP. A parceria gPXE + ThinStation também pode se valer desses requisitos, mas não de forma obrigatória.

Terminais em rede dedicada, estilo LTSP

Terminais conectando ao Servidor pela rede principal (rede única)

O TFTP e o NFS, que compõem o servidor de boot para os terminais, podem ser substituídos pelo protocolo HTTP, o que permite que sistemas operacionais fora do meio UNIX possam ser usados como servidores de boot, bem como qualquer software de servidor web pode ser utilizado. No caso do DHCP, pode-se tanto usa-lo no servidor (dedicado, numa rede interna) como dispensá-lo em detrimento ao roteador principal (que possui o mesmo serviço).

Esquema de boot

O XDMCP e o RDP continuam obrigatórios, pois o conceito de Terminal Service visa o acesso de terminais ao modo gráfico, seja ele no Windows (RDP) ou no Linux (XDMCP). O Telnet, opcional, permite o acesso inverso, para controle e solução de problemas nos terminais.

Definindo a rede sem fio e o servidor web

Para a configuração do servidor e dos terminais, é necessário que sigamos os seguintes parâmetros:

  • Para usar uma rede sem fio aberta para todos os equipamentos, tanto terminais quanto PCs comuns, será necessário usar criptografia WEP com chave hexadecimal compartilhada, porém a chave deverá ficar em branco;
  • No caso de separar a rede sem fio para os terminais, o ideal será usar o ponto de acesso como roteador ou conectá-lo a uma rede interna (como no LTSP), para impedir que os PCs comuns acessem à rede externa;
  • Tanto o Linux quanto o Windows podem ser usados como servidor (ou ambos, para funções diferentes, devendo ser devidamente configurados);
  • O nome da rede sem fio, o endereço IP do servidor e o nome da sessão a serem definidos serão usados na configuração do gPXE e do ThinStation;
  • A URL ficará com a seguinte sintaxe: http://ip-servidor/nome-sessao/arquivos-boot.

Para facilitar o serviço, fiz a compactação dos três principais arquivos de configuração em um arquivo ZIP. Clique aqui para baixá-lo e descompacte-o (e aproveite para estudar os arquivos, pois você vai precisar deles mais tarde).

Configurando o gPXE para os terminais

O site Rom-o-matic possibilita a criação de disquetes gPXE personalizados on-line, de forma mais fácil e rápida que baixando o gPXE para compilar localmente.

Agora vamos ao modo de fazer:

  • Acessando o site Rom-o-matic, clique em gPXE git (current-top-of-git-tree) Image Generator – Release Notes, depois, em Customize image configuration options, clique em Customize;
  • Na linha Choose a NIC type, escolha ath5k (usaremos somente placas Atheros 802.11b/g);
  • Em Download Protocols, marque somente a opção DOWNLOAD_PROTO_HTTP;
  • Desmarque todas as opções em SAN Boot Protocols e Name Resolution Modules;
  • Em Image Types, marque somente as opções IMAGE_SCRIPT e IMAGE_BZIMAGE;
  • Em Command Line Options, marque somente as opções AUTOBOOT_CMD, NVO_CMD, IMAGE_CMD e DHCP_CMD;
  • Copie o texto do arquivo boot.gpxe.txt e cole no campo Embedded Script, alterando o nome da rede sem fio (net0/ssid), o IP do servidor de boot e o nome da sessão;
  • Clique em Get Image e será feito o download. Salve o arquivo com o nome, por exemplo, “gpxe-0.9.7+-ath5k.dsk”;
  • Grave o arquivo bit-a-bit no disquete. No Windows, use o RawWriteWin. No Linux, use o seguinte comando (como root):

# cat gpxe-0.9.7+-ath5k.dsk > /dev/fd0

Colocando o disquete no drive do terminal, o boot será efetuado caso tudo esteja certo. Como o ThinStation ainda não foi configurado, o erro de download será inevitável.

Configurando o ThinStation

Ao baixar e descompactar o arquivo TAR GZ do ThinStation, é preciso alterar apenas os arquivos build.conf e thinstation.conf.buildtime, dentro da pasta descompactada, para compilar os arquivos de boot a serem salvos no servidor web.

Salve os arquivos build.conf.txt e thinstation.conf.buildtime.txt modificados na pasta (sem a extensão .txt) e faça as devidas alterações, lembrando-se do que foi dito acima. Depois use o seguinte comando para compilar:

$ ./build

Após compilados, os arquivos de boot estarão na subpasta boot-images. Pegue os arquivos vmlinuz e initrd, em boot-images/loadlin, e copie-os para a raiz do servidor web, na pasta com o nome da sessão. Após isso os terminais poderão efetuar o boot pré-configurado no disquete gPXE.

O terminal em ação

Como este artigo visa uma abordagem prática sobre tecnologias que já existem, vale a pena apreciar o resultado, não é mesmo?

Boot com servidores Windows e Linux

Configurações

Infelizmente não foi possível testar uma rede real com uma quantidade significativa de terminais, mas acredito que usando como base as configurações do LTSP é possível ter uma rede de terminais com performance similar. Com relação aos terminais, uma configuração menos modesta é recomendável.

Servidor:

  • Mínimo: Pentium 4 2GHz, 256 MB RAM (ou 512 MB para Windows, isso varia conforme o SO);
  • Quanto maior for a quantidade de terminais, mais potente deverá ser o processador;
  • Para cada grupo de até 10 terminais, acrescentar 1 GB na memória RAM;
  • Se o servidor for máquina virtual, obviamente as configurações da máquina real onde ela está instalada terão que ser mais altas;
  • É recomendável o uso de memória virtual (swap), por causa da quantidade de terminais;
  • Placa de rede cabeada, pelo menos uma (placa de rede sem fio no servidor é desaconselhável);
  • Espaço em HD: o suficiente para os arquivos de boot no servidor web e para as contas de usuário (você pode definir cotas de disco por usuário).

Terminal:

  • Pentium II ou superior (200 MHz pelo menos);
  • 32 MB RAM (64 MB recomendável);
  • Drive de disquete (obrigatório, para o gPXE), HD desnecessário;
  • Placa de video compatível com VESA (8 MB pelo menos);
  • Placa PCI USB (ou portas na placa-mãe, para teclado e mouse);
  • Placa PCI wireless com chipset Atheros padrão 802.11b/g.

Outros:

  • Procure nas especificações do seu roteador sem fio ou access point a quantidade limite de máquinas que podem acessá-lo, pois isso influencia no desempenho da rede sem fio;
  • Se você não quiser o modo gráfico no servidor, mas apenas nos terminais, experimente pesquisar Xvfb e Virtualbox-Headless.

Considerações finais

Não quero encerrar o assunto por aqui. Antes, pelo contrário, o meu desejo é tornar este artigo o “pontapé inicial” das experiências de muitos, bem como aperfeiçoar a técnica, de maneira que possa ser útil inclusive comercialmente (computação em nuvem, metarreciclagem, entre outros).

Com relação ao Windows, fiz os testes com fins experimentais (sabe-se da questão legal de trabalhar com Terminal Service no Windows). O meu interesse se restringe ao uso de código-fonte aberto, mas fique à vontade quem quiser trabalhar com software proprietário, desde que respeite as questões legais.

Estou à procura de parceiros para desenvolver um projeto baseado neste artigo. Comente se estiver interessado.

Quero agradecer a todos os que me apoiaram e foram pacientes durante os testes e a composição deste artigo. Vocês serão grandemente recompensados.

“Porque a nossa leve e momentânea tribulação produz para nós eterno peso de glória, acima de toda comparação,…” (2 Coríntios 4:17)

2 Respostas para “Terminal Server sem fio”

  1. Allan Disse:

    Olá Flavio,

    Estive lendo seu artigo e realmente ele é muito interessante. Meus sinceros parabéns.
    Nós do IFES estamos formando um grupo de pesquisa e há muito tempo já tinha uma idéia parecida, entretando com algumas diferenças.
    Uma proposta seria utilizar alguma forma de PXE (poderia ser wPXE) diretamente nas interfaces sem fio, através de APs com capacidade de conexão com Internet (chip GSM embutido) conectado a um Cluster, que pode fornecer telas gráficas (SO, Aplicações, VMs) ou até mesmo execução remota de algoritmos pesados. Acho que o maior problema é a não existência de um driver wireless para isso.

  2. João Victor Disse:

    Tambem gostaria de lhe dar meus parabens por essa solução, e por expor a ideia. Eu estou tentando configurar pelo menos com o cabo. agradeceria se podesse me enviar seus arquivos conf para eu poder compara-los com os meus. obrigado

Deixe uma resposta