nVidia Optimus в linux (Гибридная графика nVidia + Intel)

 

Если у вас 2 видеокарты без поддержки технологии Optimus, вам эта статья НЕ поможет. Вы должны в ручную через Bios отключить одну из видеокарт!

Драйвера 319.12

 

В блоге проекта Bumblebee, в рамках которого развивается независимая реализация поддержки технологии NVIDIA Optimus в Linux, опубликована заметка с описанием ограничений возможностей проприетарного драйвера NVIDIA 319.12 в плане горячего переключения между GPU. В текущем состоянии драйвер NVIDIA позволяет осуществлять рендегинг только на GPU NVIDIA и транслировать вывод через LCD-порт, подключенный к GPU Intel. В настоящий момент не поддерживается управление питанием (невозможно обесточить карту NVIDIA), невозможен вынос отдельных операций рендеринга на GPU NVIDIA с использованием GPU Intel для рендеринга рабочего стола, невозможно без запуска отдельного X-сервера организовать горячее перенаправление вывода с порта, подключенного к GPU Intel (LCD-экран ноутбука), на порт, связанный с GPU NVIDIA (внешний монитор).

По сути в настоящий момент GPU Intel в связке с проприетарным драйвером NVIDIA ограничен лишь функциями вывода, без возможности экономии энергии за счёт задействования чипа NVIDIA только при необходимости для выполнения рендеринга интенсивно манипулирующих графикой приложений. Тем не менее, драйвер NVIDIA 319.12 пока находится на стадии бета-версии, поэтому не исключено, что в будущих тестовых выпусках ситуация изменится.

 


Содержание

  • О Технологии Optimus
  • О Проекте Bumblebee
  • Установка Bumblebee (Ubuntu 12.04.1)
  • Установка Bumblebee (Ubuntu 12.04.2)
  • Установка Bumblebee (Ubuntu 12.10)
  • Использование
  • Дополнительные Функции
  • Контроль Энергии
  • Удаление Bumblebee
  • Графический Интерфейс
  • Владельцам Lenovo IdeaPad Y470/Y570
  • Подключение через HDMI используя Bumblebee (Nvidia Optimus)
  • Primus (улучшенный optirun)
  • Новая версия Bumblebee 3.1
  • Драйвера Nvidia xxx.xx и Bumblebee
  • Альтернативный метод правки Nvidia и Bumblebee

О Технологии Optimus

Видеокарта Nvidia с поддержкой технологии Optimus была создана для оптимизации и увеличения заряда батареи. Принцип работы очень прост, при использовании ресурсоёмких приложений или игр Nvidia Optimus «забирает» на себя работу обработки изображения(но НЕ выводит его) вместо этого видеокарта Intel занимается выводом изображения на экран. Когда работы с такими(графическими) приложениями завершена, видеокарта Nvidia просто выключается.
Но не все так просто с Linux. Если в Windows поддержка такой технологии реализована и пользователю не надо думать когда стоит включить видеокарту Nvidia, она сама(видеокарта) выбирает когда нужна ее «помощь», то в Linux такого нет. К счастью нашлись люди, которые решили заняться поддержкой данной технологии.

О проекте Bumblebee

Проект Bumblebee нацелен на поддержку технологии Nvidia Optimus на ноутбуках с операционными системами GNU/Linux. Используя Bumblebee вы можете дать команду видеокарте Nvidia заняться процессом обработки изображения, которое потом будет выведено, через карту Intel.

Установка Bumblebee Ubuntu 12.04.1

Чтобы установить Bumblebee вам нужно открыть терминал и выполнить следующие команды

Код:
sudo add-apt-repository ppa:bumblebee/stable
добавим репозиторий Bumblebee для установки и получения обновлений. Это официальный репозиторий Bumblebee
Код: 

sudo add-apt-repository ppa:xorg-edgers/ppa
 sudo apt-get update
 sudo apt-get install nvidia-313
 sudo add-apt-repository -r ppa:xorg-edgers/ppa

репозиторий содержащий последнюю версию драйверов Nvidia(драйвера в этом репозитории ничем не отличаются от драйверов с официального сайта, кроме того, что уже сделаны в понятном для системы формате .deb для упрощения процесса установки и обновления)

Код:

 

sudo apt-get update

 

Код:

sudo apt-get install bumblebee bumblebee-nvidia

 

собственно сама установка Bumblebee и последних драйверов Nvidia.

Код:
sudo apt-get dist-upgrade

 

По завершении установки перезагрузитесь!

Установка Bumblebee Ubuntu 12.04.2

Из-за обновления стэка ядра и xorg на Ubuntu 12.04 до версии Quantal, невозможно было установить bumblebee из-за проблем с зависимостями, но решение было найдено пользователем на GitHub Neo5588.

Код: 
sudo add-apt-repository ppa:bumblebee/stable
Код: 
sudo add-apt-repository ppa:xorg-edgers/ppa
 sudo apt-get update
 sudo apt-get install nvidia-313
 sudo add-apt-repository -r ppa:xorg-edgers/ppa
Код: 

sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic-lts-quantalТаким образом у вас более не должно быть проблем с зависимостями при установке.

Установка Bumblebee (Ubuntu 12.10)
Не знаю что там разработчики Ubuntu сделали, но у всех пользователей Ubuntu 12.10 отсутствуют headers у ядра и по-этому нельзя запустить дискретную видеокарту. Чтобы это исправить bumblebee стоит ставить следующим образом

Код: 
sudo add-apt-repository ppa:bumblebee/stable
Код: 
sudo add-apt-repository ppa:xorg-edgers/ppa
 sudo apt-get update
 sudo apt-get install nvidia-313
 sudo add-apt-repository -r ppa:xorg-edgers/ppa
Код:
sudo apt-get update
Код: 
sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic
Код: 
sudo apt-get dist-upgrade

 

  Microsoft представит второе поколение планшетов Surface в конце июня


Использование

Чтобы запустить приложение, используя видеокарту Nvidia, откройте терминал и выполните команду

Код: 

optirun [options] [application-parameters]например, запустим браузер Firefox

Код: 
optirun firefox

 


Допольнительные функции
Для получения списка доступных опций введите в терминале

Код: 
optirun --help

 

Чтобы узнать активна или нет видеокарты Nvidia введите

Код: 
optirun --status

 

Чтобы попасть в меню настройки видеокарты Nvidia введите

Код: 
optirun nvidia-settings -c :8

 


Контроль энергии

Первичная цель проекта Bumblebee, это не дать возможность пользователю запускать «тяжелые» графические приложения используя видеокарту Nvidia, а обеспечить разумное использование энергии, когда видеокарта Nvidia отключена! Мы(то есть разработчики bumblebee) используем или bbswitch(модуль) или vga_switcheroo(модуль ядра, экспериментальный) для этого в Bumblebee.
Начиная с версии Bumblebee 3.0 мы используем модуль bbswitch по умолчанию для контроля расхода энергии, никакой дополнительной настройки не требуется!
Если, по каким-то причинам, у вас не работает автоматическое управление энергии пожалуйста посетите страницу (на английском) и помоги улучшить Bumblebee.

Удаление Bumblebee

Если вы хотите полностью удалить Bumblebee со своего компьютера выполните следующие команды в терминале

Код:
sudo apt-get purge bumblebee

 

удаление Bumblebee

Код:
sudo apt-get --purge autoremove

 

удаление более не используемых пакетов

Часто задеваемые вопросы

Можно ли использовать только видеокарту Nvidia?
Нет невозможно, так как видеокарта Nvidia отвечает только за обработку графических данных и изображений, выводом же занимается видеокарта Intel. Результат теста поддержки Unity 3D видеокарта Intel

Код: 
/usr/lib/nux/unity_support_test -p
  • OpenGL vendor string:   Tungsten Graphics, Inc
  • OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile
  • OpenGL version string:  3.0 Mesa 8.0.2
  • Not software rendered:    yes
  • Not blacklisted:          yes
  • GLX fbconfig:             yes
  • GLX texture from pixmap:  yes
  • GL npot or rect textures: yes
  • GL vertex program:        yes
  • GL fragment program:      yes
  • GL vertex buffer object:  yes
  • GL framebuffer object:    yes
  • GL version is 1.4+:       yes
  • Unity 3D supported:       yes

Результат теста поддержки Unity 3D видеокарта Nvidia

Код: 

