Ubuntu 14.10 и более поздние версии : там намного проще. Пожалуйста, смотрите этот ответ и мой комментарий ниже.
Примечание : это работает только в Ubuntu 13.04. Есть некоторые различия в 13.10.
Мне удалось подключить два внешних монитора (в дополнение к встроенной панели) к моему ThinkPad T430 в Ubuntu 13.04 с включенным Optimus («Переключаемая графика») (опция 3 в вашем списке). Мониторы подключены через интерфейс DVI, один из них повернут. В отличие от других решений, все мониторы подключены к одному оконному менеджеру, поэтому окна можно свободно перемещать между мониторами. Это достигает цели увеличения срока службы аккумулятора, если он отключен, и использования внешних мониторов, если он подключен.
Ключевая идея здесь:
- Внутренний графический адаптер отвечает за управление изображением (растровым изображением), которое фактически отображается
- По умолчанию все отображается на внутреннем графическом адаптере
- Приложения с GPU-ускорением используют дискретный графический адаптер, вывод копируется во внутренний графический адаптер
- Для каждого внешнего монитора внутренний графический адаптер обеспечивает «виртуальный» дисплей
- Вывод на внешние мониторы происходит с использованием второго X-сервера, содержимое «виртуальных» дисплеев постоянно копируется на второй X-сервер
Основное преимущество по сравнению с другими решениями заключается в том, что все дисплеи являются (по-видимому) частью одного сеанса X, поэтому вы можете свободно перемещать окна между дисплеями.
До сих пор я не заметил никакого снижения производительности.
инструкции
Вам нужно сделать следующее:
- Установите Шмель от PPA
- Сборка и установка пользовательского видео драйвера Intel
- Скачайте, скомпилируйте и, наконец, установите небольшую программу
- Редактировать два файла конфигурации
- Перезагрузиться несколько раз
Для большинства действий вам понадобится терминал, текстовый редактор и root-доступ ( sudo
). Подробные инструкции приведены ниже.
Установить шмель
Следуйте инструкциям в разделе «Основные настройки» . Выполните от имени пользователя root, последняя команда фактически инициирует перезагрузку:
add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot
Не пытайтесь запустить шмель только с драйвером nouveau? , Из моего опыта это не работает, по крайней мере, не в этой настройке.
Проверка
Вы должны быть в состоянии бежать optirun glxgears
.
Установите исправленную версию xserver-xorg-video-intel
Вариант 1: установка с моего PPA (в настоящее время только Ubuntu 13.04)
Выполните следующее от имени пользователя root:
add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel
Вариант 2. Сборка и установка собственного пакета
Выберите самый последний патч для xserver-xorg-video-intel
. Нажмите на файл, нажмите кнопку «Raw», скопируйте URL в браузер. На момент написания статьи это было 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
Проверка (1), для обоих вариантов
Команда
apt-cache policy xserver-xorg-video-intel
должна показать исправленную версию ( +virtual
суффикс) и оригинальную версию Ubuntu.
Необходимо для 13.04, для обоих вариантов
Добавьте следующее к вашему /etc/X11/xorg.conf
, создайте при необходимости:
Section "Device"
Identifier "intel"
Driver "intel"
Option "AccelMethod" "uxa"
Option "Virtuals" "2"
EndSection
Проверка (2), для обоих вариантов
После перезагрузки запустите xrandr
в терминале. Выходные данные должны содержать два дополнительных виртуальных дисплея.
Скачать и собрать скриншот
Получить ветку puetzk screenclone и его зависимости, и скомпилировать его.
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
Проверка
Файл screenclone
существует и является исполняемым. (Это еще не будет работать, хотя.)
редактировать xorg.conf.nvidia
тестирование
В моей настройке предполагается, что монитор ландшафта подключен к первому порту DVI док-станции, а портретный монитор подключен ко второму порту DVI. Выполните следующие команды в терминале из каталога, в котором находится screenclone , при необходимости измените его .
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
Обратите внимание, как поворот дисплея должен быть определен дважды. Вы можете опустить второй вызов, xrandr
если вращение не требуется (и, конечно, --rotate left
первый вызов).
После завершения screenclone
с помощью Ctrl + C (который был снова выведен на передний план с использованием fg
), дискретный графический адаптер отключается. Вы можете проверить это с cat /proc/acpi/bbswitch
. Тем не менее, пространство экрана зарезервировано для двух теперь отключенных мониторов. Чтобы переключиться обратно только на дисплей ноутбука, используйте
xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off
уборка
Скопируйте screenclone
в каталог, который находится в PATH
(например, /usr/local/bin
)
Создать bash
скрипт для автоматизации запуска и выключения внешних дисплеев. Этот скрипт настроит внешние дисплеи при запуске и переключится на дисплей ноутбука только при выходе (например, нажав 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
Альтернативный вариант: Моя коллекция скриптлетов содержит два сценария, extmon-start
и extmon-stop
, что включать и выключать второй и третий монитор. Отредактируйте extmon-start
скрипт в соответствии с вашей конфигурацией.
Ссылки
Мой ответ во многом опирается на следующие ресурсы: