Ich habe eine Maschine mit zwei NVidia-Grafikkarten eingerichtet:
$ lspci
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 740] (rev a1)
02:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)
Ich habe dann loginctl
die GT 730 dem Sitz 1 zugewiesen und die GT 740 unberührt gelassen, sodass sie immer noch dem Sitz 0 zugewiesen ist. Sitz 0 hat zwei Monitore, Sitz 1 hat nur einen.
Verwendung von Nouveau
Mit dem nouveau
XOrg-Treiber kann ich beide Plätze nutzen. Beide Plätze zeigen den lightdm
Anmeldebildschirm an und ermöglichen die Anmeldung.
Hier gibt es zwei Probleme:
- seat0 hängt sich häufig auf, anscheinend nur, wenn die Sitzung gesperrt ist. Die Maus bewegt sich zwar noch, aber sie akzeptiert keine Tastatureingaben. Sogar die Uhr wird nicht mehr aktualisiert.
- Dies kann behoben werden, indem man sich per SSH mit der Box verbindet oder sich auf Sitz 1 anmeldet und einfach lightdm (
service lightdm restart
) neu startet. Dadurch werden aber offensichtlich beide Sitze abgemeldet, was bestenfalls umständlich ist. dmesg | grep nouveau
zeigt ein paar Nachrichten wienouveau 0000:01:00.0: fifo: SCHED_ERROR 08 []
odernouveau 0000:01:00.0: Xorg[1250]: channel 2 killed!
- Dies kann behoben werden, indem man sich per SSH mit der Box verbindet oder sich auf Sitz 1 anmeldet und einfach lightdm (
- Das Display von seat-1 flimmert beim Scrollen, beispielsweise auf einer Webseite. Dies kann an einer zu geringen Videospeicherbandbreite liegen, lautNouveau Fehlerbehebung - Leerer Monitor, Flackern, Schnee oder andere zufällige Livebildbeschädigungen. Ich habe das noch nicht untersucht.
Verwenden proprietärer NVidia-Treiber
Wenn ich die proprietären Nvidia-Treiber installiere ( apt install nvidia-384
), ist nur die GT 740 (Sitz 0 zugewiesen, mit zwei Monitoren ausgestattet) nutzbar. Das andere Display der GT 730 (Sitz 1 zugewiesen, mit einem Monitor ausgestattet) bleibt schwarz.
Das Positive daran ist jedoch, dass ich keine Systemabstürze mehr auf Sitz 0 erlebt habe (und offensichtlich auch kein Flackern mehr auf Sitz 1, obwohl das keine wirkliche Verbesserung ist ;-)).
Ich habe auch versucht, über die Einstellungs-App für Hardwaretreiber oder ubuntu-drivers
über die Konsole zu den Treibern zu wechseln. In beiden wird nur eine NVidia-Karte aufgelistet, nämlich die GT 740:
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0 ==
modalias : pci:v000010DEd00000FC8sv00001458sd000036FFbc03sc00i00
vendor : NVIDIA Corporation
model : GK107 [GeForce GT 740]
driver : nvidia-384 - distro non-free recommended
driver : nvidia-340 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
== cpu-microcode.py ==
driver : amd64-microcode - distro non-free
Abschluss
Mein Ziel ist, dass beide Sitze laufen, ohne dass sie sich aufhängen oder flackern. Ob dies mit Nouveau- oder Nvidia-Treibern erreicht wird, ist mir eigentlich egal.
Ich habe derzeit weder eine Xorg.conf, noch habe ich die Lightdm-Konfiguration geändert, weil ich einfach nicht wusste, was ich dort einfügen sollte. Ich nehme an, dass es reichen würde, wenn der NVIDIA-Treiber die zweite Karte erkennen müsste, aber ich habe keine Ahnung, wie ich das erreichen soll.
Irgendwelche Ideen?
Vielen Dank im Voraus, Patrick
Antwort1
OK, ich habe es endlich zum Laufen gebracht.
allgemein
Dieser Abschnitt dient als kleiner „Einstieg“ für andere und als kleine „Gedächtnisstütze“ für mich selbst … Dies ist nicht die einzige und vielleicht nicht einmal die beste Vorgehensweise, es ist einfach die Art und Weise, wie ich es gemacht habe.
- Besorgen Sie sich zwei USB-Hubs und platzieren Sie an jedem der beiden Sitze einen. Stecken Sie sie in zwei USB-Anschlüsse des Geräts.
- Besorgen Sie sich eine USB-Soundkarte (kleiner USB-Dongle mit einem Mikrofoneingang und einem Line-Out-Anschluss) und stecken Sie diese in einen anderen USB-Port Ihres Rechners. Dies setzt voraus, dass bereits ein anderes (integriertes) Soundgerät vorhanden ist, das auf seat0 verwendet werden soll.
- Besorgen Sie sich zwei kabellose USB-Maus-/Tastatur-Kombinationen und stecken Sie jeweils einen der USB-Dongles in die beiden USB-Hubs.
- Ordnen Sie die Hubs den jeweiligen Plätzen zu (
loginctl attach seat1 /dev/...
). Dadurch werden die am Hub eingesteckte Maus und Tastatur automatisch zugeordnet. - Weisen Sie der USB-Soundkarte den Platz 1 zu.
- Weisen Sie Sitz1 eine der Nvidia-Karten (alle, einschließlich DRM- und Soundgeräte) zu.
- Wenn Sie weitere Geräte haben, die nicht an den bereits zugewiesenen Hub angeschlossen sind, weisen Sie diese ebenfalls zu.
Führen Sie aus
loginctl seat-status seat1
. So sieht es hier aus:seat1 Sessions: *c3 Devices: ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/card1 │ [MASTER] drm:card1 ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/renderD129 │ drm:renderD129 ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2 │ sound:card2 "NVidia" │ ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2/input20 │ │ input:input20 "HDA NVidia HDMI/DP,pcm=3" │ └─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2/input21 │ input:input21 "HDA NVidia HDMI/DP,pcm=7" ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8 │ usb:usb8 │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1 │ │ usb:8-1 │ │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.3 │ │ │ usb:8-1.3 │ │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.4/8-1.4:1.0/0003:046A:B102.0004/input/input5 │ │ │ input:input5 "HOLTEK USB Wireless Device" │ │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.4/8-1.4:1.1/0003:046A:B102.0005/input/input6 │ │ input:input6 "HOLTEK USB Wireless Device" │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-2 │ usb:8-2 │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-2/8-2.3 │ usb:8-2.3 ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9 │ usb:usb9 │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-1 │ │ usb:9-1 │ │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-1/9-1.3 │ │ usb:9-1.3 │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-2 │ usb:9-2 │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-2/9-2.3 │ usb:9-2.3 ├─/sys/devices/pci0000:00/0000:00:12.0/usb4 │ usb:usb4 │ ├─/sys/devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.0/sound/card5 │ │ sound:card5 "Device" │ └─/sys/devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.3/0003:0D8C:0014.0001/input/input2 │ input:input2 "C-Media Electronics Inc. USB Audio Device" └─/sys/devices/pci0000:00/0000:00:12.2/usb1 usb:usb1 ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-2 │ usb:1-2 ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/input/input15 │ input:input15 "UVC Camera (046d:0807)" ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/video4linux/video0 │ video4linux:video0 "UVC Camera (046d:0807)" ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.2/sound/card3 │ sound:card3 "U0x46d0x807" └─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5 usb:1-5
Jugendstil
Ich habe nicht herausgefunden, was ich gegen das Bildschirmflackern auf Sitz1 und die Abstürze auf Sitz0 bei Verwendung des Nouveau-Treibers tun kann. Falls Sie nach einer Lösung für genau dieses Problem suchen, lohnt sich vielleicht ein Blick auf https://wiki.archlinux.org/index.php/Xorg_multiseatwas sagt:
Um ein Reißen zu vermeiden, scheint dies bei fast allen Konfigurationen zu helfen – fügen Sie dies zu /etc/environment hinzu:
CLUTTER_PAINT=disable-clipped-redraws:disable-culling
CLUTTER_VBLANK=True
Ein weiterer Hinweis war, den Benutzer zur Gruppe hinzuzufügen, video
da er sonst möglicherweise keinen Zugriff auf die DRI-Schnittstelle hat.
Das ist so ziemlich alles, was ich sagen kann. Ich bin jetzt auf die Verwendung binärer Nvidia-Treiber umgestiegen.
NVidia
Das Problem, das ich hatte, war anscheinend, dass der X-Server von Sitz0 irgendwie versuchte, die Kontrolle über beide GPUs zu übernehmen, obwohl GPU-1 Sitz1 zugewiesen war.
Dadurch kam es irgendwie zu einer Verwechslung der X-Bildschirme und der X-Server für Platz 1 konnte keine verwendbaren Bildschirme finden.
Ich habe Stunden damit verbracht, an Dateien herumzufummeln /etc/X11/xorg.conf.d
, in denen ich kleine Konfigurationsteile abgelegt habe, wie
Section "Device"
Identifier "graphic0"
Driver "nvidia"
Option "NoLogo"
BusId "PCI:1:0:0"
MatchSeat "seat-1"
Option "Monitor-DVI-1" "monitor1"
EndSection
Und
Section "ServerLayout"
Identifier "seat-1"
Screen "screen1" 0 0
InputDevice "mouse1" "CorePointer"
InputDevice "keyboard1" "CoreKeyboard"
Option "Seat" "seat-1"
Option "SingleCard" "on"
EndSection
wie empfohlen vonhttps://wiki.archlinux.org/index.php/Xorg_multiseat(dort gibt es viele nützliche Informationen, aber sie haben mein Problem nicht gelöst) oderhttps://devtalk.nvidia.com/default/topic/936873/linux/-howto-multiseat-with-ubuntu-16-04-systemd-gdm-proprietary-drivers/1(eine weitere hochwertige Diskussion dieses Themas).
Was bei mir letztendlich funktioniert hat, war der schwierige Weg, bei dem ich für jeden Sitz eine X-Konfiguration bereitgestellt habe.
Also, mein Vorgehen war:
- damit
loginctl attach seat1 ....
alle benötigten Geräte dem Sitzplatz1 zuweisen Installieren Sie die proprietären Treiber von Nvidia (achten Sie darauf, dass Sie den richtigen für Ihr System auswählen; führen Sie ihn im Terminal aus,
ubuntu-drivers devices
um die Liste der verfügbaren Treiber anzuzeigen)apt install nvida-384
- Neustart
- Melden Sie sich auf seat0 an und führen Sie aus
nvidia-seetings
. Wählen SieX Server Display Configuration
links aus, klicken Siesave to X Configuration File
unten rechts und speichern Sie die Datei als ~/xorg-template - Kopieren Sie die Konfigurationsdatei ~/xorg-template zweimal nach
/etc/X11
, einmal alsxorg-seat0.conf
und einmal alsxorg-seat1.conf
Ändern Sie diese beiden Xorg-Konfigurationsdateien so, dass sie mit den Einstellungen für seat0 bzw. seat1 übereinstimmen. Ich musste nur ein paar Zeilen ändern – die PCI-Adresse der GPU und die Anzahl der Monitore. Der Übersichtlichkeit halber habe ich jedoch auch die Benennung der Kennungen geändert – ich nehme an, das wäre nicht wirklich erforderlich. Unten ist meine Konfiguration:
Sitz0
# xorg-seat0.conf Section "ServerLayout" Identifier "Layout-seat0" Screen 0 "Screen-seat0" 0 0 InputDevice "Keyboard-seat0" "CoreKeyboard" InputDevice "Mouse-seat0" "CorePointer" Option "Xinerama" "0" EndSection Section "Files" EndSection Section "InputDevice" # generated from default Identifier "Mouse-seat0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard-seat0" Driver "kbd" EndSection Section "Monitor" # HorizSync source: edid, VertRefresh source: edid Identifier "Monitor-seat0_1" VendorName "Unknown" ModelName "FUS H22-1W" HorizSync 28.0 - 79.0 VertRefresh 50.0 - 75.0 Option "DPMS" EndSection Section "Device" Identifier "Device-seat0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GT 740" BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "Screen-seat0" Device "Device-seat0" Monitor "Monitor-seat0_1" DefaultDepth 24 Option "Stereo" "0" Option "nvidiaXineramaInfoOrder" "DFP-0" Option "metamodes" "DVI-D-0: nvidia-auto-select +0+0, DVI-D-1: nvidia-auto-select +1680+0" Option "SLI" "Off" Option "MultiGPU" "Off" Option "BaseMosaic" "off" SubSection "Display" Depth 24 EndSubSection EndSection
Sitz1
# xorg-seat1.conf Section "ServerLayout" Identifier "Layout-seat1" Screen 0 "Screen-seat1" 0 0 InputDevice "Keyboard-seat1" "CoreKeyboard" InputDevice "Mouse-seat1" "CorePointer" Option "Xinerama" "0" EndSection Section "Files" EndSection Section "InputDevice" # generated from default Identifier "Mouse-seat1" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard-seat1" Driver "kbd" EndSection Section "Monitor" # HorizSync source: edid, VertRefresh source: edid Identifier "Monitor-seat1_1" VendorName "Unknown" ModelName "FUS H22-1W" HorizSync 28.0 - 79.0 VertRefresh 50.0 - 75.0 Option "DPMS" EndSection Section "Device" Identifier "Device-seat1" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GT 730" BusID "PCI:2:0:0" EndSection Section "Screen" Identifier "Screen-seat1" Device "Device-seat1" Monitor "Monitor-seat1_1" DefaultDepth 24 Option "Stereo" "0" Option "nvidiaXineramaInfoOrder" "DFP-0" Option "metamodes" "DVI-D-0: nvidia-auto-select +0+0" Option "SLI" "Off" Option "MultiGPU" "Off" Option "BaseMosaic" "off" SubSection "Display" Depth 24 EndSubSection EndSection
10-seats.conf
Erstellen Sie eine neue Datei/etc/lightdm/lightdm.conf.d/
(erstellen Sie den Ordner, falls er noch nicht vorhanden ist) und weisen Sie die Layouts und Konfigurationsdateien den einzelnen X-Servern zu:# 10-seats.conf [Seat:seat0] xserver-command=/usr/bin/X :0 xserver-config=/etc/X11/xorg-seat0.conf xserver-layout=Layout-seat0 [Seat:seat1] xserver-command=/usr/bin/X :1 xserver-config=/etc/X11/xorg-seat1.conf xserver-layout=Layout-seat1
- Neustart
Wie Sie vielleicht bemerken, enthalten die xorg-seat[01].conf-Dateien keinen Hinweis auf Sitze. Ich habe die Bezeichner mit den Zeichenfolgen seat0 und seat1 benannt, aber das hat keine Relevanz.
In der LightDM-Konfiguration müssen jedoch die Namen verwendet werden, die Sie den Sitzen beim Erstellen zugewiesen haben. seat0 kann nicht geändert werden, aber der zweite Sitz kann einen beliebigen Namen haben (solange er mit seat
Buchstaben, Ziffern, - und _ beginnt und von diesen gefolgt wird). Stellen Sie sicher, dass Sie diesen Namen verwenden, um den zweiten Sitz zu konfigurieren – ich habe seat1
es einfach gehalten.
Ich bin ziemlich sicher, dass es Dinge gibt, die aus den X-Konfigurationsdateien entfernt werden könnten, aber ich habe noch nicht versucht, sie aufzuräumen. Wenn Sie eine minimalistischere Datei finden, die gut funktioniert, können Sie hier gerne einen Kommentar hinterlassen und ich werde Ihre Informationen hinzufügen (es sei denn, Sie möchten nicht Ihre eigene vollständige Antwort veröffentlichen).
Beispielsweise sind weder die in beiden X-Konfigurationsdateien konfigurierte Maus noch die Tastatur auf meinem Rechner vorhanden - es sind Dummy-Geräte, die von hinzugefügt wurden nvidia-settings
. Die physischen Geräte (kabellose USB-Maus und -Tastatur) werden im laufenden Betrieb hinzugefügt, da sie jeweils an Sitz0 und Sitz1 angeschlossen sind.