MultiHeads no Linux
A idéia é simples, colocar várias placas de vídeo, vários teclados e vários mouses num mesmo computador de forma que diversos usuários usem-o simultaneamente e independentemente a mesma CPU. Solução barata e muito na moda ultimamente.
Parte 2: Colocando as placas e achando elas no sistema
Bom, tanto faz a ordem dos dispositivos USB ou então das placas, só
coloque-as em qualquer ordem. Procure não fazer a instalação do
Linux com elas plugadas. Em distros como o Mandriva,
alguns programas de detecção automática travam ou então tentam configurar
automaticamente todas elas e ocorrem problemas.
Agora verifique se está instalado o Xorg, hotplug, udev e tudo configurado no boot. Dentre as formas de fazer escolherei a mais simples. Mais pra frente passarei rapidamente sobre as outras.
Tendo tudo funcionando, entre no shell e dê um lspci:
$ lspci
....
0000:00:09.0 VGA compatible controller: ATI Technologies Inc Rage 128 RK/VR
0000:00:0a.0 VGA compatible controller: ATI Technologies Inc Rage 128 RK/VR
0000:00:0b.0 VGA compatible controller: ATI Technologies Inc Rage 128 RK/VR
0000:01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661FX/M661FX/M661MX/741/M741/760/M760 PCI/AGP
Anote os endereços que estão ali no primeiro campo, caso saiam muitos dispositivos, um "grep VGA" ajuda. Descubra também quais módulos são carregados pra cada dispositivo.
Agora está na hora de verificar os dispositivos USB. Pode parecer bobagem eu falar isso, mas verifique mesmo se estão plugados um número muito grande assim de dispositivos sempre tem um mal encaixado e você perde um dia inteiro à toa. No shell mesmo dê um cat no /proc:
$ cat /proc/bus/input/devices
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event0
B: EV=120013
B: KEY=4 2000000 3802078 f840d001 f2ffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="ImPS/2 Generic Wheel Mouse"
P: Phys=isa0060/serio1/input0
H: Handlers=event1 mouse0 ts0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-0000:00:03.0-1/input0
H: Handlers=kbd event2
I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-0000:00:03.0-1/input1
H: Handlers=kbd event3
I: Bus=0003 Vendor=0566 Product=3002 Version=0100
N: Name="0566:3002"
P: Phys=usb-0000:00:03.0-2/input0
H: Handlers=kbd event4
I: Bus=0003 Vendor=1267 Product=0210 Version=0001
N: Name="PS/2+USB Mouse"
P: Phys=usb-0000:00:03.0-3/input1
.... (e tudo mais lá pra baixo)
Veja que o mesmo teclado "CHESEN USB Keyboard" tem o mesmo endereço físico, mas tem duas entradas. Isso se deve as teclas especiais como desligar, suspender, navegação na internet e "Windows" que o kernel trata como um teclado separado. Aqui iremos só usar o primeiro input. Anote o endereço físico (PHYS) de cada um.
Tendo isso agora vamos para o próximo passo.
Agora verifique se está instalado o Xorg, hotplug, udev e tudo configurado no boot. Dentre as formas de fazer escolherei a mais simples. Mais pra frente passarei rapidamente sobre as outras.
Tendo tudo funcionando, entre no shell e dê um lspci:
$ lspci
....
0000:00:09.0 VGA compatible controller: ATI Technologies Inc Rage 128 RK/VR
0000:00:0a.0 VGA compatible controller: ATI Technologies Inc Rage 128 RK/VR
0000:00:0b.0 VGA compatible controller: ATI Technologies Inc Rage 128 RK/VR
0000:01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661FX/M661FX/M661MX/741/M741/760/M760 PCI/AGP
Anote os endereços que estão ali no primeiro campo, caso saiam muitos dispositivos, um "grep VGA" ajuda. Descubra também quais módulos são carregados pra cada dispositivo.
Agora está na hora de verificar os dispositivos USB. Pode parecer bobagem eu falar isso, mas verifique mesmo se estão plugados um número muito grande assim de dispositivos sempre tem um mal encaixado e você perde um dia inteiro à toa. No shell mesmo dê um cat no /proc:
$ cat /proc/bus/input/devices
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event0
B: EV=120013
B: KEY=4 2000000 3802078 f840d001 f2ffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="ImPS/2 Generic Wheel Mouse"
P: Phys=isa0060/serio1/input0
H: Handlers=event1 mouse0 ts0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-0000:00:03.0-1/input0
H: Handlers=kbd event2
I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-0000:00:03.0-1/input1
H: Handlers=kbd event3
I: Bus=0003 Vendor=0566 Product=3002 Version=0100
N: Name="0566:3002"
P: Phys=usb-0000:00:03.0-2/input0
H: Handlers=kbd event4
I: Bus=0003 Vendor=1267 Product=0210 Version=0001
N: Name="PS/2+USB Mouse"
P: Phys=usb-0000:00:03.0-3/input1
.... (e tudo mais lá pra baixo)
Veja que o mesmo teclado "CHESEN USB Keyboard" tem o mesmo endereço físico, mas tem duas entradas. Isso se deve as teclas especiais como desligar, suspender, navegação na internet e "Windows" que o kernel trata como um teclado separado. Aqui iremos só usar o primeiro input. Anote o endereço físico (PHYS) de cada um.
Tendo isso agora vamos para o próximo passo.
muito legal mesmo, tá de parabéns...