Ubuntu 14.10 dan yang lebih baru: Jauh lebih sederhana di sana. Silakan lihat jawaban ini dan komentar saya di bawah ini.
Catatan : Ini hanya berfungsi di Ubuntu 13.04. Ada beberapa perbedaan dalam 13.10.
Saya telah berhasil menghubungkan dua monitor eksternal (selain panel bawaan) ke ThinkPad T430 saya di Ubuntu 13.04, dengan Optimus ("Switchable graphics") diaktifkan (opsi 3 dalam daftar Anda). Monitor terhubung melalui antarmuka DVI, salah satunya diputar. Berbeda dengan solusi lain, semua monitor terpasang pada window manager yang sama, sehingga windows dapat dipindahkan secara bebas di antara monitor. Ini mencapai tujuan masa pakai baterai yang ditingkatkan jika terputus dan menggunakan monitor eksternal jika terhubung.
Ide kuncinya di sini adalah:
- Adaptor grafis internal bertanggung jawab untuk mengelola gambar (bitmap) yang sebenarnya ditampilkan
- Secara default, semuanya ditampilkan pada adaptor grafis internal
- Aplikasi akselerasi GPU menggunakan adaptor grafis diskrit, output disalin ke adaptor grafis internal
- Untuk setiap monitor eksternal, adaptor grafis internal menyediakan tampilan "virtual"
- Output ke monitor eksternal terjadi menggunakan server X kedua, konten dari tampilan "virtual" secara konstan disalin ke server X kedua
Manfaat utama dibandingkan solusi lain adalah bahwa semua tampilan (tampaknya) adalah bagian dari sesi X yang sama, sehingga Anda dapat dengan bebas memindahkan jendela di antara layar.
Sejauh ini saya tidak melihat penalti kinerja.
Instruksi
Anda perlu melakukan hal berikut:
- Instal Bumblebee dari PPA
- Bangun dan pasang driver video Intel khusus
- Unduh, kompilasi, dan akhirnya instal program kecil
- Edit dua file konfigurasi
- Mulai ulang beberapa kali
Untuk sebagian besar tindakan, Anda akan memerlukan terminal, editor teks, dan akses root ( sudo
). Instruksi lengkap diberikan di bawah ini.
Pasang Bumblebee
Ikuti bagian "pengaturan dasar" dari instruksi . Eksekusi sebagai root, perintah terakhir sebenarnya memulai reboot:
add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot
Jangan coba-coba Jalankan lebah dengan pengemudi nouveau saja? . Dari pengalaman saya itu tidak berfungsi, setidaknya tidak dalam pengaturan ini.
Validasi
Anda harus bisa berlari optirun glxgears
.
Instal versi tambalan xserver-xorg-video-intel
Opsi 1: Instal dari PPA saya (saat ini hanya Ubuntu 13.04)
Jalankan yang berikut ini sebagai root:
add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel
Opsi 2: Bangun dan instal paket Anda sendiri
Pilih tambalan terbaru untuk xserver-xorg-video-intel
. Klik file, klik tombol "Raw", salin URL di browser. Pada saat penulisan, ini adalah 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
Validasi (1), untuk kedua opsi
Perintah
apt-cache policy xserver-xorg-video-intel
harus menunjukkan versi yang ditambal ( +virtual
suffix) dan versi Ubuntu asli.
Diperlukan untuk 13,04, untuk kedua opsi
Tambahkan yang berikut ke Anda /etc/X11/xorg.conf
, buat jika perlu:
Section "Device"
Identifier "intel"
Driver "intel"
Option "AccelMethod" "uxa"
Option "Virtuals" "2"
EndSection
Validasi (2), untuk kedua opsi
Setelah reboot, jalankan xrandr
di terminal. Keluaran harus mencantumkan dua tampilan virtual tambahan.
Unduh dan bangun screenclone
Dapatkan garpu screenclone dari puetzk dan dependensinya, dan kompilasi.
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
Validasi
File screenclone
ada dan dapat dieksekusi. (Namun, itu belum berjalan.)
Edit xorg.conf.nvidia
- Buka file
/etc/bumblebee/xorg.conf.nvidia
dalam editor teks, sebagai root
- Komentari atau hapus baris yang membaca
UseEDID
atauUseDisplayDevice
- Di
Section "ServerLayout"
, tambahkan entriScreen "Screen0"
Di bagian bawah file, tambahkan berikut ini:
Section "Screen"
Identifier "Screen0"
Device "Device0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
Mulai ulang
Pengujian
Pengaturan saya mengasumsikan monitor lanskap terhubung ke port DVI pertama dari stasiun dok, dan potret yang terhubung ke port DVI kedua. Jalankan perintah berikut di terminal dari direktori tempat screenclone berada , sesuaikan seperlunya.
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
Perhatikan bagaimana rotasi tampilan harus didefinisikan dua kali. Anda dapat menghilangkan doa kedua xrandr
jika tidak ada rotasi yang diinginkan (dan, tentu saja, --rotate left
dalam doa pertama).
Dengan mengakhiri screenclone
dengan Ctrl + C (yang telah dimasukkan ke latar depan menggunakan fg
), adaptor grafis diskrit dimatikan. Anda dapat memverifikasi ini dengan cat /proc/acpi/bbswitch
. Namun, ruang layar disediakan untuk dua monitor yang sekarang terputus. Untuk beralih kembali ke layar laptop saja, gunakan
xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off
Membersihkan
Salin screenclone
ke direktori yang ada di PATH
(misalnya, /usr/local/bin
)
Buat bash
skrip untuk mengotomatiskan startup dan shutdown tampilan eksternal. Skrip ini akan mengatur tampilan eksternal saat start dan beralih ke display laptop hanya pada saat keluar (mis. Dengan menekan Ctrl + 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
Pilihan alternatif: Kumpulan skrip saya berisi dua skrip, extmon-start
dan extmon-stop
, yang mengaktifkan dan menonaktifkan monitor kedua dan ketiga. Edit extmon-start
skrip yang sesuai dengan konfigurasi Anda.
Referensi
Jawaban saya sebagian besar diambil dari sumber berikut: