|
|
|
|
||
![]() Páginas em Construção |
Multiternial no Linux Não é difícil fazer um multiterminal com Linux num notebook Introdução Multiterminal é um conceito que consiste em um computador suportando vário terminais, composto cada um por monitor, teclado, mouse e placa de som (opcional), de forma tal que cada terminal possa ser usado independentemente e compartilhando os recursos de um mesmo computador. Mais informações em Multiterminal por C3SL e na comunidade Multilinux. No Linux, o sistema é iniciado em modo texto na placa de vídeo principal, determinada pela placa mãe. Alguns passam a usar um modo gráfico básico para exibir uma tela amigável enquanto o sistema é carregado por completo. Depois disso é carregado o suporte gráfico completo por um sistema nomeado X, o qual faz parte do projeto Xorg. O sistema X possui configurações específicas (ou genéricas) sobre placas de vídeo, monitores, mice (plural de mouse em inglês), teclados e como esses dispositivos são distribuídos e seu comportamento numa área de trabalho. dessa forma, todos os programas gráficos rodam sobre o X. Para então abrir sessões independentes, é carregado sobre o X principal e real, o qual entende tudo como parte de uma única área de trabalho, um X virtual, sendo usado aqui o Xephyr. É aberto então sobre um X real um X virtual para cada terminal, um em cada monitor com o respectivo mouse e teclado, possibilitando ter vários usuário em um computador de forma independente. Motivado por colocar um notebook com Debian Testing AMD64 e placa de vídeo nVidia GeForce Go 7600 com suporte a duas telas, como pode ser visto e configurado em nVidia no Notebook, para servir duas pessoas num momento temporário, tentando generalizar para todos os casos e também para pessoas que querem ter uma ideia geral sobre multiterminal com Linux, escrevo esse artigo. Placas de Vídeo e Monitores É preciso que se coloque várias placas de vídeo para se ligar vários monitores, sendo que, se partir para soluções com peças novas, as placas de vídeo comum no mercado atualmente suportam dois monitores e são PCIe (PCI Express), onde, se não comprar uma placa mãe com suporte a várias placas de vídeo PCIe, vai ficar limitado a apenas dois terminais por computador. Mas já é algo interessante quando se tem um computador novo com uma placa de vídeo com suporte a dois monitores. Raras placas de vídeo on-board (soldada na placa mãe) oferecem tal suporte. Geralmente essas placas para dois monitores tem um conexão nomeada de VGA, outrora RGB ou DB25, e um outra DVI-I, onde um adaptador simples pode torná-la VGA, que é a conexão comum dos monitores atualmente. Além dessas, tem a DVI-D, padrão HDMI, presente em placas mãe de luxo e placas de vídeo de última geração, a qual não é possível adaptá-la de forma simples para VGA ou DVI-I para usar monitores comuns. Uma outra alternativa, mas difícil de se encontrar novas são placas de vídeo PCI (não PCIe), sendo que é possível retirar tal placas de máquinas antigas e sucateadas para proveito nessa topologia, sendo que estas dificilmente oferecem suporte a dois monitores. Além dessas alternativas, ainda é possível utilizar placas mãe com suporte a conexão de placas de vídeo AGP e PCIe, pois ainda encontra-se no mercado placas de vídeo novas para os dois tipos de conexão. Também os notebooks atuais vem com uma conexão VGA e/ou SVideo para conectá-lo à monitor, TV ou projetor, sendo assim plenamente possível utilizar o notebook como multiterminal para dois usuários. Teclado e Mouse Um computador comum, difícil em notebook, tem duas conexões PS/2, uma para ligar mouse e outra teclado, mas pode-se ligar dois teclados nessas e utilizar mouse USB, ou o contrário. O restante deve ser tudo USB, onde se faltar porta, precisa de um hub USB. No Linux atual, os teclados e mice (plural de mouse em inglês), podem ser acessados pela sua posição física. O Linux "cria" arquivos que representam esses caminhos no diretório /dev/input/by-path/, como a lista de arquivos abaixo tirada de num notebook com um mouse e um teclado nas portas USB, via Terminal (ou Console ou Consola no menu principal Aplicativos -> Acessórios):
junior@jumovel:~$ ls -al /dev/input/by-path/ Também é possível pela identificação do dispositivo, mas isso pode gerar algum conflito e não mapeia dispositivos na PS/2, então nunca usei, mas pode identificar seu dispositivo por esses arquivos, se achar conveniente:
junior@jumovel:~$ ls -al /dev/input/by-id/ Partindo do primeiro caso, nos interessa os dispositivos com a penúltima palavra event seguida de mouse ou kbd (abreviação de keyboard, teclado em inglês). Para identificar, basta pedir pela listagem com o dispositivo conectado e com ele desconectado e ver qual corresponde, pois esse arquivo deveremos passar para o Xephyr, o X virtual. Instalação Essa instalação é baseada no Debian Testing, nomeado no momento, Julho de 2009, de Squeeze. A instalação do Xorg no Debian, tal como nas distribuições mais atuais, já é feita por padrão se estiver utilizando um ambiente gráfico completo tal como o Gnome ou KDE. Este Xorg já vem com o Xephyr pronto para ser usado com evdev, dessa forma não é preciso aplicar alterações para o Xephyr suportar evdev e compilá-lo, porém é preciso aplicar alterações para suporte à rodinha do mouse até então, Junho de 2009, pelo que eu pude constatar. A partir da versão 1.6 isso já não é mais preciso. Pois bem, usaremos o ambiente Gnome para essa instalação, então parto o pressuposto que está com o ambiente Gnome rodando para um terminal único com várias telas, teclados e mice. Para configurar o X para placas de vídeo nVidia, veja o outro tutorial em nVidia no Notebook. O programa responsável por iniciar o X é chamado de gerenciador de telas, sendo o padrão do X o XDM (X Display Manager - gerenciador de telas do X), o do KDE é o KDM (KDE Display Manager) e o Gnome o GDM (Gnome Display Manager). Como estamos com Gnome, vamos configurar o GDM para abrir o X real e os X virtuais, um em cada monitor identificado e carregado pelo X real, passando como parâmetro para este X virtual (Xephyr), qual monitor, teclado e mouse que formam um conjunto. O primeiro entrave é que precisamos definir as variáveis de ambiente XAUTHORITY e DISPLAY antes de chamar o Xephyr, porém o GDM não dá suporte para definir tais variáveis dentro de cada contexto de servidor X, até onde pude analisar. Diante disso, foi preciso criar um script para ser chamado pelo GDM onde este script define as variáveis de ambiente e chama o Xephyr. Este script vai receber o nome de load_Xephyr e deve estar no diretório /usr/local/bin, seguindo as recomendações do Debian. Segue o script abaixo:
#!/bin/bash Criado então o arquivo /usr/local/bin/load_Xephyr com o conteúdo acima, basta adicionar as seguinte linhas no arquivo /etc/gdm/gdm.conf "vazio" padrão que vem no Debian Testing:
0=XBase Repare que este é um arquivo para multiterminal em notebook, assim sendo para o primeiro terminal, que é a tela, o teclado e mouse do notebook, tem um mouse a mais que é o mouse USB que geralmente uso em vez do mouse do próprio notebook, funcionando os dois ao mesmo tempo sem problema algum. O segundo terminal é um monitor ligado na porta VGA do notebook e teclado e mouse USB. Por fim, o teclado ficará com algumas teclas doidas, o que pode ser resolvido no Gnome entrando no menu Sistema -> Preferências -> Teclado, na aba Disposições da janela que abrir, escolher o modelo de teclado como sendo Evdev-managed keyboard e na disposição colocar o país, que geralmente é Brasil/Brasil para teclados com Ç e Estados Unidos/USA International (with dead keys) para teclado sem o Ç. Depois dessa configuração é preciso sair da sessão do Gnome (Sistema -> Encerrar Sessão) e entrar novamente para essas configurações entrar em vigor. Conclusão Não é tão difícil transformar um computador em muitos com Linux, já foi muito mais complicado, mas está cada vez mais fácil. Somente tem-se os problemas por enquanto de que para funcionar da roda do mouse no X 1.4.2 (versão atual do Debian Testing) é preciso recompilar o Xephyr, fazendo uma alteração em uma linha de código alterando de 3 botões para 5, nada complicado, além das setas para a esquerda e para baixo não responderem repetidamente enquanto pressionadas e os LEDs dos teclados responderem ao X real com se fosse um teclado só. Na versão 1.6.1, do Debian Unstable, esses problemas já não deveriam mais estar acontecendo, mas ainda não testei. Compilação do Xephyr para funcionar o roda do mouse Basicamente é baixar o fonte via "apt-get source", baixar as dependências via "apt-get buil-dep", instalar o pacote devscripts com "apt-get install devscripts", fazer a devida modificação e executar o comando para criar os pacotes Debian. Mas como nem tudo são flores, durante a compilação há uma falha, que mais adiante será explanado o erro e como contorná-lo. Este problema não ocorre com a versão do X do unstable, atualmente 1.6.1, pois já foi feito nessa versão a devida correção, pelo que pude ver no código, mas não testei. Primeiramente vamos obter o código fonte para Debian Testing, onde se estiver utilizando Stable ou por nome, troque o testing abaixo pelo correspondente:
jumovel:/usr/src# apt-get source -t testing xserver-Xephyr Depois disso, vamos instalar as dependência, que no meu caso, foi apenas uma e ainda precisei especificar explicitamente, mas poderiam haver várias num ambiente não preparado para desenvolvimento, além do que já tenho o pacote devscripts instalado:
jumovel:~# apt-get install devscripts Agora devemos-se editar o arquivo que configura por padrão o mouse para 3 botões em vez de 5 botões como deveria ser para funcionar a rodinha do mouse:
jumovel:/usr/src# cd xorg-server-1.4.2 Nesse momento, vamos dar um novo número à versão do pacote e dar uma explicação: jumovel:/usr/src/xorg-server-1.4.2# debchange -i "Mouse's wheel now works on Xephyr mouse evdev driver" Podemos agora executar o comando para criar pacotes Debian de acordo com os originais instalados no sistema. Este processo leva um pouco de tempo, pois irá compilar praticamente todo o sistema base do Xorg, mas se alguém souber como compilar apenas o Xephyr, seria uma dica muito bem vinda. Vou demonstrar abaixo o erro, portanto não execute dpkg-buildpackage por enquanto: jumovel:/usr/src/xorg-server-1.4.2# dpkg-buildpackage -b Me deparei com o seguinte erro:
gcc -DHAVE_DIX_CONFIG_H -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -fno-strict-aliasing -D_BSD_SOURCE -DHAS_FCHOWN -DHAS_STICKY_DIR_BIT -DDBUS_API_SUBJECT_TO_CHANGE -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/hal -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I../../../include -I../../include -I../../../Xext -I../../../composite -I../../../damageext -I../../../xfixes -I../../../Xi -I../../../mi -I../../../miext/shadow -I../../../miext/damage -I../../../render -I../../../randr -I../../../fb -DHAVE_XORG_CONFIG_H -DXF86PM -Wall -g -O2 -rdynamic -o Xorg xorg.o ../../dix/.libs/libdix.a ../../config/libconfig.a common/libinit.a loader/libloader.a ./.libs/libosandcommon.a rac/librac.a parser/libxf86config.a dixmods/.libs/libdixmods.a modes/libxf86modes.a ramdac/libramdac.a ddc/libddc.a i2c/libi2c.a ../../composite/.libs/libcomposite.a ../../mi/.libs/libmi.a ../../xfixes/.libs/libxfixes.a ../../Xext/.libs/libXextbuiltin.a ../../GL/glx/.libs/libglx.a ../../GL/mesa/.libs/libGLcore.a ../../render/.libs/librender.a ../../randr/.libs/librandr.a ../../damageext/.libs/libdamageext.a ../../miext/damage/.libs/libdamage.a ../../miext/shadow/.libs/libshadow.a ../../Xi/.libs/libXi.a ../../xkb/.libs/libxkb.a ../../dix/.libs/libxpstubs.a ../../os/.libs/libos.a -ldl -lXfont -lXau -lfontenc -lpixman-1 -lhal -ldbus-1 -lXdmcp dixmods/.libs/libxorgxkb.a -lm -lrt Pesquisando, descobri que essas funções fazem parte da biblioteca libxfont do pacote de versão 1.3.3 e como meu sistema estava com a 1.4.0 que não tem essas funções, então deu esse erro. Para resolver isso, baixei a versão 1.3.3 via web em http://packages.debian.org/lenny/libxfont1, escolhendo a arquitetura do seu sistema, que no meu caso foi amd64. Baixei o pacote .deb na área de trabalho, clique duplo sobre o pacote, abre uma tela com o arquivo data.tar.gz, clique duplo sobre este, depois sobre ".", depois "usr", depois "lib" e vejo o arquivo libXfont.so.1.4.1 de 17/07/2008, mesma versão que tenho em "/usr/lib/libXfont.so.1.4.1" de 13/04/2009, e resolvi copiar a do sistema, mais atual, para um local seguro e por no lugar antiga e reiniciar o sistema para ver se algo mudava. Nada mudou, então vou seguir a compilação: jumovel:/usr/src/xorg-server-1.4.2# dpkg-buildpackage -b Com tudo compilado e empacotado, temos duas alternativas: instalar o pacote xserver-xephyr criado ou copiar o arquivo Xephyr do pacote para /usr/local/bin/Xephyr e alterar o caminho do Xephyr script load_Xephyr. Optei pela segunda versão, pois posso manter assim a corrigida numa futura atualização que ainda não corrige o problema em vez de ter que recompilar e reempacotar tudo de novo. 1ª Opção: instalar pacote:
jumovel:/usr/src/xorg-server-1.4.2# cd .. 2ª Opção: copiar o arquivo Xephyr do pacote para /usr/local/bin/Xephyr e alterar o caminho do Xephyr script load_Xephyr:
jumovel:/usr/src/xorg-server-1.4.2# cd .. Após esse trabalho todo para depurar o código do Xephyr e Kdrive, encontrei uma correção na página dos problemas já conhecidos do MDM, mas somente em inglês, então este meu artigo é bem válido, pois estou agora com meu notebook rodando Debian Testing AMD64 em modo multiterminal para dois usuários. |
Promoções |
||
| Copyright © 2007 - Kelly C. V. Almeida & Junior Polegato Todos os direitos reservados | ||||