Multi-Monitor στο Linux: Ρύθμιση δύο ή περισσότερων οθονών να δουλεύουν ταυτόχρονα και με nVIDIA GPU και με την onboard Intel

dimitris | Τετ, 09/26/2018 - 14:35 | 8'

Οι περισσότεροι σύγχρονοι υπολογιστές και laptops έχουν ενσωματωμένη κάποια GPU της Intel. Πολλοί προσθέτουμε και μια NVIDIA κάρτα γραφικών για απαιτητικές εφαρμογές και φυσικά gaming! Σε αυτό τον οδηγό, θα δούμε πως να χρησιμοποιούμε στο Linux και τις δύο κάρτες γραφικών (nVIDIA και Intel) ταυτόχρονα, ώστε π.χ. να μπορούμε να συνδέσουμε μία οθόνη στην Intel και μία ή περισσότερες οθόνες στην nVIDIA και να έχουμε μια ενιαία επιφάνεια εργασίας.

Σημείωση: O παρακάτω οδηγός έχει τεσταριστεί σε Ubuntu 16.04 αλλά λογικά δουλεύει και στις υπόλοιπες διανομές Linux.

Χρειαζόμαστε:

α) Υπολογιστή με onboard Intel GPU, στο BIOS του οποίου υπάρχει επιλογή Multi-Monitor.
β) Κάρτα γραφικών NVIDIA (η δοκιμή έγινε με μια GTX1060 3GB)
γ) Εγκατεστημένη διανομή Linux με X.org έκδοση 1.13+ και RandR 1.4+
δ) Ενεργοποιημένο τον nvidia driver

Με άλλα λόγια και για να μην υπάρχει σύγχυση, υποθέτουμε ότι έχετε κάνει ΗΔΗ τα εξής:

Πρώτον, έχετε εγκαταστήσει μια διανομή Linux στον υπολογιστή στον οποίο έχετε συνδέσει και την κάρτα γραφικών της nVidia.

Δεύτερον, έχετε εγκαταστήσει τον τελευταίο nvidia driver (δείτε το tutorial για την εγκατάσταση NVIDIA drivers στο Ubuntu) και έχετε κάνει reboot, οπότε το σύστημα λειτουργεί κανονικά με την nVIDIA.

Τρίτον, έχετε στον υπολογιστή μια οθόνη συνδεδεμένη με την NVIDIA κάρτα γραφικών αλλά θέλετε ενεργοποιήσετε και την ενσωματωμένη Intel GPU ώστε να συνδέσετε σε αυτήν ένα δεύτερο monitor. Σημείωση πριν προχωρήσετε: Τσεκάρετε ότι στο BIOS του υπολογιστή είναι διαθέσιμη μια επιλογή Multi-Monitor (disabled λογικά), γιατί θα χρειαστεί παρακάτω.

Τέταρτον, έχετε πρόσφατη έκδοση του X.org με xrandr 1.4+. Αυτό χρειάζεται γιατί από την έκδοση εκείνη και μετά, προστέθηκε στο RandR η δυνατότητα να δουλεύει ταυτόχρονα με δύο διαφορετικούς drivers ώστε η μία κάρτα να δείχνει πράγματα που κάνει render η άλλη (Offloading). Για να διαπιστώσετε τι έκδοση έχετε, δίνετε την εντολή:

xrandr --version

και θα πρέπει να σας απαντήσει κάτι σαν κι αυτό:

xrandr program version       1.5.0
Server reports RandR version 1.5

Πως βάζω το δεύτερο monitor να παίζει μέσω της Intel ενώ έχω ήδη NVIDIA

Αν έχετε κάνει παραπάνω, και θέλετε να ρυθμίσετε μια δεύτερη οθόνη (ή και περισσότερες οθόνες) να λειτουργεί μέσω της onboard Intel κάρτας, τότε η διαδικασία ειναι η εξής.

Κατ'αρχάς, πρέπει να βρείτε ποιό ειναι το BusID της κάρτας NVIDIA. Αυτό γίνεται με την εντολή:

nvidia-xconfig --query-gpu-info

Θα σας απαντήσει κάτι σαν κι αυτό:

Number of GPUs: 1

GPU #0:
  Name      : GeForce GTX 1060 3GB
  UUID      : GPU-b6b6c491-78e7-cb69-41ec-926c2c2b06b8
  PCI BusID : PCI:1:0:0

  Number of Display Devices: 1

  Display Device 0 (TV-3):
      EDID Name             : LG Electronics LG FULL HD
      Minimum HorizSync     : 30.000 kHz
      Maximum HorizSync     : 83.000 kHz
      Minimum VertRefresh   : 56 Hz
      Maximum VertRefresh   : 75 Hz
      Maximum PixelClock    : 150.000 MHz
      Maximum Width         : 1920 pixels
      Maximum Height        : 1080 pixels
      Preferred Width       : 1920 pixels
      Preferred Height      : 1080 pixels
      Preferred VertRefresh : 60 Hz
      Physical Width        : 480 mm
      Physical Height       : 270 mm

Όπως βλέπετε το δικό μου BusID είναι το PCI:1:0:0. Κρατάτε αυτό που γράφει στη δική σας περίπτωση.

Έπειτα, με έναν επεξεργαστή κειμένου, με δικαιώματα root, ανοίγετε το αρχείο /etc/X11/xorg.conf:

Π.χ. στο Ubuntu:

sudo nano /etc/X11/xorg.conf

και προσθέτετε εκεί τα παρακάτω - βάζοντας το σωστό BusID για την περίπτωσή σας:

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "ΒΑΛΕ ΕΔΩ ΤΟ BusID"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    # Uncomment this line if your computer has no display devices connected to
    # the NVIDIA GPU.  Leave it commented if you have display devices
    # connected to the NVIDIA GPU that you would like to use.
    #Option "UseDisplayDevice" "none"
EndSection

Section "Device"
    Identifier "intel"
    Driver "modesetting"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

Αποθηκεύστε το αρχείο. Στο nano Ctrl+X και Y. Στην ουσία, ρυθμίσαμε τον X.org να χρησιμοποιεί τον nvidia driver για το πρώτο monitor και τον "modesetting" driver για την ενσωματωμένη κάρτα γραφικών Intel.

Με αυτόν τον τον τρόπο, θα χρησιμοποιούμε τον nvidia driver ως οutput source provider. Η μόνη έξτρα ρύθμιση που απαιτείται τώρα είναι, σε κάθε εκκίνηση του Linux, να τρέχουμε το xrandr για να ενεργοποιεί και το δεύτερο Monitor (αυτό που έχουμε συνδέσει στην Onboard κάρτα γραφικών)

Για να γίνεται αυτό, αρκεί να δημιουργήσετε το αρχείο .xprofile μέσα στο προσωπικό σας φάκελο ως απλός χρήστης:

nano $HOME/.xprofile

Εκεί βάζετε τα εξής:

#!/bin/sh
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

Τώρα κάντε reboot και μπείτε στο BIOS. Εκεί βρείτε την επιλογή IGPU Multi-monitor και κάντε την Enabled.

Σώστε τις αλλαγές στο BIOS και κάντε reboot. Αν όλα πήγαν καλά, θα πρέπει να δείτε και τις δύο οθόνες να δουλεύουν και να δείχνουν μια ενιαία επιφάνεια εργασίας (όχι Mirror).

Μάλιστα, θα πρέπει να μπορείτε να "δείτε" και τις δύο οθόνες και να τους αλλάξετε "θέση" από τις Ρυθμίσεις -> Οθόνες του Ubuntu:

Ρύθμιση πολλαπλών οθονών στο Linux. Η μία GPU δουλεύει με την Intel, η άλλη δουλεύει με την NVIDIA
Ρύθμιση πολλαπλών οθονών στο Linux. Εδώ η μικρή οθόνη είναι συνδεδεμένη με την Intel, ενώ η μεγάλη είναι συνδεδεμένη με την NVIDIA.

Δείτε περισσότερα για το RandR 1.4+ και την Nvidia εδώ.

 

Φόρουμ
Δώσε αστέρια!

MO: 4 (ψήφοι: 7)