User Tools

Site Tools


it_best_practise:multiseat:linux

Versionsinformationen:

  • Betriebssystem: CentOS 7.3 und höher / OpenSUSE 42.1 und höher
  • Mindestvoraussetzung:xorg-x11-server-Xorg Version 1.16 und höher

Weitere Betriebssysteme: Ubuntu 16.04 und höher

Installation:

* CentoOS 7.3 / gdm

 Installiere das Basissystem, den NVIDIA Treiber, sowie den Gnome Desktop
 yum -y install epel-release
 yum -y install dkms
 yum -y groupinstall "KDE Plasma Workspaces" "KDE desktop" "X Window System" "Fonts" "GNOME desktop"

Konfiguration:

Stelle fest, welche ID die PCI-Slots der Grafikkarten haben lspci | grep VGA Output bei drei eingebauten Grafikkarten z.B.:

 01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
 02:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
 03:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)

Suche die exakte Device Bezeichnung mit: cd /sys; find . -name \*01:00.0\*

Ausgabe z.B:

./bus/pci/devices/0000:05:00.0
./bus/pci/drivers/nvidia/0000:05:00.0
./devices/pci0000:00/0000:00:03.0/0000:03:00.0/0000:04:10.0/0000:05:00.0

Die letzte Zeile ist die exakte Bezeichnung der ersten Grafikkarte. Suche diese für die anderen Grafikkarten auch.

erstelle drei login sessions durch anlegen der Datei /etc/udev/rules.d/10-nvidia.conf mit:

 
 DEVPATH=="/devices/pci0000:00/0000:00:02.0/0000:01:00.0", TAG+="master-of-seat" 
 DEVPATH=="/devices/pci0000:00/0000:00:02.0/0000:01:00.0", TAG+="graphics0"
 DEVPATH=="/devices/pci0000:00/0000:00:03.0/0000:02:00.0", TAG+="master-of-seat"
 DEVPATH=="/devices/pci0000:00/0000:00:03.0/0000:02:00.0", TAG+="graphics1"
 DEVPATH=="/devices/pci0000:00/0000:00:04.0/0000:03:00.0", TAG+="master-of-seat"
 DEVPATH=="/devices/pci0000:00/0000:00:04.0/0000:03:00.0", TAG+="graphics2"
  
 DEVPATH=="/devices/pci0000:00/0000:00:02.0/0000:01:00.0/*", TAG+="seat0",  ENV{ID_SEAT}="seat0"
 DEVPATH=="/devices/pci0000:00/0000:00:03.0/0000:02:00.0/*", TAG+="seat1",  ENV{ID_SEAT}="seat1"
 DEVPATH=="/devices/pci0000:00/0000:00:04.0/0000:03:00.0/*", TAG+="seat2",  ENV{ID_SEAT}="seat2"
  
 DEVPATH=="/devices/pci0000:00/0000:00:02.0/0000:01:00.0", TAG+="master-of-seat", TAG+="graphics0", ENV{ID_SEAT}="seat0"
 DEVPATH=="/devices/pci0000:00/0000:00:03.0/0000:02:00.0", TAG+="master-of-seat", TAG+="graphics1", ENV{ID_SEAT}="seat1"
 DEVPATH=="/devices/pci0000:00/0000:00:04.0/0000:03:00.0", TAG+="master-of-seat", TAG+="graphics2", ENV{ID_SEAT}="seat2"

Aktiviere die Konfiguration mit dem Befehl udevadm trigger

lösche die Standardkonfigurationsdatei /etc/X11/xorg.conf und erstelle die Konfigurationsdatei /etc/X11/xorg.conf.d/99-nvidia.conf mit folgendem Inhalt

 
 # /etc/X11/xorg.conf.d/99-nvidia.conf provided by http://elrepo.org
 
 Section "Files"
       ModulePath   "/usr/lib64/xorg/modules/extensions/nvidia"
       ModulePath   "/usr/lib64/xorg/modules"
 EndSection
 
 Section "Device"
   Identifier     "Seat0"
   Driver         "nvidia"
   BusID          "PCI:01:00:0"
   Option         "ProbeAllGpus" "FALSE"
   MatchSeat      "seat0"
 EndSection
  
 Section "Device"
   Identifier     "Seat1"
   Driver         "nvidia"
   BusID          "PCI:02:00:0"
   Option         "ProbeAllGpus" "FALSE"
   MatchSeat      "seat1"
 EndSection
 
 Section "Device"
   Identifier     "Seat2"
   Driver         "nvidia"
   BusID          "PCI:03:00:0"
   Option         "ProbeAllGpus" "FALSE"
   MatchSeat      "seat2"
 EndSection

Achtung: Sollte die VGA Karte eine Devicenummer zwischen 0A:00.0 und 0F:00.0 haben, so muss die BusID dezimal codiert werden, also PCI:10:00:0 für Devicenummer 0A:00.0

Wenn der gdm Windowmanager genommen wird, so sollte jetzt nach einem Neustart auf allen drei Monitoren ein login Bildschirm erscheinen.

Zuordnung von Tastatur und Maus

Als nächstes muss jede Tastatur und jede Maus einem Seat zugeordnet werden. Wenn keine Zuordnung vorgenommen wird, so werden die USB Geräte dem Seat-0 zugeordnet, d.h. alle Tastaturen und Mäuse gehen auf einen Monitor.

Die Zuordnung geht wie folgt:

Zuordnung zu Seat-X (mit X>0):

Tastatur und Maus in den PC einstecken. Auf Seat-0 ein Terminal öffnen und als root Benutzer den Befehl dmesg eingeben. Ausgabe z.B.:

[93688.852557] input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:1d.2/usb6/6-2/6-2:1.0/0003:046D:C046.0002/input/input17
[93688.908122] hid-generic 0003:046D:C046.0002: input,hidraw0: USB HID v1.10 Mouse [Logitech USB Optical Mouse] on usb-0000:00:1d.2-2/input0

Die dort angegebene Device-ID muss man jetzt dem entsprechenden Seat zuordnen. Dies kann man in der Datei /etc/udev/rules.d/72-seat.rules wie folgt machen (hier wird die Maus dem Seat-1 zugegordnet).

SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.2/usb6/6-2/6-2:1.0/0003:046D:C046.0002/input/input17",  ENV{ID_INPUT.tags}="X1"
SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.2/usb6/6-2/6-2:1.0/0003:046D:C046.0002/input/input17",  ENV{ID_SEAT}="seat1"
SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.2/usb6/6-2/6-2:1.0/0003:046D:C046.0002/input/input17",  ENV{ID_VENDOR_ID}="seat1"

Dies muss für alle Eingabegeräte gemacht werden. Die Aktivierung der Regel erfolgt wieder mit dem Befehl udevadm trigger Bei der Zuordnung der USB-Geräte sind auch Wildcards erlaubt, das ist hilfreich, wenn man mit USB-Hubs arbeitet, an denen Tastatur und Maus angeschlossen werden.

it_best_practise/multiseat/linux.txt · Last modified: 2024/02/27 11:41 by 127.0.0.1