Sistemas Multiseat: El monstruo de varias cabezas


Todos sabemos que los sistemas *nix son robustos, tienen un mejor manejo de los recursos y sobre todo multiusuario. Si a esto le agregamos el servidor Xorg y la posibilidad de armar sistemas multiseat donde tenemos un único CPU y varios monitores, teclados, mouse y opcionalmente tarjetas de sonido conectados nos damos cuenta de su gran ventaja. Por lo que podremos tener 2 o más puestos de trabajo (Seat) con una única CPU.


Donde podemos utilizar este tipo de sistema?

-Escuelas
-Oficinas
-Cybercafes
-Bibliotecas
-Hospitales
-Hogares.

Que beneficios trae consigo?

-Menor consumo de energía al tener una única CPU
-Ahorro de espacio
-Ahorro en costos

Que necesitamos?

-Es importante tener una CPU potente y con buena memoria (512MB para arriba) todo depende de la cantidad de puestos que quieran armar.
-Varias Placas de video PCI/AGP/PCI-E
-Varios teclados PS/2 /USB
-Varios mouse PS/2 /USB
-Opcionalmente varias tarjetas de sonido
-Ditro linux favorita
-Xorg 6.9 o superior

Manos a la obra:

Una vez que tengamos todo conectado vamos a empezar con lo básico, obtener la información del hardware. En el ejemplo que voy a dar vamos a suponer que son 2 puestos. Es muy importante saber que tenemos para poder volcarlo luego al xorg.conf
Para ello nos vamos a valer de varias herramientas:
Lo primero es identificar las placas de Video, para ello corremos el siguiente comando:
lspci | grep VGA
Obtendremos una salida como esta:
0000:01:00.0 VGA compatible controller: VIA Technologies, Inc. S3 Unichrome Pro VGA Adapter (rev 01)
0001:09.00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)

En este caso son dos placas, una Unichrome integrada y una Nvidia AGP.
El primer campo indica la dirección de bus. El numero antes de los dos puntos indica cual es el bus PCI y el segundo numero indica la dirección de la tarjeta en el bus.
Anoten estos valores para después poder armar el Xorg.conf
NOTA: es importante utilizar placas del mismo fabricante para evitar problemas de compatibilidad.

Ahora vamos a identificar los mouses:
Corremos el siguiente comando:
ls /dev/input/mouse*
Obtendremos algo como lo siguiente
/dev/input/mouse0 /dev/input/mouse1

Nos queda identificar los teclados, linux identifica cada teclado como /dev/input/event(x)
Para ver nuestros teclados conectados correr el siguiente comando:
cat /proc/bus/input/devices
El siguiente es un resumen con lo que nos interesa de la salida del comando remarcado el event:
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name=”AT Translated Set 2 keyboard”
P: Phys=isa0060/serio0/input0
S: Sysfs=/class/input/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=0003 Vendor=046e Product=530a Version=0001
N: Name=”BTC Multimedia USB Keyboard”
P: Phys=usb-0000:00:03.3-4.2.1/input0
H: Handlers=kbd event1
B: EV=120003
B: KEY=1000000000007 ff87207ac14057ff febeffdfffefffff fffffffffffffffe
B: LED=1f

Armando el Xorg.conf
Una vez obtenidos los datos, empezamos a armar las diferentes secciones en el Xorg.

# Seat 0
Section “InputDevice”
Identifier “Keyboard0″
Driver “evdev”
Option “Device” “/dev/input/event0″
Option “XkbModel” “pc105″
Option “XkbLayout” “us”
Option “XkbOptions” “compose:rwin”
EndSection

Section “InputDevice”
Identifier “Mouse0″
Driver “mouse”
Option “Protocol” “ExplorerPS/2″
Option “Device” “/dev/input/mouse0″
Option “ZAxisMapping” “6 7″
EndSection

Section “Device”
Identifier “device0″
Driver “via”
BusID “PCI:0:1:0″
EndSection

Section “Monitor”
Identifier “monitor0″
ModelName “Flat Panel 1024×768″
HorizSync 31.5 – 48.5
VertRefresh 40.0 – 70.0
ModeLine “768×576″ 50.0 768 832 846 1000 576 590 595 630
ModeLine “768×576″ 63.1 768 800 960 1024 576 578 590 616
EndSection

Section “Screen”
Identifier “screen0″
Device “device0″
Monitor “monitor0″
DefaultDepth 24
SubSection “Display”
Virtual 1024 768
Depth 24
EndSubSection
EndSection

Section “ServerLayout”
Identifier “seat0″
Screen 0 “Screen0″ 0 0
InputDevice “Mouse0″ “CorePointer”
InputDevice “Keyboard0″ “CoreKeyboard”
EndSection

# Seat 1
Section “InputDevice”
Identifier “Keyboard1″
Driver “evdev”
Option “Device” “/dev/input/event1″
Option “XkbModel” “pc105″
Option “XkbLayout” “us”
Option “XkbOptions” “compose:rwin”
EndSection

Section “InputDevice”
Identifier “Mouse1″
Driver “mouse”
Option “Protocol” “ExplorerPS/2″
Option “Device” “/dev/input/mouse1″
Option “ZAxisMapping” “6 7″
EndSection

Section “Device”
Identifier “device1″
Driver “nvidia”
VendorName “NVIDIA Corp.”
BoardName “NVIDIA GeForce4 (generic)”
BusID “PCI:1:9:0″
EndSection

Section “Monitor”
Identifier “monitor1″
ModelName “generic monitor”
HorizSync 28 – 51
VertRefresh 43 – 60
EndSection

Section “Screen”
Identifier “screen1″
Device “device1″
Monitor “monitor1″
DefaultDepth 24
SubSection “Display”
Virtual 1024 768
Depth 24
EndSubSection
EndSection

Section “ServerLayout”
Identifier “seat1″
Screen 0 “Screen1″ 0 0
InputDevice “Mouse1″ “CorePointer”
InputDevice “Keyboard1″ “CoreKeyboard”
EndSection

Probando la configuración:

Ahora nos resta probar cada posición para ver si esta todo OK.
Usamos el siguiente comando:
while sleep 40; do X -novtswitch -sharevts -nolisten tcp -layout seatN :N &
xterm -display :N &; done

Reemplacen las N por la posición que desean probar en este caso 0 o 1
Prueben de a una para ver si esta todo bien. Tiene que aparecer durante 40 segundos en pantalla el xterm como para poder probar el mouse y teclado también luego se cerrará. Tengan en cuenta esto porque si corren solamente X no van a poder killerala debido a la opción -novtswitch.

Nos interesa que les presente a cada usuario una pantalla de login gráfico, para ello vamos a utilizar un Display Manager por ejemplo GDM.
Editamos /etc/X11/gdm/gdm.conf y vamos hasta casi el final en la sección [servers] y ponemos lo siguiente:
0=Standard0
1=Standard1

luego armamos las sesiones correspondientes a cada uno:
[server-Standard0]
name=Standard server
command=/usr/X11R6/bin/X -nolisten tcp -novtswitch -sharevts -layout seat0
flexible=true

[server-Standard1]
name=Standard server
command=/usr/X11R6/bin/X -nolisten tcp -novtswitch -sharevts -layout seat1
flexible=true

Guardamos la configuración, volvemos a arrancar el display manager y listo!.
Nuestro monstruo de dos cabezas esta funcionando para envidia de todos.

ATENCION:
Los usuarios de Ubuntu estan de parabienes ya que en el repositorio universe se encuentra un paquete que hace todo lo descripto en este documento automáticamente en forma grafica. Simplemente tiene que hacer:
apt-get install multiseat
La única contra que sirve solamente para dos puestos, si queremos tener más van a tener que realizar los pasos a mano como explique.

ESTE TEXTO SE PUBLICA BAJO LICENCIA CREATIVE COMMONS BY-NC-SA 2.5 AR.

Por lo tanto, usted es libre de: 1) Copiarlo, distribuirlo y exhibirlo. 2) Hacer obras derivadas. Bajo las siguientes condiciones: 1) Debe dar atribución mencionando el nombre del autor y del LUG Zona Norte. En caso de las notas que no llevan firma, mencionar sólo el nombre del LUG.
2) Usted no puede usar esta obra con fines comerciales. 3) Si usted altera, transforma, o crea sobre este texto, sólo podrá distribuir la obra derivada resultante bajo una licencia idéntica a ésta.

