Multiseat : plusieurs utilisateurs sur 1 pc

J’ai depuis quelques temps observé les possibilités multiutilisateurs de linux , non seulement il est possible de connecter plusieurs utilisateurs simultanement via des réseaux (SSH , telnet,VNC ) mais aussi en local en utilisant N claviers, souris et écrans pour N utilisateurs.

L’avantage est évident , pour peu que l’ont doivent acceuillir un nombre important d’utilisateurs , cette méthode réduit de beaucoup le cout de revient du hardware.
Pour une utilisation basique (web, bureautique …) les machines modernes sont peu sollicitées donc c’est a notre avantage de tirer parti des capacités de nos machines.

J’ai consulté quelques tutoriels glanés sur des blogs ou des wikis et pour l’instant aucun n’a été vraiment concluant. Je suis arrivé presque au but avec un GDM sur chaque ecran , malheureusement les peripheriques de saisie n’etait pas bien reconnus.

Parmi les methodes possibles je me suis basé sur l’utilisation de Xephyr avec ces tutos :

netpatia.blogspot.com/2006/09/mu … buntu.html
en.wikibooks.org/wiki/Multiterminal_with_Xephyr

En effet , la plupart des tutos necessitent l’utilisation de plusieurs cartes PCI , c’est une solution peu réaliste puisque les cartes PCI disparaissent a grande vitesse au profit du PCI-e

Xephyr ou XGL ? : J’ai aussi vu qu’il etait possible d’utiliser XGL et que cette solution etait plus stable , je prefererais toutefois eviter cette solution puisque XGL est remplacé par AIGLX intégré a xorg et les dernieres versions des drivers NVidia. Si toutefois XGL est necessaire pour conserver l’acceleration 3D alors cette solution semblerais etre la meilleure. ( faire tourner 2 quake3 ou 2 warcraft 3 ca ne me semble pas impossible et c’est allechant)

Son : il est possible de rajouter des cartes sons mais je ne sais pas comment rediriger une certaine carte son vers un certain utilisateur. Etant donné la proximité des postes je pense que la solution du micro casque USB est plus avantageuse , et évite d’encombrer les quelques ports PCI disponibles.

SLI : est ce qu’il est possible de mettre quatre utilisateurs simultanément avec la technologie SLI ?
Je n’ai pas forcement les moyens d’investir dans une 2eme 6800 Ultra donc si un possesseur d’une telle machine veux tester c’est super. (oui, bon il faut 4 ecrans c’est vrai …)

Dual Core : avec l’apparition des dual et quad core, est ce que cette technologie avantage le multiseat ? On pourrais ‘attribuer’ un coeur par utlisateur , de cette facon si utilisateur utilise 100% de son coeur , il evite de faire ramer les autres.

J’ai passé quelques heures sur le sujet aujourd’hui , sans succès mais avec beaucoup de progrès, j’attends vos retours d’experiences avec le multiseat (ces manipulations sont a réserver aux utilisateurs avancés, pensez a faire des backups ^^ )

J’espere qu’une page fera son apparition sur le wiki avec quelques scripts qui vont bien pour automatiser la tache :slightly_smiling:

J’comprends pas bien, “Trucs & Astuces” est la section où on propose qq chose qui est censée aider les autres à résoudre un problème courant.
Je ne vois pas ce que tu proposes, là ?

Si, c’est quand même un etat de l’art.
Ceci etant strider, je basculerais bien le fil dans pause café, pour motiver une discussion, quitte à écrire vraiment un tuto une fois le tour d’horizon et les diverses solutions testées/blindées.
Non ?

En effet , pas de solution concrète proposée pour l’instant , mais le but c’est d’aboutir a un tuto clair qui marche chez tout le monde :wink:

Allez , va pour la pause café :slightly_smiling:

c’est fait.
des liens:
blog.chris.tylers.info/index.php … .97.0.html
c3sl.ufpr.br/multiterminal/index-en.php
forums.gentoo.org/viewtopic-t-42 … iseat.html

apparemment les solutions utilisant seulement evdev se base sur le fait d’utiliser plusieurs cartes graphiques (j’ai essayé et ca ne marche pas avec la sortie dualhead de ma carte)

bon je ressort ce blog de sous les fagots mais si ca peut aider:

http://blog.racoon97.net/?2006/10/05/51-utiliser-deux-ecrans-en-dual-desktop-avec-une-seule-carte-graphique-nvidia

C’est bizarre pour evdev, parceque je ne vois pas trés bien en quoi ça peut interfèrer avec la carte: c’est sensé gèrer les dispositifs de pointage, non ?
Sinon, du dual desktop sur une nvidia je n’ai jamais reussi.
Du twinview+xinerama, oui, mais j’ai testé un paquet de tutos sur TNT2, sur GF4400 MX, et maintenant sur Quadro NVS 110M/GeForce Go 7300, et rien.
Je vais quand même tester ton tuto une fois de plus parceque ça m’agace cette histoire.

Bon je déterre un “vieux” poste mais bon je suis bloqué sur ce problème
Voila j’ai acheté un nouvel ecran il n’y a pas longtemps et comme l’on est deux à utiliser l’ordi j’avais dans l’idée de faire du multi-poste (multi-seat)

Alors quelques sources dont je me suis inspiré pour commencer l’aventure :
http://wiki.debian.org/Multi_Seat_Debian_HOWTO
http://blog.chris.tylers.info/index.php?/archives/14-Multiseat-X-Under-X11R6.97.0.html
http://netpatia.blogspot.com/2006/09/multiseat-computer-with-ubuntu.html

Bon je vais pas tout mettre mais ce sont les principaux.

Le but étant de se passer des solutions tel que Xinerama ou autre … normalement il est possible de la faire juste en configurant correctement gdm & X.org, petit précision je suis sous Debian Testing, mais comme c’est applicable a toute les distrib …

Maintenant les fichiers de conf :

gdm.conf[code]

[servers]

#Pour la configuration du “multi-seat”
0=poste0
1=poste1

Definition du premier X serveur.

[server-poste0]
name=poste0
command=/usr/bin/X0 :0 -novtswitch -sharevts -layout poste0
flexible=false

Definition du second X server.

[server-poste1]
name=poste1
command=/usr/bin/X1 :1 -novtswitch -sharevts -layout poste1
flexible=false[/code]

Vous remarquerez que dans la ligne “command” j’ai X0 et X1, c’est normal j’ai fait deux liens

ln -sf /usr/X11R6/bin/X /usr/X11R6/bin/X0 ln -sf /usr/X11R6/bin/X /usr/X11R6/bin/X1

et xorg.xonf

[code]
#############

Serveur X

#############
Section “ServerLayout”
Identifier “poste0”
Screen 0 “ecran0” 0 0
InputDevice “sourie0” “CorePointer”
InputDevice “clavier0” “CoreKeyboard”
EndSection

Section “ServerLayout”
Identifier “poste1”
Screen 0 “ecran1” 0 0
InputDevice “sourie1” “CorePointer”
InputDevice “clavier1” “CoreKeyboard”
EndSection

Section “Files”
RgbPath “/usr/X11R6/lib/X11/rgb”
EndSection

Section “Module”
Load “bitmap”
Load “ddc”
Load “extmod”
Load “freetype”
Load “glx”
Load “int10”

Load “v4l”

Load           "vbe"
Load           "dbe"

Load “type1”

EndSection

Section “ServerFlags”
Option “Xinerama” “0”
EndSection
####################################

Périphérique d’entrée du poste 0

####################################
#Clavier du poste 0
Section “InputDevice”
Identifier “clavier0”
Driver “evdev”
Option “Device” “/dev/input/event0”
Option “XkbLayout” “fr”
Option “XkbVariant” “latin9”
EndSection

#Sourie du poste 0
Section “InputDevice”
Identifier “sourie0”
Driver “evdev”
Option “ZAxisMapping” “4 5”
Option “Device” “/dev/input/event7”
EndSection

####################################

Périphérique d’entrée du poste 1

####################################
#Clavier du poste 1
Section “InputDevice”
Identifier “clavier1”
Driver “evdev”
Option “Device” “/dev/input/event1”
Option “XkbLayout” “fr”
Option “XkbVariant” “latin9”
EndSection

