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скрипт в соответствии с вашей конфигурацией.
Ссылки
Мой ответ во многом опирается на следующие ресурсы: