Configurando o gerenciador de displays (gdm)
Configure o gdm em /etc/gdm/gdm.conf da seguinte maneira na seção “servers”:
1=XServer1
….
name=Standard_server0
command=/usr/X11R6/bin/X -layout Layout0 :0 vt7 -sharevts
flexible=true
[server-XServer1]
name=Standard_server1
command=/usr/X11R6/bin/X -layout Layout1 :1 vt8 -sharevts
flexible=true
Para usar os outros DM é praticamente a mesma coisa, só chame a mesma linha de comando pra cada servidor. Isso vai depender de como eles funcionam e vai exigir um pouco de leitura no assunto.
Testando e usando
Por exemplo:
$ /etc/init.d/xorgmultiterminal
…….
$ /etc/init.d/gdm start
Procure não logar dois usuários iguais (mesmo nome, home e id) eles costumam interferir um no outro. Note também que com um “ps -aux” dá pra ver vários X sendo executados. Agora é só usar, faça testes de desempenho e veja o que é ruim para evitar que seus usuários façam o mesmo.
Outro problema são algumas mensagens de erro. Acontece quando o kernel não se dá conta do multihead e sempre imprime na tela principal (primeiro monitor). Isso causa uma rotação da tela no primeiro monitor sem que o usuário saiba porque. Pode-se ser resolvido com redirecionamento do erro para /dev/null ou recompilar o kernel sem suporte a console.
Multi-head usando Xnest
Utiliza-se apenas um servidor X estendido (como se fosse um xinerama) e coloca várias janelas (Xnest) do tamanho da tela para o uso do usuário. Cada janela é um processo que recebe o event fornecido pelo udev. A camada de baixo (X) o usuário não se pode ver, só o Xnest que está na sua tela, que não pode ser redimensionado. Para ter acesso ao servidor X nest modificado pelo patch desenvolvido na UFPR faça o download aqui:
- http://www.c3sl.ufpr.br/multiterminal/howtos/multiXnest-0.1.3
- http://www.c3sl.ufpr.br/multiterminal/howtos/multiXnest.sh
Você precisará também do script feito por mim:
Tendo estes arquivos já podemos trabalhar:
Primeiro precisamos nos certificar que as placas estão devidamente conectadas. Verifique isso executando o comando abaixo como root:
00:0b.0 VGA compatible controller: (FABRICANTE / MARCA)
Cada linha corresponde a uma placa do seu computador. O primeiro campo (exemplo 00:0a.0) corresponde a identificação do barramento pci. Anote estes endereços para configurar o servidor X. Agora edite o arquivo /etc/X11/xorg.conf da seguinte maneira:
OBS: Note que os dispositivos recebem endereço BusID em decimal e o lspci mostra em hexa-decimal, para isto, substituir a por 10, b por 11 e assim por diante… preciso também conhecer previamente qual driver adequado para cada placa.
Identifier “Device 1”
Driver “vesa” # vai depender do driver da sua placa de vídeo
BusID “PCI:0:10:0”
EndSection
Section “Device”
Identifier “Device 2”
Driver “vesa” # vai depender do drvier da sua placa de vídeo
BusID “PCI:0:11:0”
EndSection
Section “Monitor”
Identifier “Monitor X”
EndSection
Section “Monitor”
Identifier “Monitor Y”
EndSection
Section “Screen”
Identifier “Screen X”
Device “Device 1”
Monitor “Monitor X”
DefaultDepth 16
SubSection “Display”
Depth 16
Modes “1024×768”
EndSubSection
EndSection
Section “Screen”
Identifier “Screen Y”
Device “Device 2”
Monitor “Monitor Y”
DefaultDepth 16
SubSection “Display”
Depth 16
Modes “1024×768”
EndSubSection
EndSection
Section “ServerLayout”
Identifier “Layout”
Screen “Screen X”
Screen “Screen Y” Below “Screen X”
InputDevice “Keyboard1”
InputDevice “Mouse1”
Option “DontZap” “on” # evita que o usuário derrube o X com ctrl alt backspace
Option “DontVTSwitch” “on” # evita que o usuário troque os vts
Option “BlankTime” “0”
Option “StandbyTime” “0”
Option “SuspendTime” “0”
Option “OffTime” “0”
EndSection
Aqui a configuração está feita para dois terminais. Para fazer com mais é só usar a mesma coisa, mas com vários devices, vários monitores, vários screens. Se não conseguir editar o arquivo, use o xorgcfg.
Agora execute o X e teste se abre todos os monitores. Se não, volte a configuração do X. Esta parte não deve ser complicada, pois o próprio configurador do x faz isso geralmente.
Depois renomeie e mova o arquivo com os comandos:
# mv multiXnest.sh /usr/sbin/
Para verificar se os dispositivos estão devidamente conectados, execute:
Então olhe em cada seção se está plugado o dispositivo. (vide a solução com vários servidores X caso não tenha entendido). Depois disso você não precisa anotar os valores. O script é capaz de te informar que dispositivo está sendo usado.
Execute o script veevent.sh que está linkado na primeira página e anote qual o event de cada dispositivo.
Edite o arquivo /etc/X11/gdm/gdm.conf na seção “Servers”:
0=Principal
1=Xnest1
2=Xnest2
[server-Principal]
name=Principal
command=/usr/X11R6/bin/X
handled=false # faz com que este servidor não seja usado para login
flexible=false
[server-Xnest1]
name=Xnest1
command=/usr/sbin/multiXnest.sh -display :0.0 -xauthority /var/lib/gdm/:0.Xauth -geometry 1024×768+0+0 -kbd /dev/input/event0 -ptr /dev/input/event1 -dpi 92
handled=true
flexible=false
[server-Xnest2]
name=Xnest2
command=/usr/sbin/multiXnest.sh -display :0.1 -xauthority /var/lib/gdm/:0.Xauth -geometry 1024×768+0+0
-kbd /dev/input/event2 -ptr /dev/input/event5 -dpi 92
handled=true
flexible=false
Agora mude event0, event1, event2, event5 pelos valores que você descobriu no veevent.sh. Para cada terminal mude o valor do display 0.X.
Agora é só configurar o GDM no boot e usar.
Exportando o Som
Quando não configurado todos os sons saem no mesmo lugar. A separação do som não é uma configuração difícil. Tendo placas de som usb isso se torna possível e até simples de configurar. Basta que o usuário mude a configuração no seu ambiente gráfico para o dispositivo que está no seu terminal.
Exemplos de uso
Muitos laboratórios já foram montados dessa forma. A redução de custos gira em torno de 50% visto que os monitores ainda são uma parcela expressiva.
No departamendo de informática da UFPR os multiterminais rodam como servidores remotos sem HD. Então as máquinas não são responsáveis por imprimir uma tela somente, mas 4 telas de uma vez só. Por sua vez cada máquina dessa não processa nada localmente.
Diagrama de exemplo:
Outro exemplo notável é o professor Ronald Costa do DF, ele tem documentado muita coisa no seu site pessoal. Ele mostra diversos exemplo e fotos, de laboratórios já montados.
Deixe seu comentário