optirun /usr/lib/nux/unity_support_test -p

  • OpenGL vendor string:   NVIDIA Corporation
  • OpenGL renderer string: GeForce GT 540M/PCIe/SSE2
  • OpenGL version string:  4.2.0 NVIDIA 295.40
  • Not software rendered:    yes
  • Not blacklisted:          yes
  • GLX fbconfig:             yes
  • GLX texture from pixmap:  no
  • GL npot or rect textures: yes
  • GL vertex program:        yes
  • GL fragment program:      yes
  • GL vertex buffer object:  yes
  • GL framebuffer object:    yes
  • GL version is 1.4+:       yes
  • Unity 3D supported:       no

Ключевым моментом здесь является строчка Unity 3D supported: yes в случае Intel Unity 3D поддерживается. В случае же с Nvidia мы получаем Unity 3D supported: no что говорит о невозможности запуска Unity 3D используя видеокарту Nvidia.

Как убедиться моя видеокарта серии Optimus или нет?
Как правило видеокарты начиная с серии 4ххМ (M = mobile мобильная) и новее уже содержать в себе технологию Optimus. Но имея видеокарту из этой серии может и не означать наличие Optimus. В ноутбуке должна еще присутствовать интегрированная видеокарта Intel. Чтобы проверить наличие данных видеокарт выполните следующую команду в терминале

Код: 
lspci -vnn | grep '\''[030[02]\]'

 


Если выводом является 2 строчки (If it outputs two lines) скорее всего у вас Nvidia Optimus. Если вы все равно не уверены, оставьте сообщение в этой теме и я вам скажу точно.

У меня не работают эффекты рабочего стола (куб, вязкие окна).
Если у вас создался файл

Код: 
/etc/X11/xorg.conf

 

при использовании

Код: 
nvidia-xconfig

 

просто удалите его так как он не совместим с Optimus

Код: 
sudo rm /etc/X11/xorg.conf

 


После установки bumblebee расход энергии остался такой же, как и до установки.
Убедитесь, что в параметрах загрузки ядра не стоят следующие функции.

Код: 

noacpi, pci=noacpi, acpi=offЧтобы проверить настройки ядра введите в терминале следующую команду

Код: 

/proc/cmdline
В сведениях о системе — графика — неизвестно. Это нормально?
Вполне, вопрос напрямую не связан с bumblebee, просто нужно до установить пакет mesa-utils
Откройте терминал и выполните команду

Код: 
sudo apt-get install mesa-utils

 

  GeForce GTX 650 Ti BOOST обзор и тест

и перезагрузите компьютер. После этого в сведениях о системе у вас появится Intel Sandy bridge (или иное название связанное с Intel). У всех обладателей видеокарт Intel в системе-графика стоит неизвестно до установки данного пакета.

Отправка багов и отчетов об ошибках

Если вы столкнулись с какими-то трудностями, при использовании bumblebee, вы можете
1)Присоединиться к каналу  #bumblebee по IRC и сообщить об ошибке
2)Или (если вас попросят после общения в канале IRC) выполнить следующую команду в терминале для создание отчета об ошибке (баг-репорт)

Код: 
sudo bumblebee-bugreport

 


Графический Интерфейс
Отличные новости народ, надеюсь что в скором будущем, у bumblebee появится графический интерфейс, вот скриншоты
(Внимание интерфейс еще на стадии разработки и внешний вид еще может поменяться!)


Прям как в Windows вы сможете отметить приложения, которые вы хотите, чтобы запускались используя видеокарту Nvidia!
Так же вы можете выставить условия при которых видеокарта Nvidia будет работать

  • Always(Perfomance) — Работает Всегда(Производительность)
  • Power Save — Сохранение Энергии (только когда ноутбук подключен к розетке)

Владельцам Lenovo IdeaPad Y470/Y570
Ввиду бага присутствующем в ядре Линукс, обладатели данных компьютеров не могут запустить видеокарту Nvidia. Разработчики bumblebee придумали «уродливый» хак, позволяющий временно, до появления исправлений в ядре, исправить эту ситуацию.
ВНИМАНИЕ, если у вас ноутбук отличный от Lenovo IdeaPad Y470/Y570 этот хак может испортить вашу систему.
И так приступим. Откройте терминал и выполните следующие команды.

Код:
sudo su
 sudo apt-get install git
 git clone git://github.com/Bumblebee-Project/bbswitch.git -b hack-lenovo
 cd bbswitch
 mkdir /usr/src/acpi-handle-hack-0.0.1
 cp Makefile acpi-handle-hack.c /usr/src/acpi-handle-hack-0.0.1
 cp dkms/acpi-handle-hack.conf /usr/src/acpi-handle-hack-0.0.1/dkms.conf
 dkms add acpi-handle-hack/0.0.1
 dkms build acpi-handle-hack/0.0.1
 dkms install acpi-handle-hack/0.0.1
 echo acpi-handle-hack | sudo tee -a /etc/modules
 sudo update-initramfs -u
 

 

после выполнения всех команд по порядку у вас должна заработать видеокарта Nvidia.

Ссылку на английский ман и файлы тут https://github.com/Bumblebee-Project/bbswitch/tree/hack-lenovo
За инструкцию и ссылку Спасибо FKGreen

Подключение через HDMI используя Bumblebee (Nvidia Optimus)
Многие хотели бы раскрыть полный потенциал карточек Nvidia Optimus, используя Ubuntu; в частности, использовать карточку Optimus для подключения через HDMI. Способ был найден, но довольно сложный. В инструкции ниже я покажу как используя вторую сессию с рабочем окружением LXDE перенести её на 2 подключенный монитор через HDMI. (Можно использовать любые другие графические окружения, но данная статья написано именно с использованием LXDE.)
Первая картинка это монитор от компьютера использующий Intel карту. Вторая картинка это монитор подключенный через HDMI выход использующий карточку Nvidia.


Что ж, перейдем от слов к делу.
ВНИМАНИЕ! Nvidia Optimus не может работать используя сессию с рабочим окружением Unity. По всей видимости это баг. (нельзя вывести через Optimus Unity на 2 монитор через HDMI)

1)Установить bumblebee

2)Установим дополнительную программу, которая позволит использовать клавиатуру и мышь при подключении через HDMI для этого в терминале выполните команду

Код: 
sudo apt-get install synergy lxde lxde-common

 

Данная команда установит программу synergy, а так же рабочее окружение LXDE.

3)Скачайте и переименуйте файл конфигурации в (.synergy.conf) для программы Synergy (прим: обратите внимание на точку перед названием файла, делающим его скрытым)

4)Скачайте скрипт, распакуйте архив в домашнюю папку (Home) для запуска второй сессии с рабочим окружением LXDE через HDMI выход.

5)Сделайте файл исполняемым.

Код: 
chmod +x ~/hdmi

 


6)Теперь, чтобы запустить hdmi через Optimus просто запустите скрипт командой

Код: 
~/hdmi

 


7)Дайте системе секунд 10 и после передвиньте вашу мышку на монитор подключенный через HDMI

ИЗВЕСТНЫЕ ПРОБЛЕМЫ!
1)При подключение через HDMI нет звука.
2)Вы не можете перетаскивать окна программ из одного монитора в другой.
3)При подключении HDMI на основном мониторе может продублироваться трэй, чтобы это исправить, сделайте следующее
В вашей основной сессии в автозагрузке прописать

