Ubuntu 14.10 und höher: Es ist dort viel, viel einfacher. Bitte sehen Sie diese Antwort und meinen Kommentar unten.
Hinweis : Dies funktioniert nur in Ubuntu 13.04. Es gibt einige Unterschiede in 13.10.
Ich habe es geschafft, zwei externe Monitore (zusätzlich zum eingebauten Panel) an mein ThinkPad T430 unter Ubuntu 13.04 anzuschließen, wobei Optimus ("Umschaltbare Grafik") aktiviert war (Option 3 in Ihrer Liste). Die Monitore werden über die DVI-Schnittstelle angeschlossen, einer von ihnen wird gedreht. Im Gegensatz zu anderen Lösungen sind alle Monitore an denselben Fenstermanager angeschlossen, sodass die Fenster zwischen den Monitoren frei verschoben werden können. Dadurch wird das Ziel einer längeren Batterielebensdauer erreicht, wenn die Verbindung unterbrochen wird, und die Verwendung externer Monitore, wenn diese angeschlossen sind.
Die Schlüsselidee hier ist:
- Der interne Grafikadapter ist für die Verwaltung des tatsächlich angezeigten Bildes (Bitmap) verantwortlich
- Standardmäßig wird alles auf dem internen Grafikadapter gerendert
- GPU-beschleunigte Anwendungen verwenden den diskreten Grafikadapter. Die Ausgabe wird auf den internen Grafikadapter kopiert
- Für jeden externen Monitor bietet der interne Grafikadapter eine "virtuelle" Anzeige
- Die Ausgabe auf die externen Monitore erfolgt über einen zweiten X-Server, die Inhalte der "virtuellen" Displays werden ständig auf den zweiten X-Server kopiert
Der Hauptvorteil gegenüber anderen Lösungen besteht darin, dass alle Anzeigen (scheinbar) Teil derselben X-Sitzung sind, sodass Sie Fenster frei zwischen den Anzeigen verschieben können.
Bisher habe ich keine Leistungseinbußen festgestellt.
Anleitung
Sie müssen Folgendes tun:
- Installieren Sie Bumblebee von einem PPA
- Erstellen und installieren Sie einen benutzerdefinierten Intel-Grafiktreiber
- Laden Sie ein kleines Programm herunter, kompilieren Sie es und installieren Sie es schließlich
- Bearbeiten Sie zwei Konfigurationsdateien
- Mehrmals neu starten
Für die meisten Aktionen benötigen Sie ein Terminal, einen Texteditor und Root-Zugriff ( sudo
). Detaillierte Anweisungen finden Sie unten.
Installieren Sie Bumblebee
Folgen Sie den Anweisungen im Abschnitt "Grundeinstellungen" . Als root ausführen, der letzte Befehl leitet den Neustart ein:
add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot
Versuchen Sie nicht, Bumblebee nur mit dem Nouveau-Treiber zu betreiben? . Nach meiner Erfahrung funktioniert es nicht, zumindest nicht in diesem Setup.
Validierung
Sie sollten in der Lage sein zu rennen optirun glxgears
.
Installieren Sie eine gepatchte Version von xserver-xorg-video-intel
Option 1: Installation von meinem PPA (derzeit nur Ubuntu 13.04)
Führen Sie als root Folgendes aus:
add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel
Option 2: Erstellen und installieren Sie Ihr eigenes Paket
Wählen Sie den neuesten Patch für xserver-xorg-video-intel
. Klicken Sie auf die Datei, klicken Sie auf die Schaltfläche "Raw", kopieren Sie die URL in den Browser. Zum Zeitpunkt des Schreibens war dies https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch .
sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
sudo dpkg --install xserver-xorg-video-intel_*.deb
Validierung (1) für beide Optionen
Der Befehl
apt-cache policy xserver-xorg-video-intel
sollte die gepatchte Version ( +virtual
Suffix) und die ursprüngliche Ubuntu-Version anzeigen.
Notwendig für 13.04, für beide Optionen
Fügen Sie Folgendes zu Ihrer hinzu /etc/X11/xorg.conf
, erstellen Sie falls erforderlich:
Section "Device"
Identifier "intel"
Driver "intel"
Option "AccelMethod" "uxa"
Option "Virtuals" "2"
EndSection
Validierung (2) für beide Optionen
Führen Sie nach einem Neustart xrandr
ein Terminal aus. Die Ausgabe sollte zwei zusätzliche virtuelle Anzeigen enthalten.
Laden Sie den Screenclone herunter und erstellen Sie ihn
Holen Sie sich Puetzks Fork of Screenclone und seine Abhängigkeiten und kompilieren Sie es.
sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make
Validierung
Die Datei screenclone
existiert und ist ausführbar. (Es wird jedoch noch nicht ausgeführt.)
Bearbeiten xorg.conf.nvidia
Testen
Bei meinem Setup wird davon ausgegangen, dass ein Querformatmonitor an den ersten DVI-Anschluss der Dockingstation und ein Hochformatmonitor an den zweiten DVI-Anschluss angeschlossen ist. Führen Sie die folgenden Befehle in einem Terminal aus dem Verzeichnis aus, in dem sich screenclone befindet , und passen Sie sie nach Bedarf an.
xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg
Beachten Sie, wie die Anzeigedrehung zweimal definiert werden muss. Sie können den zweiten Aufruf von weglassen, xrandr
wenn keine Drehung gewünscht wird (und natürlich den --rotate left
im ersten Aufruf).
Durch Beenden screenclone
mit Strg + C (das mit erneut in den Vordergrund gestellt wurde fg
) wird der diskrete Grafikadapter abgeschaltet. Sie können dies mit bestätigen cat /proc/acpi/bbswitch
. Für die beiden nun getrennten Monitore ist weiterhin Platz auf dem Bildschirm reserviert. Verwenden Sie, um nur zur Laptop-Anzeige zurückzukehren
xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off
Aufräumen
Kopieren Sie screenclone
in ein Verzeichnis, das sich in PATH
(z. B. /usr/local/bin
) befindet.
Erstellen Sie ein bash
Skript, um das Starten und Herunterfahren der externen Anzeigen zu automatisieren. Dieses Skript richtet externe Anzeigen beim Start ein und wechselt erst beim Beenden zur Laptop-Anzeige (z. B. durch Drücken von Strg + C).
#!/bin/bash
set -m
xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg
Alternative Option: Meine Sammlung von Scriptlets enthält zwei Scripts extmon-start
und extmon-stop
, die den zweiten und dritten Monitor aktivieren und deaktivieren. Bearbeiten Sie das extmon-start
Skript entsprechend Ihrer Konfiguration.
Verweise
Meine Antwort stützt sich hauptsächlich auf folgende Quellen: