Mehrplatz Konfiguration
Aus Fedorawiki.de
Eine Mehrplatz Konfiguration (auch Multi-Seat genannt) bezeichnet die Einrichtung von mehreren Arbeitsplätzen an einem Rechner, die unabhängig voneinander genutzt werden können. Beispielhaft wird hier erklärt wie zwei Arbeitsplätze eingerichtet werden.
Inhaltsverzeichnis |
Einleitung
Die hier beschriebenen Konfigurationen wurden ausschließlich mit Fedora 7 durchgeführt. Sollte jemand das Ganze in anderen Konstellationen lauffähig konfiguriert haben, dann ergänzt bitte diesen Artikel entsprechend.
Diese Konfiguration ist mit Fedora 9 und auch Fedora 10 nicht möglich! Bedingt durch Änderungen am X-Server und dem GDM startet kein zweiter X-Server.
Auch mit der Beschreibung sollten grundlegende Kenntnisse der Systemadministration unter Fedora vorhanden sein. Neben manuellen Konfigurationen sind bei Fehlversuchen auch Erfahrungen im Troubleshooting hilfreich.
Konfiguration
Vorraussetzungen
Um mehrere Arbeitsplätze einrichten zu können, sind die folgenden Vorausetzungen erforderlich:
- Fedora 7
- Xorg (X11 R7)
- Gnome als Desktop
- für jeden Arbeitsplatz:
- Tastatur
- Maus
- Monitor (nach Möglichkeit TFTs)
- Grafikkarte
grundsätzliches Vorgehen
- in /etc/X11/xorg.conf:
- die Grafikkarten einrichten
- die Monitore einrichten
- die Tastaturen einrichten
- die Mäuse einrichten
- Serverlayouts konfigurieren
- in /etc/gdm/custom.conf den Start des zweiten X-Server konfigurieren
X11 konfigurieren
Hier wird beispielhaft die Konfiguration von zwei Arbeitsplätzen vorgestellt. Prinzipiell lassen sich so auch mehr Arbeitsplätze einrichten. Vor allem die Anzahl der verfügbaren Steckplätze für Grafikkarten stellt die Obergrenze dar.
Grafikkarten einrichten
Bei mir kam eine PCIE und eine PCI Grafikkarte zum Einsatz. Bei der PCIE-Karte handelt es sich um ATI-Karte, die PCI-Karte hat einen nvidia-Chipsatz.
In der xorg.conf sollte es bereits eine Grafikkarte geben. Der Eintrag sieht wahrscheinlich ungefähr so aus:
Section "Device" Identifier "Videocard0" Driver "radeon" VendorName "Videocard vendor" BoardName "ATI Radeon X300" EndSection
Die zweite Grafikarte kann als Kopie angelegt werden, dabei wird natürlich der richtige Treiber eingetragen. Der Treiber muss installiert sein. Ausserdem muß der Identifier eindeutig gewählt werden.
Um den parallelen Betrieb später zu ermöglichen, ist es wichtig, die sogenannte BusID zu konfigurieren. Um diese BusID herauszufinden, gibt man als root im Terminal ein:
[root]# lspci | grep VGA
Als Ausgabe erhält man in meinem Fall:
01:07.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX 5200] (rev a1) 05:00.0 VGA compatible controller: ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]
Die Zahlen am Anfang der Zeile sind die BusIDs, die benötigt werden. Damit sieht die Grafikkartenkonfiguration dann so aus:
Section "Device" Identifier "Videocard0" Driver "radeon" VendorName "Videocard vendor" BoardName "ATI Radeon X300" BusID "PCI:5:0:0" EndSection Section "Device" Identifier "Videocard1" Driver "nvidia" VendorName "Videocard vendor" BoardName "nVidia Corporation NV34 [GeForce FX 5200]" BusID "PCI:1:7:0" EndSection
Monitore einrichten
Die Monitore einzurichten ist sehr einfach. Was man wissen muss, sind die maximalen Sync-Werte des Monitors. Man kann auch hier einfach die bestehende Monitor-Sektion kopieren und die Werte für den zweiten Monitor anpassen. Sollte der Monitor DDC unterstützen, braucht man keine Werte für Sync angeben. Falsche Sync-Werte können aber auch zur Zerstörung der Ablenkspulen führen, die es nur bei Röhrenbildschirmen gibt.
In meinem Fall sind beide Monitore identisch, und der zweite Eintrag unterscheidet sich vom ersten nur durch den Identifier, der "Monitor1" heisst:
Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Samsung SyncMaster 730B" HorizSync 30.0 - 81.0 VertRefresh 56.0 - 75.0 EndSection
Grafikkarte und Monitor müssen noch zu einem Screen zusammengefasst werden. Die Modes für die Auflösung und eventuell weitere Optionen hängen von der Grafikkarte ab. Man muss keine weiteren Optionen angeben, allerdings kann man damit deutliche Geschwindigkeitssteigerungen erreichen.
Im einfachen Fall sieht der Abschnitt so aus:
Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1280x1024" EndSubSection EndSection
Tastaturen einrichten
Bei den Tastaturen gibt es mehrere Punkte zu beachten. Zum einen ist der standardmässig verwendete Tastaturtreiber kbd völlig ungeeignet, um mehrere Arbeitsplätze einzurichten. kbd fasst immer alle Tastaturen zu einer logischen zusammen.
Stattdessen ist der Treiber evdev zu verwenden, damit das funktioniert auch das Tastaturmodell evdev.
Jetzt steht wieder an, die einzelnen Tastaturen mit ihren DeviceID zu identifizieren. Die ID gibt man dann als Option "Device" in der Konfiguration an. Das führt dann dazu, dass beide Tastaturen getrennt voneinander genutzt werden können. Unter /dev/input sind alle angeschlossenen Tastaturen aufgezählt.
Da ich eine PS/2- und eine USB-Tastatur angeschlossen habe, ergibt sich bei mir das folgende Bild:
[root]# ls -l /dev/input/by-path/ | grep kbd lrwxrwxrwx 1 root root 9 5. Nov 20:17 pci-0000:00:02.0-usb-0:1:1.0-event-kbd -> ../event3 lrwxrwxrwx 1 root root 9 5. Nov 20:17 platform-i8042-serio-0-event-kbd -> ../event1
Mit den Infos, also die PS/2 Tastatur hat die DeviceId /dev/input/event1 und die USB-Tastatur /dev/input/event3, sieht die Definition der Tastaturen in der xorg.conf dann so aus:
Section "InputDevice" Identifier "Keyboard0" Driver "evdev" Option "XkbRules" "xorg" Option "XkbModel" "evdev" Option "XkbLayout" "de" Option "Device" "/dev/input/event1" EndSection Section "InputDevice" Identifier "Keyboard1" Driver "evdev" Option "XkbRules" "xorg" Option "XkbModel" "evdev" Option "XkbLayout" "de" Option "Device" "/dev/input/event3" EndSection
Mäuse einrichten
Die Einrichtung der Mäuse erfolgt analog der Einrichtung der Tastaturen. Hier kann zwar der normale Treiber 'mouse' verwendet werden, dafür ist es wichtig die DeviceID der Mäuse richtig einzutragen. Wenn man /dev/input/mice verwendet, dann sind wieder alle Mäuse gleichzeitig aktiv.
Auch hier habe ich eine PS/2 und eine USB Maus:
[root]# ls -l /dev/input/by-path/ | grep mouse lrwxrwxrwx 1 root root 9 5. Nov 20:17 pci-0000:00:02.0-usb-0:2:1.0-event-mouse -> ../event5 lrwxrwxrwx 1 root root 9 5. Nov 20:17 pci-0000:00:02.0-usb-0:2:1.0-mouse -> ../mouse2 lrwxrwxrwx 1 root root 9 5. Nov 20:17 platform-i8042-serio-1-event-mouse -> ../event2 lrwxrwxrwx 1 root root 9 5. Nov 20:17 platform-i8042-serio-1-mouse -> ../mouse1
Wichtig ist hier nicht das event-Device sondern das zugehörige mouse-Device. Das wird dann wieder in die xorg.conf übernommen:
Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "ZAxisMapping" "4 5" Option "Device" "/dev/input/mouse1" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "ZAxisMapping" "4 5" Option "Device" "/dev/input/mouse2" EndSection
Serverlayouts einrichten
Wenn die anderen Einstellungen vorgenommen sind, müssen nur noch die Serverlayouts konfiguriert werden. Das ist jetzt sehr einfach, es werden nur die verschiedenen Geräte zu einem Layout zusammengefasst.
Zu beachten ist, daß für beide Layouts der Screen 0 vorhanden sein muss, denn es soll sich ja um getrennte Layouts handeln. Um die Grafikkarten auch wirklich voneinander zu trennen, ist es erforderlich die Option "IsolateDevice" mit aufzunehmen. Der Wert ist dabei identisch mit der PCI-ID die zur Identifizierung der Karten eingetragen wurde:
Section "ServerLayout" Identifier "Seat0" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" Option "IsolateDevice" "PCI:5:0:0" EndSection Section "ServerLayout" Identifier "Seat1" Screen 0 "Screen1" 0 0 InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" Option "IsolateDevice" "PCI:1:7:0" EndSection
GDM konfiguieren
Hier handelt es sich um den letzten Schritt. In der Datei /etc/gdm/custom.conf wird konfiguriert, wie und welche X-Server vom Desktop Manager gestartet werden sollen. Ziemlich am Ende der Datei wird sich ein Eintrag, wie dieser finden:
# Definition of the standard X server. [server-Standard] name=Standard server command=/usr/bin/Xorg -audit 0 flexible=true
Um die eigene Konfiguration einzurichten, kann man den Abschnitt einfach kopieren und dann anpassen.
Für den Mehrplatzbetrieb wichtig ist, dass man den X-Server mit zusätzlichen Parametern startet:
- layout gibt das zu verwendende Serverlayout an, ohne Angabe nutzt X einfach das erste Layout in der xorg.conf.
- sharevts ist wichtig wenn mehr als ein X-Server gleichzeitig betrieben werden, ohne diesen Parameter verursacht der 2. X-Server vor allem Probleme
- novtswitch bedeutet dass man nicht mehr einfach auf ein VT wechseln kann
[server-Standard0] name=Standard server command=/usr/bin/Xorg -br -audit 0 -layout Seat0 -sharevts -novtswitch flexible=true [server-Standard1] name=Standard server command=/usr/bin/Xorg -br -audit 0 -layout Seat1 -sharevts -novtswitch flexible=true
Wenn das geschafft ist, muss man nur noch den Start des X-Servers konfigurieren. Die Einträge befinden sich etwas weiter vorne in der custom.conf. Einfach nach der Angabe der Nummer die Serverkonfiguration angeben. Danach kann dann neugestartet werden. Sollte alles funktionieren jetzt mit zwei Arbeitsplätzen.
[servers] # These are the standard servers. You can add as many you want here # and they will always be started. Each line must start with a unique # number and that will be the display number of that server. Usually just # the 0 server is used. 0=Standard0 1=Standard1
Spezielle Konfigurationen
die deutsche Tastaturbelegung und der evdev Treiber
Bei der Nutzung der folgenden Tastaturbeschreibung bin ich über das Problem gestolpert, dass die '<' Taste nicht mehr reagierte. Das ist erstaunlich lästig, da dann auch kein Pipe-Symbol mehr verfügbar ist.
Section "InputDevice" Identifier "Keyboard0" Driver "evdev" Option "XkbRules" "xorg" Option "XkbModel" "evdev" Option "XkbLayout" "de" Option "Device" "/dev/input/event1" EndSection
Um das Problem zu lösen, habe ich
in /usr/share/X11/xkb/keycodes/evdev die folgende Zeile eingefügt:
<LESS> = 94;
in /usr/share/X11/xkb/symbols/de:
key <LESS> { [ less, greater, bar, brokenbar ] };
Damit funktioniert die '<'-Taste wieder wie gehabt.
hilfreiche Tipps
- sollte X nicht mehr starten, kann dem Kernel beim booten der Parameter '3' übergeben werden. Damit startet dann nur Runlevel 3, also pure Textkonsole. Hier kann man dann die letzten Änderungen korrigieren vor dem nächsten X-Start
- benutzt für die Versuche einen TFT und keinen CRT, da es passiert, dass X scheinbar willkürliche Videofrequenzen einstellt. Einem TFT passiert dabei eigentlich nie etwas, ältere Röhren verabschieden sich aber möglicherweise.
bekannte Probleme
- Automount funktioniert nicht, es erscheint nur eine Fehlermeldung (z. B. beim Einlegen einer CD oder Einstecken eines USB-Sticks)
- seit Update auf Kernel 2.6.23.1-10 stürzt die Multi-Seat Konfiguration immer wieder ab (mit blinkenden Keyboard LEDs). Mit Kernel 2.6.22.9-91 tritt das Problem nicht auf. Da auch eine Einplatzkonfiguration mit dem neuen Kernel fehlerfrei funktioniert, ist nicht klar ob es am Kernel, dem Grafikkartentreiber oder X liegt.
Weblinks
- http://blog.chris.tylers.info/index.php?/archives/14-Multiseat-X-Under-X11R6.97.0.html
- http://forums.fedoraforum.org/showthread.php?t=160102
- http://www.charvolant.org/~doug/xkb/
- http://hektor.umcs.lublin.pl/~mikosmul/computing/articles/custom-keyboard-layouts-xkb.html
- http://www.linux-magazin.de/heft_abo/ausgaben/2003/10/deutsch_amerikanische_freundschaft
- http://www.gnome.org/