Economizando com o uso de terminais leves

Economizando com o uso de terminais leves
Este tutorial mostra as soluções disponíveis para montar uma rede baseada em terminais 486. Inclui os programas necessários, planejamento e cabeamento da rede, etc. Que tal montar um laboratório de informática com 10 terminais com menos de R$ 4500?

Hoje em dia é possível comprar placas de rede 10/100 por menos de 30 reais e, com o barateamento dos novos padrões, estes preços não voltarão a subir. Com as redes tão baratas, aplicações que estavam fora de moda, como os terminais diskless, terminais gráficos, etc. voltaram a ser atrativas.

Os PCs continuam relativamente caros, mas a banda de rede está muito barata. Com isto, começa a fazer sentido aproveitar PCs antigos, transformando-os em terminais de PCs mais rápidos. Com uma rede bem planejada, um único Pentium III ou Duron pode servir 5, 10 ou até mesmo 20 terminais 486 e com um desempenho muito bom, já que os aplicativos rodam no servidor, não nos terminais.

A grande vantagem é a economia de custos. Para montar um laboratório com 10 PCs novos, ligados em rede, você gastaria pelo menos 16.000 reais, fora a mão de obra. Usando um servidor e 10 terminais 486 você gastaria menos de 4500 reais (fora mão de obra), presumindo que comprasse cada 486 por R$ 200. O desempenho nos terminais porém não será o de um 486, mas sim o de um Pentium III ou Duron. Esta solução é muito útil também em “ambientes hostis”, como terminais de acesso público, já que um 486 custa muito menos para ser substituído do que um PC novo. Você também pode incluir mais terminais caso necessário a um preço muito baixo.

Já comentei sobre esta possibilidade em outros artigos, o que despertou a curiosidade de muita gente 🙂 Resolvi então escrever mais um artigo, dando todos os detalhes. Todas as soluções que apresentarei a seguir são baseadas no Linux. A Microsoft oferece uma solução para terminais, chamada Windows Terminal Server. A eficiência também é boa, mas é inviável por causa do custo do software, já que além da licença do servidor, é preciso pagar por mais uma licença para cada terminal. No final, os custos do sistema da Microsoft são parecidos com os de simplesmente trocar todos os micros. Não é à toa que esta solução é tão pouco usada…

Existem quatro formas de rodar aplicativos remotamente:

  • Via VNC, numa estação com o Windows ou Linux instalado
  • Rodando aplicativos via SSH ou Telnet, numa estação com Linux ou Windows
  • Rodando toda a interface gráfica a partir do servidor, numa estação com Linux
  • Usando o Etherboot para criar estações diskless, que baixam todo o software a partir do servidor.

O VNC é interessante para máquinas que rodam Windows, pois permite misturar programas das duas plataformas. Mas, em compensação, ele também é mais pesado, tanto para o cliente quanto para o servidor, e consome mais banda da rede. Com uma rede de 10 megabits e um 233 MMX você já poderá usa-lo confortavelmente, mas para ter realmente a mesma velocidade de atualização de tela que teria sentado na frente do servidor, você precisaria de uma rede de 100 megabits.

terminloVNC em ação

Outra solução é usar o SSH ou Telnet para rodar aplicativos remotamente. Se o cliente rodar Windows é possível apenas rodar aplicativos de modo texto, mas se o cliente também rodar Linux é possível rodar também qualquer aplicativo gráfico instalado no servidor. A vantagem neste caso é que você pode misturar aplicativos locais e remotos. Esta é a solução ideal caso você tenha estações Linux com uma configuração razoavelmente atual.

Via SSH também é possível carregar toda a interface gráfica a partir do servidor e rodar todos os programas a partir dele. Este seria o próximo nível, que poderia ser usado se você tiver um monte de terminais 486 com 12 ou 16 MB de RAM, mas com pelo menos 200 ou 300 MB de espaço em disco para uma instalação mínima do Linux. Neste caso é possível configurar as estações para abrir diretamente na tela de Login do servidor, dispensando o uso do SSH, como veremos mais adiante.

Finalmente, se as estações não tiverem sequer HD, você pode configurá-las para dar boot através da rede, usando um disquete ou a ROM da placa de rede. Neste caso elas baixarão todo o software apartir do servidor. Esta é a solução mais trabalhosa e a menos flexível, mas a que exige menos hardware nas estações.

Falando assim, até parece que o assunto é complicado, mas tenha em mente que não é. Se você tentar colocar estas idéias na prática, vai ver como é algo bastante simples. Vou começar com o VNC que tem a configuração mais simples (e que já expliquei numa matéria anterior) para manter um nível gradual de dificuldade.

Vamos então aos detalhes…

Montando a rede

Numa rede “normal” teríamos apenas uma placa de rede em cada micro, uma no servidor e um hub interligando todos. Mas, isto não serviria muito bem no nosso caso, pois ao utilizar um hub apenas uma estação pode transmitir de cada vez. Isto funcionaria bem caso você tivesse apenas dois, três, ou talvez quatro terminais, acima disto você começará a notar perda de desempenho pelo congestionamento da rede. Esta medida pode variar de acordo com a intensidade do uso naturalmente, a ponto de com 6 ou 8 micros você conseguir um desempenho satisfatório, mas não é a melhor solução.

Trocar um Hub por um switch aumentaria nossos custos em 300 ou 400 reais e não resolveria o problema. Um switch permite que várias estações transmitam dados ao mesmo tempo, mas desde que não para o mesmo destinatário. Como no nosso caso quase tudo parte do servidor, o switch apenas evitaria as colisões de pacotes, mas não resolveria o problema da banda. O custo é relativamente grande, para um ganho de desempenho pequeno.

A melhor solução, e bem mais barata que usar um switch, seria combinar várias placas de rede no servidor e, caso necessário, alguns hubs.

A vantagem é óbvia. Com apenas uma placa de rede, os 10 ou 100 megabits são divididos entre todas as estações. Adicionando mais placas, temos 10 ou 100 megabits para cada placa, que será compartilhada por um número menor de estações. O único limite para o número de placas de rede que você pode ter no servidor é o número de slots PCI livres.

Isto também é vantajoso do ponto de vista do custo. Uma placa de rede popular custa hoje entre 25 e 30 reais por unidade. Um hub de 10 megabits, de 8 portas custa de 50 a 70 reais, enquanto um de 100 megabits custa apartir de 100 reais. Um switch por sua vez não sai por menos de 300 ou 400 reais.

Ou seja, com o dinheiro de um switch podemos comprar um batalhão de placas de rede e hubs, que combinados oferecerão um desempenho muito melhor.

Pois bem, se você tiver até 6 terminais, o melhor negócio será simplesmente dispensar o hub e usar uma placa de rede para cada terminal (presumindo que existam slots PCI suficientes). Se o número de terminais for maior que o número de slots disponíveis, então o ideal será usar o máximo de placas de rede possível e usar um ou mais hubs para conectar todos os terminais, sempre procurando manter o menor número possível de terminais por hub. Se você tiver 10 terminais, puder colocar 6 placas de rede no servidor e tiver dinheiro para comprar mais 2 hubs, o ideal seria ligar 4 terminais diretamente ao servidor e pendurar mais 3 terminais em cada hub. Veja um esquema de ficaria a rede neste exemplo:
terminm0
Lembre-se que apenas as placas de rede PCI são 10/100, todas as placas de rede ISA são de 10 megabits. Ao misturar placas de 10 e 100 no mesmo hub, todas passarão a trabalhar a apenas 10 megabits, para manter compatibilidade com as mais lentas.

Se você for misturar estações com placas Ide 10 e 100 megabits, prefira ligar as estações com placas de 10 diretamente ao servidor e distribuir as com placas 10/100 entre os Hubs (que também devem ser de 100 megabits). É mais fácil dividir 100 megabits entre 4 ou 5 estações do que dividir 10 megabits.

Configuração do servidor

Além da penca de placas de rede, o servidor precisa ter uma configuração razoável, já que vai rodar vários aplicativos diferentes e ao mesmo tempo.

O mínimo recomendável para um bom desempenho seria um Pentium III, Celeron ou Duron de 600 MHz, 128 MB de RAM e mais 32 MB para cada cliente, além de um HD razoavelmente rápido e uma placa mãe com 6 slots PCI, de preferencia com uma placa de vídeo AGP (ou onboard) para não ocupar nenhum dos slots PCI. Claro que um processador mais rápido seria muito bem vindo. Não deixe também de monitorar o uso de memória RAM no servidor e fazer um upgrade sempre que necessário.

A placa de vídeo pode ser qualquer uma suportada pelo Linux, embora segundo o Wooky, usar uma GeForce 2 com os drivers oficiais da Nvidia permite que você execute aplicativos 3D (inclusive jogos) nas estações com aceleração 3D, feita pelo servidor. Os jogos 3D não seriam muito interessantes, já que a velocidade de atualização da tela não é suficiente para mais do que dois ou três FPS em tela cheia, mas é uma mão na roda se você pretender rodar algum aplicativo gráfico com suporte a OpenGL.

O HD também deve ter espaço suficiente para guardar todos os arquivos pessoais dos usuários. O servidor também não vai precisar de um monitor, pois depois de configurado você poderá acessar as configurações a partir de qualquer terminal. Nada impede entretanto que você use o próprio servidor como mais um terminal, já que com o usuário logado no sistema como um usuário normal (jamais deixe que utilizem a conta root neste caso) terá pouca chance de fazer barbeiragens no sistema.

Depois de planejar a rede e montar o servidor, falta montar a rede e instalar o Linux no servidor. Você pode tirar as suas dúvidas sobre cabeamento aqui: http://www.guiadohardware.info/tutoriais/060/

Você pode utilizar qualquer distribuição Linux mas, se você é iniciante, eu recomendo o Mandrake 8.1, que é atualmente o mais simples de configurar. Você vai encontrar instruções detalhadas de como instalar e configurar o sistema no: https://www.hardware.com.br/press/cd/

Com o sistema instalado, você ainda precisará configurar as placas de rede. A forma menos problemática de fazer isso é instalar o sistema com apenas uma placa e adicionar mais uma placa a cada reinicializarão. O Kudzu detectará as novas placas a cada boot, terminado você ainda precisará configurar os endereços IP de cada uma.

No Mandrake você pode fazer isso através do Mandrake Control Center > Rede & Internet > Conexão. Você verá uma lista com todas as placas de rede instaladas no sistema. Clique em “Configurar” para abrir o Wizzard que permitirá que especifique o endereço IP a ser usado por cada uma.
terminm2
Naturalmente, cada placa de rede deverá ter um endereço diferente. Você pode utilizar tanto a faixa de endereços 192.168.0.x (que permite o uso de até 254 hosts) com máscara de sub-rede 255.255.255.0 quanto a faixa 10.x.x.x. com máscara de sub-rede 255.0.0.0, que permite um número quase ilimitado de endereços.

Os endereços podem ser por exemplo 10.0.0.1, 10.0.0.2, 10.0.0.3, etc. Lembre-se que se uma das placas de rede estiver sendo usada para conectar à Internet (ADSL, cabo…) ela deverá ser configurada com o endereço fornecido pelo provedor, ou com a opção “bootop/DHCP”, não com o endereço de rede local.
terminm4
A configuração poderia ficar assim:

Placa 1 (eth0): Conexão com a Internet via Speedy, IP: 200.223.201.56, máscara de sub-rede 255.255.255.0.

Placa 2 (eth1): Rede local, IP: 10.0.0.1

Placa 3 (eth2): Rede local, IP: 10.0.0.2

Placa 4 (eth3): Rede local, IP: 10.0.0.3

Placa 5 (eth4): Rede local, IP: 10.0.0.4

Placa 6 (eth5): Rede local, IP: 10.0.0.5

Na etapa final você deverá especificar o nome do host, o servidor DNS e o Gateway para acesso à Web e qual das placas de rede está conectada ao Gateway. No nosso exemplo seria a eth0.
terminm6
Se você tiver uma conexão via ADSL ou cabo, os dois campos deverão ser preenchidos com os dados fornecidos pelo provedor e o dispositivo de gateway será a placa de rede conectada ao ADSL/Cable Modem. Se o servidor está acessando através de uma conexão compartilhada por outra máquina, os dois campos devem ser preenchidos com o endereço IP do servidor de conexão (192.168.0.1 se for uma máquina Windows compartilhando a conexão através do ICS).

Logo abaixo você verá o utilitário para compartilhar a conexão com a Internet, mas no nosso caso ele não é necessário, pois o único que acessará a Web será o servidor. Os terminais apenas mostram a janela do Browser, montada por ele.

Estas instruções se aplicam ao Mandrake e ao Techlinux. Se você estiver usando o Conectiva ou o Red Hat você deverá fazer a configuração através do Linuxconf.