Más detalles y texto legal de la licencia en: http://creativecommons.org/licenses/by-nc-sa/2.5/ar

  1. #1 by Mario Ramirez on 12/07/2007 - 11:57

    Hola que tal, pues yo usaba antes BETWIN para windows, y tenia tarjetas de diversos fabricantes , bueno solo dos puestos por CPU , ahora tengo UBUNTU, crees que pueda funcionar tambien con este esquema o necesitare cambiar las tarjetas ?

    Ahh por cierto, para las tarjetas de sonido, es la misma configuracion? Saludos

  2. #2 by sechole on 12/07/2007 - 14:30

    Por supuesto que va a funcionar.
    Para el caso de las tarjetas de sonido es exactamente igual.
    Igual si son dos puestos nada mas, instalar el paquete multiseat de los repositorios te va a facilitar la vida.

  3. #3 by Yo on 07/09/2007 - 1:18

    Che, porque no mencionas que es una traducción de este artículo….?
    linuxgazette.net/124/smith.html

    Y encima le pones otra licencia a la del original.

    Que mal…

    No sos capaz de desarrollar contenidos propios…..?

    Saludos

  4. #4 by sechole on 07/09/2007 - 13:53

    No es una traducción, si te molestaras en leer un poco te darias cuenta.
    También podrías decir que es semejante a este articulo:
    http://blog.chris.tylers.info/index.php?/archives/14-Multiseat-X-Under-X11R6.97.0.html
    O este otro:
    http://en.wikibooks.org/wiki/Multiterminal_with_Xephyr
    O a la documentación que figura en xorg al respecto.
    Tampoco entiendo porque metes a Buanzo en este tema.
    Author : Yo (IP: 201.213.23.18 , 201-213-23-18.net.prima.net.ar)
    E-mail : noteimporta@sosigualquebuanzo.com.ar
    Pero bueno gente como vos hay en todos lados.
    Lamento herir tus sentimientos.

  5. #5 by vicmmuran on 12/09/2007 - 3:00

    Hermano realmente es fantastica tu aportacion fijate que yo tengo 10 estaciones de trabajo con xp corriendo el betwin eh estado buscando una alternativa desde hace ya varios meses con gnu/linux (ubuntu) y hasta ahora no habia encontrado algo tan claro y tan bien explicado relamente te estoy mu agradecido aun antes de probar este sistema, solo me aslta una duda yo en betwin tengo configuradas puras tarjetas de sonido usb (aunque lei que Mario Ramirez hizo una pregunta parecida) y no me queda claro como configurarlas con tu manual en gnu/linux
    gracias una vez mas

  6. #6 by rafael lopez on 20/09/2007 - 1:26

    hola que tal me interesa mucho esta imformacion pero bueno yo soy d méxico y casi en no utilizamos el linux me gustaria saber si estas estaciones de trabajo se pueden realizar con windows me interese mucho tenia tiempo buscando una imformación asi y la verdad yo sabia qu esio se podia hacer pero no sabia como.

    bueno eso es todo me gustaria que me respondieran lo mas pornto posible para comentarles cual es la situacion y por que deseo hacer este tipo de Multiseat.

    gracias informacion muy importante.

  7. #7 by sechole on 20/09/2007 - 16:22

    vicmmuran, la respuesta a tarjetas multiples de sonido esta aqui:
    http://www.faqs.org/docs/Linux-HOWTO/XFree-Local-multi-user-HOWTO.html#automation_multy_snd-cards

    rafael lopez, si se puede pero te recuerdo que Windows no es multiusuario, ademas debes conseguir las licencias de betwin y el rendimiento no es muy bueno.

  8. #8 by vicmmuran on 21/09/2007 - 2:02

    Hermano una vez más mil gracias ya te tendre al tanto de como me va con la configuración

  9. #9 by Ecollazos on 05/11/2007 - 16:30

    Buenas tardes,
    Quisiera consultarte los siguiente:
    Tengo ubuntu Gutsi(7.10) , Instale el paquete Multiseat, pero no se como arrancarlo para hacer la confoguracion. Te agradeceria muchisimo, porque al parecer este paquete no tiene pagina de mantenimiento ni documentacion

  10. #10 by occidere on 09/02/2009 - 17:59

    Llevo un tiempo tratando de implementar una solucion de esta manera, aunque mis conocimientos en linux son muy escasos.

    Asi que me atrevo a preguntar si seria posible instalar desde los repositorios de ubuntu dos equipos, y a partir de ahi armar un tercer equipo.

    Buen dia

  11. #11 by Guido on 17/02/2009 - 16:40

    Hola:

    Mooooi buena la info… Ahora tengo una pregunta por curiosidad, ¿se puede hacer con una sola placa de video, que tenga 2 salidas de video sea VGA y DVI o doble DVI?…

    Y esta otra pregunta es por ignorante, ¿como se pueden conectar varios teclados y mouses en una unica CPU?…

    Saludos, gracias y espero te vaya bien…..

  12. #12 by gustavo on 03/03/2009 - 13:00

    Gracias por tus aportes…. Veràs: fallo en ejecutar la secuencia de comandos “while sleep 40; do X -novtswitch -sharevts -nolisten tcp -layout seatN :N &
    xterm -display :N &; done”
    lo he copiado textual…. y obtengo :
    ” bash: syntax error near unexpected token `;’ ”

    podràs indicarme que estoy poniendo mal ????
    Gracias. Un abrazo – gustavo

  13. #13 by Fabio on 16/06/2010 - 17:05

    Buen día tengo funcionando 6 estaciones con betwin y el servidor en windows xp. Quiero hacer funcionar las 6 estaciones en ubuntu 10.4 pero no he logrado nada me la paso reinstalando ubuntu. la tarjeta gforce nvidia 6200 me presenta conflicto la instalo y luego no me deja ingresar al sistema, que puedo hacer, ademas soy novato en linux.

(will not be published)
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 8 + 12 ?
Please leave these two fields as-is: