На Thinkpad T530 есть два порта для подключения внешних мониторов: VGA и miniDP (Display Port). Если ноутбук с дискретной графикой, то DP разведён на дискретную карту nVidia, соответственно без шаманства графику туда не выведешь.
Полное и законченное описание подключения и вывода по ссылке:
http://www.unixreich.com/blog/2013/linux-nvidia-optimus-on-thinkpad-w520w530-with-external-monitor-finally-solved/
Если коротко, то в современных реалиях от туда нужно брать только часть информации. К примеру:
- Теперь не нужно отказываться от
bbswitch
как средств сбережения питания в настройках Bumblebee. - Не нужно принудительно оставлять запущенным X-сервер на дискретной карте
Это всё при условии современного intel-virtual-outputs
. Т.е. рекомендацию по сборке оного из статьи выше взять нужно:
sudo apt-get install xorg-dev git autoconf automake libtool
git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-intel
cd xf86-video-intel
./autogen.sh
cd tools
make
sudo cp intel-virtual-output /usr/bin/
sudo chmod +x /usr/bin/intel-virtual-output
В сухом остатке - у нас всё будет работать практически при дефолтной установке Bumblebee. Но ложка дёгтя есть. Или, даже, пара.
Дело в том, что для того, что бы optirun
работал без подключенного физического монитора в новых версиях Bumblebee в конфиге /etc/bumblebee/xorg.conf.nvidia
появилась строка:
Option "UseDisplayDevice" "none"
Всё хорошо, но она мешает работе intel-virtual-output
: он запускается без ошибок, но монитор, покдлюченный к miniDP порту в упор не видит((поправочка: ошибка всё же есть, если запускать с ключём -f
от программа сразу завершает свою работу, а без данного ключа - не остаётся в режиме демона)). Коментируешь строку, перезапускаешь - всё работает. Понять - какой вариант использовать и как это сделать автоматически, я пока не знаю. Точнее задумка есть: при подключении монитора к miniDP прилетает ACPI эвент, мол монитор есть. Если монитор подключен, то optirun
будет работать. Проблема в том, что при отключении ничего не прилетает. Так бы было возможно настроить обработчик acpid и подменять конфигурационные файлы.
В сухом остатке: нужно всегда выбирать, или работаем с внешним монитором, тогда конфиг без этой строки. Или работает без внешнего монитора, тогда конфиг с этой строкой. В противном случае, что-то откажется работать: или optirun
без подключенного монитора, или монитор через intel-virtual-outputs.
В рекомендациях Bumblebee ещё говорят включить эти опции при работе с внешним монитором, я их решил не игнорировать:
# в секции ServiceLayout
Option "AutoAddDevices" "true"
# в секции Device
Option "UseEDID" "true"
Есть ещё мнение, что с intel-virtual-outputs
где-то кешируются и не перенстраиваются параметры монитора, поэтому переключение другого монитора требует рестарта иксов. Проблема пока не проверена.
Всё выше проверено на стеке Xorg lts-vivid и lts-wily в Linux Mint 17.3. Ядро 4.6.3.
К слову, утилита intel-virtual-outputs
поставляется вместе с драйверами для карты Intel в этих стеках. На lts-vivid она не работает, на lts-wily - работает. Но лучше собирать самому.
При изменении стека обязательно нужно выбрать Mesa в качестве альтернативы для OpenGL:
sudo update-alternatives --config i386-linux-gnu_gl_conf
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
sudo ldconfig
иначе не будет ни технологии Optimus, не OpenGL даже для встроенной видео карты: альтернатива nvidia имеет куда больший приоритет.
2016-08-26: к слову, помимо отсутствия Optimus и вообще OpenGL у вас может начать валиться Cinnamon с сообщением в ~/.xsession-errors:
(cinnamon:2813): Clutter-CRITICAL **: Unable to initialize Clutter: <тут может быть любой текст>
Он вообще как-то странно относится к драйверам nVidia(( раз, два и вообще достаточно много такого)), а тут ещё подстава: драйвера одни (точнее реализации OpenGL), а карта вообще другая.
Столкнулся после обновления на Mint 18 с 17.3, путём превращения системы в фарш и лепки пельменей из неё обратно.
Ещё, модули ядра, если вздумали попробовать свежие драйвера nVidia из линейки 367, то крайне желательно создать файл /etc/modprobe.d/bumblebee-367.conf
с таким, примерно, содержимым:
# 367
blacklist nvidia-367
blacklist nvidia-367-updates
blacklist nvidia-experimental-367
# Workaround to make sure nvidia-uvm is removed as well
remove nvidia rmmod nvidia_uvm nvidia_drm nvidia_modeset nvidia
softdep nvidia_367 post: nvidia_367_modeset nvidia_367_drm nvidia_367_uvm
что бы появилась возможность у Bumblebee выгружать все части nVidia.
Кроме того, стоит запретить работу gpu-manager
и снести /etc/X11/xorg.conf
, который генерируется им:
echo manual | sudo tee /etc/init/gpu-manager.override
sudo service gpu-manager stop
sudo rm -f /etc/X11/xorg.conf
А то он очень хочет сделать вам nVidia карту основной. На ноутбуке, я думаю, карты меняются сильно не часто, и прожить без этой чудо утилиты вполне реально.
Стоить отметить, что за год стабильность работы значительно улучшилась. А если придумать способ автоматической подмены конфигурации Xorg для Bumblebee, то ещё и работает без привbлегий root.
Материалы:
- http://www.unixreich.com/blog/2013/linux-nvidia-optimus-on-thinkpad-w520w530-with-external-monitor-finally-solved/
- https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup
- http://www.thinkwiki.org/wiki/DisplayPort
- http://askubuntu.com/questions/380844/intel-virtual-output-command-for-saucy-13-10-with-dual-monitor-setup-and-hybrid
- https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1247528
- http://askubuntu.com/questions/103564/external-displays-with-bumblebee
- http://askubuntu.com/questions/105582/how-do-i-set-up-a-second-display-via-dvi-viewport-with-a-lenovo-t420s