#Sourie du poste 1
Section “InputDevice”
Identifier “sourie1”
Driver “evdev”
Option “ZAxisMapping” “4 5”
Option “Device” “/dev/input/event3”
EndSection

#######################################

Carte graphique et écran du poste 0

#######################################

Section “Device”
Identifier “carteVideo0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 7600 GT”
BusID “PCI:3:0:0”
Screen 0
EndSection

Section “Monitor”
Identifier “CRT”
VendorName “Philips”
ModelName “PHILIPS 107B3”
HorizSync 30.0 - 86.0
VertRefresh 50.0 - 160.0
Option “DPMS”
EndSection

Section “Screen”
Identifier “ecran0”
Device “carteVideo0”
Monitor “CRT”
DefaultDepth 24

Option “TwinView” “0”

Option         "metamodes" "CRT: 1024x768 +0+0"
SubSection     "Display"
    Depth       24
EndSubSection

EndSection

#######################################

Carte graphique et écran du poste 1

#######################################

Section “Device”
Identifier “carteVideo1”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 7600 GT”
BusID “PCI:3:0:0”
Screen 1
EndSection

Section “Monitor”
Identifier “LCD”
VendorName “Hanns.G”
ModelName “HSD Hanns.G HG281”
HorizSync 24.0 - 80.0
VertRefresh 56.0 - 75.0
EndSection

Section “Screen”
Identifier “ecran1”
Device “carteVideo1”
Monitor “LCD”
DefaultDepth 24

Option “TwinView” “0”

Option         "metamodes" "DFP: 1920x1200 +0+0"
SubSection     "Display"
    Depth       24
Modes      "1920x1200"
EndSubSection

EndSection[/code]

Alors j’arrive a bien avoir sur le CRT le gdm avec le clavier et la sourie qui vont bien, mais le deuxième gdm qui devrait apparaitre sur l’autre écran plante lamentablement :aie:

Je suis sur que je ne suis pa sloin de la solution mais … :imp:

Donc si certain on des proposition/idée :unamused:

pour info voila les logs d’erreur que me sort X, je vous met le début et la fin de la trace mais je n’ai pas trouvé d’erreur explicite :confused:

