GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Kann X.org zwei verschiedene Treiber laden? (Triple-Head-Setup mit Intel- und Nvidia-Karte)?

Wir möchten 3 Bildschirme mit einem integrierten Intel-Grafikadapter und einer NVIDIA-Karte einrichten.

Beide Karten werden in lspci erkannt

01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
00:02.0 Display controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)

Und grundsätzlich funktioniert:Wenn ich auf die Konsole wechsle, sehe ich Ausgaben auf der Intel-Karte,
X läuft nur auf der Nvidia-Karte.

Aber wenn ich xrandr | grep conn Ich bekomme nur einen verbundenen Port:

DVI-I-0 disconnected (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
HDMI-0 disconnected (normal left inverted right x axis y axis)

Ich verwende Ubuntu 12.10 (und XFCE) und habe den proprietären nvidia-Treiber installiert.

Ich ging davon aus, dass X vielleicht ein Problem hat, beide Karten automatisch zu erkennen, also dachte ich an die folgende xorg.conf könnte helfen:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    Screen      1  "Screen1"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 210"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "intel"
    VendorName     "Intel"
    BoardName      "Internal Intel Graphics"
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Aber es funktioniert immer noch nicht.

  • Ist es generell möglich, zwei verschiedene Treiber in X zu verwenden?
  • Ist es notwendig, eine xorg.conf zu erstellen dann manuell? (weil Ubuntu 12.10 normalerweise ohne die xorg.conf funktioniert )
  • Gibt es irgendwelche Fehler in meiner xorg.conf ?

Akzeptierte Antwort:

Ja, X kann mehrere Treiber verwenden. Deine ist ein sehr ähnliches Setup wie das, was ich habe. Ich habe eine NVIDIA 9800 GT mit zwei angeschlossenen Monitoren und eine Intel-Karte der 2. Generation mit einem einzigen Monitor.

Ich sehe keine Probleme mit Ihrer xorg.conf . Ich vermute, dass Sie eine xorg.conf erstellen müssen nur um X anzuweisen, sowohl NVIDIA- als auch Intel-Treiber zu verwenden. Meine xorg.conf sieht deinem sehr ähnlich; Ich habe drei Monitor- und Bildschirmabschnitte, weil die NVIDIA-Karte zwei Monitore hat, aber ich bin mir ziemlich sicher, dass X diese Abschnitte ignoriert.

Zuerst sollten Sie sicherstellen, dass xinerama in xorg.conf deaktiviert ist (vielleicht nicht notwendig).

xorg.conf :

Section "ServerFlags"
    Option  "xinerama"  "off"
EndSection

Wenn Sie xrandr --listproviders ausführen Sie sollten beide Karten sehen.

[email protected]> xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x290 cap: 0x1, Source Output crtcs: 2 outputs: 5 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x48 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 6 associated providers: 1 name:Intel

Wenn Sie nicht beide Karten sehen, fehlt Ihnen wahrscheinlich ein Treiber. (Aber OP sagt, die Konsole verwendet eine und X die andere, also funktionieren wahrscheinlich beide)

Verwandte:Ubuntu 14.04 Bildschirmauflösung zu niedrig (SiS 671 Grafikkarte)?

Sie sollten xrandr --setprovideroutputsource verwenden können , um die Intel-Ports zur Liste hinzuzufügen, die von Ihrem xrandr | grep conn In meinem Fall verwende ich die von --listproviders angegebenen Namen :

xrandr --setprovideroutputsource Intel NVIDIA-0

Wenn die Intel-Ports dadurch nicht hinzugefügt werden, ist es möglicherweise bereits so verbunden, dass Sie es nicht sehen können. Trennen Sie es mit:

xrandr --setprovideroutputsource Intel 0x0

Versuchen Sie dann erneut, eine Verbindung herzustellen:

xrandr --setprovideroutputsource Intel NVIDIA-0

Alle Ausgabeports sollten jetzt angezeigt werden. Und Sie sollten in der Lage sein, eine Anzeige mit den Gnome-Anzeigeeinstellungen oder mit xrandr hinzuzufügen .

Als ich endlich mein Intel-Display zum Laufen brachte, entschieden die NVIDIA-Displays, dass sie schwenken mussten, als ich versuchte, die Maus zum dritten Display zu bewegen. Es würde nun den Inhalt des dritten Monitors sowohl auf dem dritten als auch auf dem zweiten Monitor anzeigen. Und der ursprüngliche Inhalt des zweiten wurde auf den ersten Monitor verschoben, wobei der Inhalt des ersten außerhalb des Bildschirms lag. Es würde wieder normal werden, wenn ich versuchen würde, den Cursor wieder auf den ersten Monitor zu bewegen.

Ich habe das schließlich mit einem weiteren xrandr behoben Aufruf:

xrandr --output DVI-I-2 --panning 3840x1200+1680+0/1920x1200+1680+0/0/0/0/0

Dieser Aufruf erfordert Kenntnisse über die physische Bildschirmgeometrie und das logische Layout. Ich habe einen 1680×1050 Monitor, einen 1920×1200 und einen 1920×1080. Sie sind in dieser Reihenfolge von links nach rechts. Ganz rechts ist mit der Intel-Karte verbunden.

Dieser Aufruf legt den Schwenkbereich auf dem mittleren Monitor fest. --output DVI-I-2 zufällig der Port, der mit meinem mittleren Monitor verbunden ist.

Die ersten vier Zahlen stellen den Schwenkbereich auf die Summe des mittleren und rechten Bildschirms ein. 3840×1200 als Breite und Höhe und +1680+0 zum Versetzen der Region, um oben links auf dem mittleren Monitor zu beginnen. (Anscheinend befindet sich [0,0] oben links auf dem linken Monitor)

Die nächsten 4 Zahlen sind der Cursorverfolgungsbereich. Ich habe dies so eingestellt, dass nur der Cursor auf dem mittleren Bildschirm verfolgt wird. Wenn der Cursor diesen Bildschirm verlässt, versucht er auf diese Weise nicht, das Bild zu verschieben, um dem Cursor zu folgen.

Die letzten 4 Zahlen definieren einen Rahmen um den Schwenkbereich. Ich verwende hier nur die Standardwerte.

Versionen verwandter Software, die ich verwendet habe:

xorg-server-1.17.4
gnome-3.18.0
xrandr-1.4.3

Ubuntu
  1. So richten Sie MariaDB High Availability mit Heartbeat und DRBD unter Ubuntu 16.04 LTS ein

  2. Optimus Laptop – Abgehackte und stotternde Videos mit Intel-Onboard-Grafik und Screen Tearing mit Nvidia-Grafik?

  3. Woher weiß ich, welche Treiber und welche Grafikkarte ich verwende?

  4. Richten Sie Apache 2.4 und Php FPM mit mod proxy fcgi auf Ubuntu 13.10 ein

  5. Behebung von Grub- und Begrüßungsbildschirmen mit niedriger Auflösung mit Nvidia-Treibern unter Ubuntu 14.04

Richten Sie Ruby on Rails Development Environment mit Docker und Docker Compose auf Ubuntu ein

So richten Sie Magento 2 mit Varnish und Apache unter Ubuntu 16.04 ein

Anleitung zum Einrichten von Ircd-Hybrid- und Anope-Diensten mit SSL unter Ubuntu

Installieren Sie NVIDIA-Treiber auf Ubuntu (Befehlszeilen- und GUI-Methoden)

System startet nicht mit aktiviertem Nvidia-Treiber?

Richten Sie Load Balancing mit HAProxy, Nginx und Keepalived unter Linux ein