Код:
for f in /etc/xdg/autostart/*; do if [[ ! `grep "NotShowIn=LXDE" $f` ]]; then echo "NotShowIn=LXDE;" | sudo tee -a $f; fi; done
 for f in ~/.config/autostart/*; do if [[ ! `grep "NotShowIn=LXDE" $f` ]]; then echo "NotShowIn=LXDE;" | tee -a $f; fi; done

 


Primus (bumblebee ppa)
Технология primus удваивает производительность и в два раза уменьшает энергопотребление при использовании bumblebee. Я проверил на своем компьютере и знаете что? время батарее увеличилось на 1 ЧАС, а FPS (кадры в секунду) возрасли. Дело в том что primus использует немного другую технологию для «включения» видеокарты Optimus.

  Intel представила новую 22-нм архитектуру для мобильных устройств - Silvermont

Разработчики bumblebee объяснили в чем разница между методом, которые использую они и который использует primus

 

Bumblebee использует VirtualGL для вывода изображения. Эта техналогия была задумана для использования по сети, тоесть чтобы вывести изображение нужно было (скопировать изображение, зжать, отправить по сети и вывести на монитор).
Primus же использует более «прямой» подход копируя изображение прямо на вторую видеокарту и выводя изображние. В Теории это должно дать прирост производительности так как Primus не выполняет «лишних» действий

 

Можно смело предположить, что для большинства пользователей Primus окажется плюсом. Но Почитав форумы и комментарии были пару человек, которые написали что не заметили никаких изменений до и после использовании данной технологии. Так что скорее резльтат у всех индивидуальный.

Primus стал частью Bumblebee. Так что более не нужно подключать сторонний репозиторий, а просто установить его из репозитория Bumblebee.

Код: 
sudo apt-get install primus
Код: 
sudo apt-get install primus-libs-ia32:i386

 


У тех кого подключен сторонний репозиторий, нужно его отключить и удалить Primus перед установкой Primus’a из репозитория Bumblebee, иначе будут проблемы с зависимостями.

Новая версия Bumblebee 3.1
Заметные изменения в версии 3.1
Поддержка Primus как алтератива VirtualGL.
Исправления для видеокарт с технологией Kepler.
Исправления для компьютеров с гибридными картами Nvidia. (Nvidia + Nvidia)
Исправлена проблема открытых драйверов с версии Xorg 1.13+
Исправлено сообщение о доступных драйверов (я так понимаю речь идет о Jockey)
Полный список изменений тут

Чтобы использовать Primus используя команду Optirun нужно выполнить следующие.
1) Установить Primus (очевидно :D )
2) Изменить параметр «Bridge» на «primus» в фаиле /etc/bumblebee/bumblebee.conf

если бы не можете найти такого параметра в конфигах нужно полностью переустановить Bumblebee с удалением конфигом. Как удалить, смотрим выше в разделеУдаление Bumblebee

Драйвера Nvidia xxx.xx и Bumblebee
Как-то упустил этот момент, думал что в гайде я написал, что сделать, для работы bumblebee и последних драйверов Nvidia, что-ж, давайте исправим это недорозумение  :)

Поскольку последнии драйвера Nvidia (на момент написания стаьти это драйвера 313.26) не всегда автоматически подхватываются bumblebee, нужно править конфиги для его корректной работы.

Для обновления драйвера нужно подключить репозиторий Xorg edgers и после обновления сразу его отключить, так как он содержит самые последении драйвера (и зачастую самые нестабильные версии драйверов Intel, X и так далее)

Код: 
sudo add-apt-repository ppa:xorg-edgers/ppa
 sudo apt-get update
 sudo apt-get install nvidia-xxx
 sudo add-apt-repository -r ppa:xorg-edgers/ppa

 


Вместо XXX вписываете основную версию драйвера (в версии это цифры стоящие до точки). Например

Код: 
sudo apt-get install nvidia-313

 

Этой командой мы установим драйвера 313.26

Далее нужно открыть конфиги bumblebee

Код: 
sudo gedit /etc/bumblebee/bumblebee.conf

 

замените Gedit на текстовый редактор в вашей ОС.
и поменяйте строчку

«Driver=»

 

на

«Driver=nvidia»

 

и поменяй везде сочитание слов

«nvidia-current»

 

на

«nvidia-xxx»

 

Где опять же XXX это версия драйвера до точки.
Сохраняем файл и готово!

Полный пример правки конфига bumlbebee для драйвера 313

 

Открой терминал и выполни

Код: 

sudo gedit /etc/bumblebee/bumblebee.confзамени Gedit на текстовый редактор в Kubuntu
и поменяй строчку

«Driver=»

 

на

«Driver=nvidia»

 

и поменяй везде сочитание слов

«nvidia-current»

 

на

«nvidia-313»

 

 

Primus для работы с Nvidia
Если у вас стоит primus, то для его правильной работы с этими драйвера тоже нужно поправить конфиг файл. Делается это так

Код: 
sudo gedit /usr/bin/primusrun

 

и заменой всех словосочетаний

nvidia-current

 

на

nvidia-xxx

 

где XXX версия драйвера. Сохраняем файл и готово!

Теперь просто перезагружаете компьютер и наслаждаетесь приростом проихводительности :)

Альтернативный метод Nvidia и Bumblebee
Этот способ не был мною проверен, его я нашел на форуме Steam. Вместо правки конфигов, делается простой симлинк на драйвер. Откройте терминал и выполните

Код:
sudo ln -s /usr/lib/nvidia-xxx/ /usr/lib/nvidia-current
 sudo ln -s /usr/lib32/nvidia-xxx/ /usr/lib32/nvidia-current

 

Опять же заменяя XXX на версию драйвера.

 

Источник: forum.ubuntu.ru

 

1 КОММЕНТАРИЙ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here