Como o servidor será acessado por vários usuários, outro detalhe importante é estabelecer que apenas o root poderá reiniciar o sistema. Para isso, abra o Kcontrol com permissões de root (kdesu kcontrol num terminal) e acesse a seção Sistema > Gerenciador de login > Sessões
terminm8
Esta é a configuração básica do servidor. Daqui pra frente, as configurações necessárias variam de acordo com o meio de acesso escolhido.

Terminais via VNC

O VNC é na verdade um programa de administração remota, mas que, rodando num servidor Linux, também desempenho bem a função de servidor de terminal. A vantagem é que ele roda em praticamente qualquer sistema operacional, incluindo naturalmente Windows e Linux. Ele é a melhor opção para usar programas Linux junto com o Windows.

O problema com o VNC é que ele transmite os dados da tela na forma de imagens, incluindo o texto das janelas. Isto é bem menos eficiente que o protocolo do Xfree, utilizado pelas opções a seguir, onde são transferidas instruções para criar as janelas, junto com seu conteúdo. Além do tráfego de dados via VNC ser maior, a utilização de processador, tanto no servidor quanto nas estações é bem maior. O VNC é recomendável apenas para estações com processadores Pentium 133 ou mais rápidos. Como já tinha escrito um artigo sobre o VNC a pouco tempo, apenas colei o texto. Se você já leu, passe para o próximo tópico.

Se você chegou a utilizar o VNC no Windows, provavelmente ficou decepcionado com a velocidade de atualização da tela e com a possibilidade de abrir um único terminal, que mostra a mesma área de trabalho que quem estiver na frente do micro verá. Não é à toa que a versão Windows do VNC é geralmente apresentada como uma simples ferramenta de administração remota. Realmente não serve para muita coisa além disso. Para detalhes de como utilizar o VNC no Windows leia: https://www.hardware.com.br/artigos/administracao-remota/

No Linux as coisas são um pouco diferentes. Graças à forma como o X gerencia os dados a serem mostrados no vídeo, o VNC torna-se muito mais rápido e eficiente e ganha o suporte a múltiplos terminais. Basta lembrar que o X foi originalmente desenvolvido justamente para esta função, possibilitar o uso de um terminal gráfico Unix em computadores com pouco poder de processamento, isso ainda na década de 70.

Usando uma rede de 10 megabits é possível usar uma máquina Linux remotamente com quase a mesma qualidade que teria sentado na frente dela e com uma rede de 100 megabits é quase impossível notar diferença, com o detalhe de que o cliente VNC roda numa janela do Windows (também é possível usa-lo em tela cheia), o que permite que você use a máquina Linux ao mesmo tempo que roda outros programas. Melhor ainda, como o cliente apenas mostra a imagem da tela, você pode abrir vários aplicativos na máquina Linux, sem que a máquina Windows fique lenta. Obviamente, para isso você precisará ter uma máquina Linux configurada ligada em rede com a máquina Windows.

Isto tem duas utilidades. A primeira é claro a possibilidade de ter uma workstation Linux dentro do Windows e rodar ao mesmo tempo seus aplicativos preferidos das duas plataformas. Rodar o servidor VNC não impede que alguém utilize a máquina Linux normalmente.

Instalar o VNCserver no servidor Linux é razoavelmente simples. Comece baixando o programa aqui: http://www.cl.cam.ac.uk/research/dtg/attarchive/vnc/index.html

Descompacte o arquivo e copie os arquivos

  • vncpasswd

  • vncserver

  • Vncviewer

  • vncviewer

  • Xvnc

… de dentro da pasta que será criada para o diretório “/usr/local/bin” (você precisa de permissões de root para isso, use o comando “kdesu konqueror” para abrir o gerenciador de arquivos com privilégios de root)

Se quiser habilitar o recurso de acesso via browser, crie o diretório “vnc” dentro da pasta “/usr/local” e copie a pasta classes para dentro da pasta (o caminho ficará “/usr/local/vnc/classes“).

Feito isso, abra o arquivo “vncserver” que foi copiado e altere as linhas:

$geometry = “1024×768”;

$depth = 8;

.. para a resolução e quantidade de cores que deseja usar. A resolução pode ser qualquer uma, não necessariamente uma das resoluções padrão. Se for maior que a resolução de vídeo do cliente, a janela ocupará apenas parte da tela e se for maior aparecerão barras de rolagem.

Se você quiser usar a janela do VNC junto com a barra de tarefas do Windows, como no screenshot que coloquei no início do tutorial, você deve usar uma resolução um pouco menor que a padrão. No meu caso por exemplo o cliente usa 1024×768 então usei:

