Ubuntu 14.10 trở lên: Nó đơn giản hơn nhiều. Xin vui lòng xem câu trả lời này và bình luận của tôi dưới đây.
Lưu ý : Điều này chỉ hoạt động trong Ubuntu 13.04. Có một số khác biệt trong 13.10.
Tôi đã quản lý để kết nối hai màn hình ngoài (ngoài bảng điều khiển tích hợp) với ThinkPad T430 trên Ubuntu 13.04, với Optimus ("Đồ họa có thể chuyển đổi") được bật (tùy chọn 3 trong danh sách của bạn). Các màn hình được kết nối thông qua giao diện DVI, một trong số chúng được xoay. Ngược lại với các giải pháp khác, tất cả các màn hình được gắn vào cùng một trình quản lý cửa sổ, vì vậy các cửa sổ có thể được di chuyển tự do giữa các màn hình. Điều này đạt được mục tiêu tăng tuổi thọ pin nếu ngắt kết nối và sử dụng màn hình ngoài nếu được kết nối.
Ý tưởng chính ở đây là:
- Bộ điều hợp đồ họa bên trong chịu trách nhiệm quản lý hình ảnh (bitmap) thực sự được hiển thị
- Theo mặc định, mọi thứ được hiển thị trên bộ điều hợp đồ họa bên trong
- Các ứng dụng tăng tốc GPU sử dụng bộ điều hợp đồ họa rời, đầu ra được sao chép vào bộ điều hợp đồ họa bên trong
- Đối với mỗi màn hình ngoài, bộ điều hợp đồ họa bên trong cung cấp màn hình "ảo"
- Đầu ra cho màn hình ngoài xảy ra khi sử dụng máy chủ X thứ hai, nội dung từ màn hình "ảo" liên tục được sao chép sang máy chủ X thứ hai
Lợi ích chính so với các giải pháp khác là tất cả các màn hình (dường như) là một phần của cùng một phiên X, do đó bạn có thể tự do di chuyển các cửa sổ giữa các màn hình.
Cho đến nay tôi đã nhận thấy không có hình phạt hiệu suất.
Hướng dẫn
Bạn cần làm như sau:
- Cài đặt Bumblebee từ PPA
- Xây dựng và cài đặt trình điều khiển video Intel tùy chỉnh
- Tải xuống, biên dịch và cuối cùng cài đặt một chương trình nhỏ
- Chỉnh sửa hai tập tin cấu hình
- Khởi động lại nhiều lần
Đối với hầu hết các hành động, bạn sẽ cần một thiết bị đầu cuối, trình soạn thảo văn bản và quyền truy cập root ( sudo
). Hướng dẫn chi tiết được đưa ra dưới đây.
Cài đặt Bumblebee
Thực hiện theo phần "thiết lập cơ bản" của hướng dẫn . Thực thi với quyền root, lệnh cuối cùng thực sự khởi động quá trình khởi động lại:
add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot
Đừng cố chạy Bumblebee chỉ với trình điều khiển nouveau? . Theo kinh nghiệm của tôi, nó không hoạt động, ít nhất là không trong thiết lập này.
Thẩm định
Bạn sẽ có thể chạy optirun glxgears
.
Cài đặt phiên bản vá của xserver-xorg-video-intel
Tùy chọn 1: Cài đặt từ PPA của tôi (hiện chỉ có Ubuntu 13.04)
Thực hiện như sau là root:
add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel
Tùy chọn 2: Xây dựng và cài đặt gói của riêng bạn
Chọn bản vá gần đây nhất cho xserver-xorg-video-intel
. Nhấp vào tệp, nhấp vào nút "Nguyên", sao chép URL trong trình duyệt. Tại thời điểm viết bài, đây là 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
Xác nhận (1), cho cả hai tùy chọn
Lệnh
apt-cache policy xserver-xorg-video-intel
sẽ hiển thị phiên bản vá ( +virtual
hậu tố) và phiên bản Ubuntu gốc.
Cần thiết cho 13.04, cho cả hai tùy chọn
Thêm phần sau vào của bạn /etc/X11/xorg.conf
, tạo nếu cần thiết:
Section "Device"
Identifier "intel"
Driver "intel"
Option "AccelMethod" "uxa"
Option "Virtuals" "2"
EndSection
Xác nhận (2), cho cả hai tùy chọn
Sau khi khởi động lại, chạy xrandr
trong một thiết bị đầu cuối. Đầu ra nên liệt kê hai màn hình ảo bổ sung.
Tải xuống và xây dựng screenclone
Nhận ngã ba screenclone của puetzk và các phụ thuộc của nó, và biên dịch nó.
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
Thẩm định
Các tập tin screenclone
tồn tại và có thể thực hiện được. (Tuy nhiên, nó sẽ không chạy.)
Biên tập xorg.conf.nvidia
- Mở tệp
/etc/bumblebee/xorg.conf.nvidia
trong trình soạn thảo văn bản, với quyền root
- Nhận xét hoặc xóa các dòng đọc
UseEDID
hoặcUseDisplayDevice
- Trong
Section "ServerLayout"
, thêm một mụcScreen "Screen0"
Ở dưới cùng của tập tin, thêm vào như sau:
Section "Screen"
Identifier "Screen0"
Device "Device0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
Khởi động lại
Kiểm tra
Thiết lập của tôi giả định một màn hình ngang được kết nối với cổng DVI đầu tiên của trạm nối và một chân dung được kết nối với cổng DVI thứ hai. Chạy các lệnh sau trong một thiết bị đầu cuối từ thư mục nơi đặt screenclone , điều chỉnh khi cần thiết.
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
Lưu ý cách xoay màn hình phải được xác định hai lần. Bạn có thể bỏ qua lời gọi thứ hai xrandr
nếu không muốn quay (và dĩ nhiên, --rotate left
trong lần gọi thứ nhất).
Bằng cách kết thúc screenclone
bằng Ctrl + C (đã được đưa vào nền trước một lần nữa bằng cách sử dụng fg
), bộ điều hợp đồ họa rời sẽ bị tắt. Bạn có thể xác minh điều này với cat /proc/acpi/bbswitch
. Tuy nhiên, không gian màn hình được dành riêng cho hai màn hình bị ngắt kết nối. Để chỉ quay lại màn hình máy tính xách tay, hãy sử dụng
xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off
Dọn dẹp
Sao chép screenclone
vào một thư mục trong PATH
(ví dụ, /usr/local/bin
)
Tạo một bash
kịch bản để tự động hóa khởi động và tắt màn hình ngoài. Tập lệnh này sẽ thiết lập màn hình ngoài khi bắt đầu và chuyển sang màn hình máy tính xách tay chỉ khi thoát (ví dụ: bằng cách nhấn 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
Tùy chọn thay thế: Bộ sưu tập tập lệnh của tôi chứa hai tập lệnh extmon-start
và extmon-stop
cho phép và vô hiệu hóa màn hình thứ hai và thứ ba. Chỉnh sửa extmon-start
tập lệnh cho phù hợp với cấu hình của bạn.
Người giới thiệu
Câu trả lời của tôi phần lớn rút ra từ các tài nguyên sau: