Missão

Desenvolvermos soluções acessíveis e de qualidade, solucionando os problemas e agregando valor ao serviço prestado por nossos clientes.

Visão

Sermos reconhecidos como profissionais de excelência em nossas áreas de atuação.

Compromisso

Fornecer aos clientes o melhor serviço e com a melhor qualidade.

Clientes para o sistema de janelas X

Minha idéia inicial era fazer algo sobre o uso de clientes X para o aproveitamento de máquinas antigas ou com menor capacidade de memória. Decidi começar com uma introdução ao sistema de janelas X e isto tornou o artigo um pouco maior do que planejado incialmente, portanto decidi dividi-lo em duas partes: uma conceitual e outra prática.

Espero que ambas sejam proveitosas.

Clientes X

Como comentamos na parte conceitual, o ambiente gráfico do Linux usa-se do sistema de janelas X como sua base. Sobre esta base os diversos gerenciadores de janelas — como o KDE ou o Gnome — podem ser implementados sem ter que interagir diretamente com o hardware, reduzindo a quantidade de código necessária e fazendo com que estes possam preocupar-se em fazer bem aquilo para o quê foram projetados: disponibilizar ao usuário um ambiente eficiente e agradável.

O uso do X traz um benefício adicional que é, devido à sua arquitetura cliente/servidor, permitir a execução de aplicações gráficas remota e localmente. É graças a esse recurso que podemos configurar máquinas clientes com pouco poder de processamento e que sejam capazes de executar todas as aplicações necessárias em um servidor de aplicações.

Instalação

Há diversas maneiras de realizar a instalação tanto no cliente quanto no servidor, optamos pela maneira mais simples, sendo a mais fácil e rápida de se implementar em qualquer distribuição Linux ou então em qualquer versão de BSD (FreeBSD, OpenBSD, NetBSD).

As configurações aqui expostas baseiam-se na versão do X disponibilizada pelo XFree86, posteriormente e se este tiver a mesma popularidade, pretendemos adicionar as adaptações necessárias para que tudo funcione também com o X.org.

Estas configurações não preocupam-se com a minimização de espaço em disco nos clientes ou nos servidores, principalmente devido ao baixo custo dos discos rígidos atualmente. De qualquer maneira, para uma instalação em uma máquina cliente, são usados menos de 200 MiB de disco. O espaço no servidor é dependente das aplicações que serão instaladas, começando também em 200 MiB. Soluções mais enxutas existe, permitindo este tipo de solução aqui descrita em máquinas sem disco algum, usando uma memória do tipo EPROM na própria placa de rede ou então com a iniciação da máquina sendo feita por disquete.

Servidor

No servidor é necessário instalar o XFree86, um gerenciador de login gráfico e o gerenciador de janelas. Se você consegue usar o ambiente gráfico no servidor todos os pacotes necessários já estão instalados. Se não consegue, os seguintes comandos farão isso no Conectiva Linux, podendo ser facilmente adaptados para os BSDs e outras distribuições de Linux:

# apt-get install xfree86
# apt-get install kdm

Para o gerenciador de janelas há inúmeras opções, sendo as mais comuns o KDE:

# apt-get install -f kde-common

(este pacote do KDE deve instalar o mínimo, mas o ideal é selecionar os pacotes necessários via, e.g., Synaptic ou aptitude ou mesmo manualmente) e o Gnome:

# apt-get install task-gnome-minimal

(que também é um pacote que traz apenas o básico e mínimo para ter-se o Gnome, sem os opcionais e ferramentas interessantes).

Configuração

A configuração no servidor é simples e consiste na edição de 3 arquivos de configuração da forma indicada a seguir.

  1. No arquivo /etc/X11/xdm/xdm-config, procure e insira um sinal de comentário (!) no começo da linha que parece-se com a abaixo, de modo que fique exatamente como mostrada aqui:
    !DisplayManager.requestPort:    0
    
  2. Edite o arquivo /etc/X11/xdm/Xaccess, e descomente a linha que permite que todas as máquinas conectem-se ao servidor de login. Para isto basta retirar o # do começo da linha, deixando-a como no modelo abaixo:
    *             #any host can get a login window
    

Esta opção permitirá que qualquer cliente da sua rede se conecte ao servidor de login, ainda será necessário que uma conta e uma senha sejam conhecidas para que as aplicações da máquina possam ser usadas. É conveniente, entretanto, especificar a rede autorizada, para evitar quaisquer problemas, tentativas de conexão, etc.

Para autorizar o acesso a apenas algumas máquinas ou redes, pode-se adicionar os IPs de interesse no começo de uma linha em qualquer ponto do arquivo.

192.168.0.20  # máquina20.intranet
192.168.0.10  # máquina10.intranet
192.168.0.100 # cafezinho.intranet

# Adicionado para a palestras do diretor
192.168.0.45  # auditório 3, computador da esquerda

Note que é possível usar o # como um sinal de início de comentário, fazendo com que tudo o que venha após ele seja ignorado. Isso permite que documentemos as máquinas ou adicionemos anotações para sabermos o motivo da autorização de uma máquina que normalmente não tem acesso à rede.

O próximo passo é editar o arquivo /usr/lib/kde3/share/config/kdm/kdmrc, procurando pela seção Xdmcp e nela alterando o parâmetro Enable para True.

# Enable=false
Enable=true

Após estas configurações, é necessário reiniciar o gerenciador de login, que no nosso caso é o kdm. Para isso, pode-se reiniciar o ambiente gráfico ou então trocar o runlevel em execução na máquina para o que possua o gerenciador de login gráfico.

# init 3
# init 5

O primeiro init faz com que a máquina saia do ambiente gráfico padrão e vá para o "modo texto". O segundo faz com que o gerenciador gráfico de login seja ativado.

Cliente

Instalação

Nas máquinas clientes é necessário instalar apenas o xfree86, já que todas as ferramentas e aplicações — incluindo o gerenciador de login — serão usadas diretamente do servidor.

Recomendamos que seja feita uma instalação mínima e que os pacotes do X sejam adicionados posteriormente, com o comando

# apt-get install xfree86

Configuração

Para iniciar o ambiente gráfico a partir do servidor, basta editar dois arquivos no Conectiva Linux ou um arquivo se sua distribuição Linux ou BSD não informa o modo de inicialização no gerenciador de boot.

O primeiro arquivo é o /etc/inittab, onde deve-se substituir a linha

x:5:once:/etc/X11/prefdm -nodaemon

pelas linhas

#x:5:once:/etc/X11/prefdm -nodaemon
x:5:once:/etc/X11/X -query IP.DO.SERVIDOR.X

onde IP.DO.SERVIDOR.X é o endereço IP do servidor. Pode-se usar, caso o DNS da máquina esteja corretamente configurado e o servidor X possua um cadastro neste, o nome do servidor X no lugar de seu endereço IP.

O segundo arquivo é o do gerenciador de boot, LILO ou Grub, onde deve-se remover o valor do nível de execução padrão. Este valor ali configurado sobrepõe-se ao que é inserido no /etc/inittab e, infelizmente, vem configurado por padrão para '3' para uma entrada referente ao modo texto e '5' para uma referente ao modo gráfico. O ideal seria ter o arquivo /etc/inittab modificado de acordo com a opção de instalação do usuário, mas nem tudo é feito como achamos correto. Eles devem ter seus motivos para a escolha (e eu até imagino alguns...).

Testando a implementação

Após configurar o servidor pode-se utilizá-lo como servidor de aplicações gráficas mesmo sem ter realizado as modificações no cliente. Para isso, a partir de qualquer máquina cliente pode-se digitar:

$ X -query IP.DO.SERVIDOR.X

para iniciar o ambiente gráfico disponibilizado no servidor.

Qualquer resultado diferente de uma tela gráfica solicitando que sejam fornecidos um login de usuário e uma senha (a tela para a senha pode ser diferente da solicitando o login do usuário, dependendo do gerenciador de login usado) indica que houve um erro. Uma tela cinza, gráfica, indica que há um provável erro na configuração do servidor, enquanto que o retorno à tela do modo texto indica um provável problema de configuração do X na máquina cliente.

Sobre este documento

Autor: Jorge Godoy

Data: 17 de setembro de 2004

Última atualização: 17 de setembro de 2004

“Um novo conceito em prestação de serviços”