X.Org X Server 1.4.2
Release Date: 11 June 2008
X Protocol Version 11, Revision 0
Build Operating System: Linux Debian (xorg-server 2:1.4.2-5)
Current Operating System: Linux Venables 2.6.26-1-686 #1 SMP Thu Aug 28 12:00:54 UTC 2008 i686
Build Date: 26 August 2008  07:32:05PM
 
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.1.log", Time: Sat Sep 20 00:36:22 2008
(==) Using config file: "/etc/X11/xorg.conf"
(++) ServerLayout "poste1"
(**) |-->Screen "ecran1" (0)
(**) |   |-->Monitor "LCD"
(**) |   |-->Device "carteVideo1"
(**) |-->Input Device "sourie1"
(**) |-->Input Device "clavier1"
(**) Option "Xinerama" "0"
(==) Automatically adding devices
(==) Automatically enabling devices
(WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
	Entry deleted from font path.
(WW) The directory "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
	Entry deleted from font path.

<SNIP>


(II) Primary Device is: PCI 03:00:0
(WW) NVIDIA: No matching Device section for instance (BusID PCI:3:0:0) found
(--) Chipset NVIDIA GPU found
(II) Loading sub module "fb"
(II) LoadModule: "fb"
(II) Loading /usr/lib/xorg/modules//libfb.so
(II) Module fb: vendor="X.Org Foundation"
	compiled for 1.4.2, module version = 1.0.0
	ABI class: X.Org ANSI C Emulation, version 0.3
(II) Loading sub module "wfb"
(II) LoadModule: "wfb"
(II) Loading /usr/lib/xorg/modules//libwfb.so
(II) Module wfb: vendor="X.Org Foundation"
	compiled for 1.4.2, module version = 1.0.0
	ABI class: X.Org ANSI C Emulation, version 0.3
(II) Loading sub module "ramdac"
(II) LoadModule: "ramdac"(II) Module "ramdac" already built-in
(II) resource ranges after xf86ClaimFixedResources() call:
	[0] -1	0	0x00100000 - 0x3fffffff (0x3ff00000) MX[B]E(B)
	SNIP
	[28] -1	0	0x0000c800 - 0x0000c81f (0x20) IX[B]
(EE) Screen 0 deleted because of no matching config section.

Backtrace:
0: /usr/bin/X1(xf86SigHandler+0x7e) [0x80c924e]
1: [0xb7eed400]

Fatal server error:
Caught signal 11.  Server aborting

Le signal 11 serais qu’il essaye d’acceder a une zone mémoire ou il devrait pas :aie:
Je suis presque sur qu’il ne sait pas qu’il doit l’afficher sur le second écran et qu’il essaye le premier mais comme il y a déjà un serveur X de lancé il se fait jeter.

Enfin peut être :blush:

On va dire que j’ai bien compris le fonctionnement de bout en bout mais que le seul point dont je ne suis pas sur est de lui indiquer sur quel écran les serveur doivent s’afficher.

Voila merci d’avance :mrgreen:

Hum, je vois plusieurs pbms et ne suis pas convaincu des économies faites:

  • Le prix de l’unité centrale est à l’heure actuelle faible: pour moins d’une centaine d’euro tu as une unité centrale correcte.
  • Le coût d’un clavier, d’un souris, d’un écran me parait lui incontournable.
  • Si tu fais une unité centrale et 3-4 utilisateurs branchés directement dessus, tu vas avoir soit des prochaines dans un rond de 3m de diamètre (remarque: tu économises sur la surface de la pièce), soit des soucis de cables incontournables (et chers).

La solution la plus astucieuse à mon avis consiste à centraliser les grosses ressources (disques, imprimante, …) et à avoir des petites UC autonomes sans HD (boute sur réseau) par exemple quitte à centraliser les grosses taches.

Une architecture en “client léger” (je le dis au cas où Mimoza voudrais faire des recherches).

Très franchement, je pense que le linutop est terrible pour ce genre de choses. Soit tu prend la version 1 sans disque dur donc, soit la version 2 qui te permet d’économiser en débit sur ton réseau local (tu centralise les /home, l’authentification, les ressources de type imprimante scanner etc…). Le gros défaut c’est le prix 250 € la version 1 et 280 € la version 2. :confused:

La finalitée n’est pas d’avoir plus de deux utilisateurs, juste de quoi remplir mon bureau :smt003 . Un écran sert d’utilisation courante tandis que l’autre plus de TV/Film(/jeux) et autres au cas ou l’autre poste est pris.
Je n’ai pas vraiment besoin d’une autre unitée centrale, un linutop serais une bonne solution si les deux écran étaient éloigné ce qui n’est pas le cas. :wink: De plus j’aime mieux reservé mes € a d’autres finalités :smt003

Non le but est de me familiariser avec la config de gdm et x.org, et auxilièrement de montrer ce qui est impossible de faire avec win a quelques un :stuck_out_tongue: Donc ma demande d’aide tient toujours :smiley:

edit : Et linutop ca avoir de la concurence http://www.pcinpact.com/actu/news/45867-Eee-Box-ASUS-mini-tour.htm

Pour ceux que cela interresse j’ai résolu mon problème (il y a quelques mois déjà) mais je met mes fichiers de conf au cas où.
OS : Debian lenny & squeeze (changement reçent sans problème)
CG : Nvidia(driver proprio) + ATI(driver libre)
CPU : AMD 3000+ (très limite quand il y a trop de Flash affiché)
RAM : 2Go (pas de problème de ce coté 8) )

Bon le défaut de ma solution actuel est l’utilisation obligatoire d’une deuxième CG, les VT ne sont pas accessible, un problème au niveaude la dé/connexion des utilisateurs(le premier connecté doit être le dernier à s’en aller), et les droits sur les clées USB connectées en cours de session sont plus ou moins aléatoire.

Voila le xorg.conf

[code]#Configuration multi-poste

#############

Serveur X

#############