$geometry = “1014×710”;

$depth = 16;

Como pode notar, aproveitei para aumentar também a resolução de cores, de 8 para 16 bits. Naturalmente, ao usar 16 bits de cor a velocidade de atualização da tela cairá um pouco, mas a diferença não chega a ser muito grande, graças ao bom trabalho de compactação que o VNC faz.

É importante iniciar o VNC com a mesma profundidade de cores usada no servidor, caso contrário as cores ficarão alteradas. Não é necessário que a estação use a mesma profundidade de cores que o servidor, pois o VNC se encarrega de fazer a conversão, neste caso sem alterar as cores.

Depois de salvar o arquivo, abra um terminal e use o comando “vncserver” para iniciar o VNC. Da primeira vez que for executado, o programa pedirá que você defina uma senha de acesso. Pode ser qualquer coisa com 6 caracteres ou mais. A senha naturalmente serve para impedir que qualquer um possa se conectar à sua máquina, sem autorização.

Para acessar o servidor, baixe o VNC for Windows no link abaixo. Você pode baixar versões para outros sistemas operacionais (inclusive Windows CE e Palm):
http://www.cl.cam.ac.uk/research/dtg/attarchive/vnc/index.html

Basta descompactar o arquivo e executar o vncviewer.exe. Forneça o endereço IP do servidor, seguido por um “:” e o número do terminal (ou display). Cada vez que você executa o vncserver no servidor será criado um terminal virtual diferente. O primeiro terminal recebe o número 1, o segundo 2, e assim por diante. É possível criar um número teoricamente ilimitado de terminais na mesma máquina Linux e cada um permite a conexão de um cliente diferente, respeitando naturalmente as limitações de velocidade do servidor e principalmente da rede. Para chamar o cliente VNC no Linux basta usar o comando “vncviewer” num terminal.
terminma
Da primeira vez que se conectar ao servidor você terá uma surpresa desagradável. O gerenciador de janelas default do VNC é o TWM, um gerenciador antigo e com poucos recursos:
terminmc
Para mudar isso, abra o diretório .vnc, que será criado dentro do seu diretório de usuário (/home/nome_do_usuario/.vnc) da primeira vez que rodar o vncserver e edite o arquivo “xtartup“. Lembre-se que todos os diretórios cujo nome começa com “.” são ocultos, não se esqueça de marcar a opção “mostrar todos os arquivos” no gerenciador de arquivos.

Basta substituir o “twm” na última linha pelo nome da interface gráfica que gostaria de utilizar. A minha preferida nesse caso é o “blackbox“, que por ser leve e não utilizar imagens nem ícones nos menus é a que oferece um melhor desempenho via rede, ao mesmo tempo em que permite abrir muitos terminais, sem acabar com a memória RAM do servidor. Na falta do blackbox você pode usar qualquer outra interface que tenha instalada.

O arquivo ficará assim:

#!/bin/sh

xrdb $HOME/.Xresources

xsetroot -solid grey

xterm -geometry 80+24+10+10 -ls -title “$VNCDESKTOP Desktop” &

blackbox &

Como disse, você pode utilizar qualquer interface gráfica que tenha instalada na máquina, bastando substituir o “blackbox” pelo comando adequado. Alguns exemplos são:

  • startkde: para abrir o KDE (em algumas distribuições o comando é apenas kde)
  • gnome-session: usar o Gnome
  • afterstep: usar o afterstep
  • wmaker: Window Maker

E assim por diante.

Para que a alteração surta efeito, feche o terminal virtual que havia sido criado com o comando vncserver -kill :1 e chame novamente o vncserver. O mesmo comando pode ser usado sempre que você desejar fechar os terminais virtuais criados.

Você pode inclusive criar vários terminais com diferentes resoluções e diferentes interfaces gráficas. Para isso, basta alterar a resolução de tela no /usr/local/bin/vncserver, alterar a interface gráfica no xstartup e digitar novamente o comando vncserver depois de cada alteração.

Uma opção mais prática para abrir vários terminais com resoluções e profundidade de cores diferentes é usar o comando vncserver com os parâmetros “-depth” e “-geometry” como em:

vncserver -depth 16 -geometry 1014×710

É um pouco longo, mas muito mais prático que editar os dois arquivos de configuração a cada mudança. Assim você poderá ter o terminal 1 com 1024×768 e KDE, o terminal 2 com 800×600 e BlackBox e assim por diante.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X