(K)Ubuntu 17.10 - loginctl Multi-Seat auf 2 NVidia-Karten mit entweder Nouveau oder Nvidia-384

(K)Ubuntu 17.10 - loginctl Multi-Seat auf 2 NVidia-Karten mit entweder Nouveau oder Nvidia-384

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 loginctldie 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 nouveauXOrg-Treiber kann ich beide Plätze nutzen. Beide Plätze zeigen den lightdmAnmeldebildschirm 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 nouveauzeigt ein paar Nachrichten wie nouveau 0000:01:00.0: fifo: SCHED_ERROR 08 []odernouveau 0000:01:00.0: Xorg[1250]: channel 2 killed!
  • 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.

  1. 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.
  2. 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.
  3. Besorgen Sie sich zwei kabellose USB-Maus-/Tastatur-Kombinationen und stecken Sie jeweils einen der USB-Dongles in die beiden USB-Hubs.
  4. Ordnen Sie die Hubs den jeweiligen Plätzen zu ( loginctl attach seat1 /dev/...). Dadurch werden die am Hub eingesteckte Maus und Tastatur automatisch zugeordnet.
  5. Weisen Sie der USB-Soundkarte den Platz 1 zu.
  6. Weisen Sie Sitz1 eine der Nvidia-Karten (alle, einschließlich DRM- und Soundgeräte) zu.
  7. Wenn Sie weitere Geräte haben, die nicht an den bereits zugewiesenen Hub angeschlossen sind, weisen Sie diese ebenfalls zu.
  8. 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, videoda 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:

  1. damit loginctl attach seat1 ....alle benötigten Geräte dem Sitzplatz1 zuweisen
  2. 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 devicesum die Liste der verfügbaren Treiber anzuzeigen)

    apt install nvida-384
    
  3. Neustart
  4. Melden Sie sich auf seat0 an und führen Sie aus nvidia-seetings. Wählen Sie X Server Display Configurationlinks aus, klicken Sie save to X Configuration Fileunten rechts und speichern Sie die Datei als ~/xorg-template
  5. Kopieren Sie die Konfigurationsdatei ~/xorg-template zweimal nach /etc/X11, einmal als xorg-seat0.confund einmal alsxorg-seat1.conf
  6. Ä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
      
  7. 10-seats.confErstellen 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
    
  8. 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 seatBuchstaben, Ziffern, - und _ beginnt und von diesen gefolgt wird). Stellen Sie sicher, dass Sie diesen Namen verwenden, um den zweiten Sitz zu konfigurieren – ich habe seat1es 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.

verwandte Informationen