Section “ServerLayout”
Identifier “poste0”
Screen 0 “ecran0” 0 0
InputDevice “sourie0” “CorePointer”
InputDevice “clavier0” “CoreKeyboard”
EndSection

Section “ServerLayout”
Identifier “poste1”
Screen 1 “ecran1” 0 0
InputDevice “clavier1” “CoreKeyboard”
InputDevice “sourie1” “CorePointer”
EndSection

Section “Files”
RgbPath “/usr/X11R6/lib/X11/rgb”
EndSection

Section “Module”
Load “dbe”
Load “extmod”
Load “type1”
Load “freetype”
Load “glx”
EndSection

Section “ServerFlags”
Option “Xinerama” “0”
EndSection

####################################

Peripherique d’entree du poste 0

####################################
#Clavier du poste 0
Section “InputDevice”
Identifier “clavier0”
Driver “evdev”
Option “Device” “/dev/input/event1”
Option “XkbLayout” “fr”
Option “XkbVariant” “latin9”
EndSection

#Sourie du poste 0
Section “InputDevice”
Identifier “sourie0”
Driver “evdev”
Option “ZAxisMapping” “4 5”
Option “Device” “/dev/input/event3”
EndSection

####################################

Peripherique d’entree du poste 1

####################################
#Clavier du poste 1
Section “InputDevice”
Identifier “clavier1”
Driver “evdev”
Option “Device” “/dev/input/event0”
Option “XkbLayout” “fr”
Option “XkbVariant” “latin9”
EndSection

#Sourie du poste 1
Section “InputDevice”
Identifier “sourie1”
Driver “evdev”
Option “ZAxisMapping” “4 5”
Option “Device” “/dev/input/event7”
EndSection

#######################################

Carte graphique et ecran du poste 0

#######################################

Section “Device”
Identifier “carteVideo0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 7600 GT”
BusID “PCI:3:0:0”
Screen 0
EndSection

Section “Monitor”
Identifier “LCD”
VendorName “Hanns.G”
ModelName “HSD Hanns.G HG281”
HorizSync 24.0 - 80.0
VertRefresh 56.0 - 75.0

Option “DPMS”

Option         "PreferredMode" "1920x1200"

EndSection

Section “Screen”
Identifier “ecran0”
Device “carteVideo0”
Monitor “LCD”
DefaultDepth 24
Option “TwinView” “0”
Option “metamodes” “DFP: 1920x1200 +0+0”
SubSection “Display”
Depth 24
Modes “1920x1200_60”
EndSubSection
EndSection

#######################################

Carte graphique et ecran du poste 1

#######################################

Section “Screen”
Identifier “ecran1”
Device “carteVideo1”
Monitor “CRT”
DefaultDepth 24
Option “TwinView” “0”
Option “TwinViewXineramaInfoOrder” “CRT-0”
Option “metamodes” “CRT: 1024x768_100 +0+0”
SubSection “Display”
Depth 24
Modes “1024x768_100”
EndSubSection
EndSection

Section “Device”
Identifier “carteVideo1”
Driver “radeon”
VendorName “ATI Technologies”
BoardName “ATI 7000”
BusID “PCI:1:10:0”
Screen 0
EndSection

Section “Monitor”
Identifier “CRT”
VendorName “Philips”
ModelName “PHILIPS 107B3”
HorizSync 30.0 - 86.0
VertRefresh 50.0 - 160.0
Option “DPMS”
Option “PreferredMode” “1024x768”
EndSection[/code]

Et le gdm.conf, que la partie interressante

[code][servers]
#Pour la configuration du “multi-seat”
0=Poste0
1=Poste1

Definition du premier X serveur.

[server-Poste0]
name=Poste 0
command=/usr/bin/X0 :0 -layout poste0 -isolateDevice PCI:3:0:0 vt7
flexible=true

Definition du second X server.

[server-Poste1]
name=Poste 1
command=/usr/bin/X1 :1 -novtswitch -layout poste1 -isolateDevice PCI:1:10:0 -sharevts
flexible=true[/code]

Ce dernier doit surement être améliorable mais pour l’instant ça fonctionne relativement bien.