SDB:Bumblebee

Перейти к: навигация, поиск

Проверено в openSUSE

Данная статья написана для версии Bumblebee 3.x. Версии ниже имеют существенные отличия и в некоторых случаях не соответствует нижеизложенному.

Optimus.jpg


Проект Bumblebee (шмель) представляет собой набор инструментов, разработанный с целью поддержки технологии Nvidia Optimus в Linux.

В начале не было ничего. Простые пользователи, имеющие железо с гибридной графикой и при этом не понимающие аппаратную часть железа, пребывали в недоумении, почему старые методы установки драйвера Nvidia теперь не работают — это проявлялось убитым 3D-ускорением, низким разрешением и т.д.

Первой концепцией поддержки гибридной графики в Linux было предоставлено статьей Дэйвом Эрли (Dave Airlie), разработчиком nouveau. Он назвал свой проект Prime, который являлся долгосрочным решением поддержки гибридной графики в Linux.

Затем Мартин Джул (Martin Juhl)предложил обходной путь, основанный на использовании проекта VirtualGL, где запуск приложений карточки Nvidia происходит за счёт использования дополнительного X-сервера и перенаправления 3D-рендеринга между иксами через буфер работающей карточки Intel. Изначально проект обзывался Prime-NG , но т. к. решение поддержки гибридной графики не было похоже на замысел проекта Prime, то проект был переименован в Bumblebee.

Проект развивался, увеличивалось число участников. Появлялись новые возможности, росла онлайн база, содержащая пользовательские конфигурации и т.д. И в какой-то момент некоторые из участников стали более активны по отношению к проекту, чем MrMEEE , считавшие, что команда будет работать куда лучше, чем единое хранилище пользователя, на котором только владелец может одобрять изменения — замедляет проект. В результате разногласия по поводу подхода развития привело к расколу проекта и возникновению команды — TBP/Bumblebee, в то время как MrMEEE продолжает свое развитие под именем Ironhide для Ubuntu.

По словам разработчиков: команда сосредоточена на разработке стабильной и надежной версии Bumblebee с четким разделением развития и стабильной ветки.

Репозитории

Внимание: Используется пользовательский проект службы сборки пакетов. Вы действуете на свой страх и риск!

Для загрузки необходимых пакетов воспользуйтесь следующими источниками:

Следует отметить, что начиная с версии openSUSE 13.2 Bumblebee находится и в стандартном репозитории дистрибутива.

Установка

Внимание: Никаких установок из официального репозитория NVIDIA и тем более самораспаковывающегося архива c именем NVIDIA-Linux-*.run. (см. NVIDIA), иначе должного результата не видать. Воспользуйтесь вышеприведенными ссылками, согласно версии Вашего дистрибутива.

Для проверки поддержки технологии Nvidia Optimus выполните:

$ /sbin/lspci -vnn | grep '\[030[02]\]' 

Если отображаются две строки, то Ваша аппаратная часть соответствует технологии.

Далее рассматривается установка с помощью консольного менеджера пакетов zypper (CLI), Вы также можете воспользоваться графическим инструментом YaST (GUI):

1. Добавьте репозитории Bumblebee и Nvidia:

# zypper ar -f <URI> Nvidia_Bumblebee   
  • где <URI> - одна из ссылок указанных выше, выберите в соответствии с Вашей версией дистрибутива openSUSE.
  • Вы можете просто скопировать нижеприведенную строку:
# zypper ar -f http://download.opensuse.org/repositories/X11:/Bumblebee\
/$(lsb_release -ds | grep -iwo '[a-z]\+ [a-z]\+ \?[.0-9]\?\+' | tr ' ' '_')/ Nvidia_Bumblebee

2. Обновите репо, скачиванием метаданных и преобразование их в кэш::

# zypper ref -f

3. Установите заголовочные и make файлы ядра:

# zypper in -f $(rpm -qa kernel-`uname -r|cut -f3 -d"-"`|sed 's/\([0-9].*\)/devel-\1/')
Внимание: Несоответствие версий devel-пакета c текущей версией ядра приведет к ошибкам установки драйвера nvidia. Обязательно сверьте версии пакетов, если используется центр управления YaST.

4. Установите драйвер и собственно сам проект:

# zypper in bumblebee primus bbswitch bbswitch-kmp-`uname -r|cut -f3 -d"-"` nvidia-bumblebee
Для запуска 32-х битных приложений в 64-х битной версии дистрибутива openSUSE, также необходимо установить следующие пакеты: VirtualGL-32bit libturbojpeg0-32bit nvidia-bumblebee-32bit primus-32bit

5. Удостоверьтесь, что в файле конфигурации /etc/bumblebee/bumblebee.conf используется драйвер nvidia:

Driver=nvidia 

6. Убедитесь, что пользователь находится в списке групп bumblebee и video:

$ groups $USER
~> groups $USER
zhniven : users video vboxusers bumblebee

7. Перезагрузитесь:

$ systemctl reboot

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

Перед вызовом клиента обязательно должен быть запущен демон:

# bumblebeed --daemon 

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

$ bumblebeed --help 

Для автоматического запуска Bumblebee во время загрузки системы выполните:

# systemctl enable bumblebeed

Чтобы использовать дискретную видеокарту Nvidia, выполните:

$ optirun <имя_приложения> 

Возможные проблемы

Как добавить пользователя в группу bumblebee и video?

Создайте в системе группу bumblebee:

# groupadd bumblebee
  • добавьте пользователя в список групп:
# usermod -a -G bumblebee,video $USER

Во время установки драйвера nvidia в консоли отображается приблизительно следующее:

Subprocess failed. Error: Сбой RPM: Error in checksums 796577654 3049051677...
error: %pre(dkms-nvidia-295.33-25.1.x86_64) scriptlet failed, exit status 254
error: dkms-nvidia-295.33-25.1.x86_64: install failed

Вероятней всего, Вы прервали установку, удалите самораспаковывающийся архив *.run и повторите установку снова:

# rm -f /usr/src/NVIDIA-Linux-*.run

Во время запуска bumblebeed --daemon в консоли появляется ошибка: [ERROR]Module 'nvidia' is not found?

Сравните версии пакетов:

$ rpm -qa kernel-`uname -r | cut -f3 -d"-"`* 

При попыткe задействовать карту с помощью клиента (optirun) в консоли появляется текст:

Failed to initialize the NVIDIA GPU at PCI:1:0:0. Please ...
Aborting because fallback start is disabled.

или

(EE) No devices detected

Возможные решения:

  • идентификатор шины BusID "PCI:1:0:0" может быть иным. Посмотрите последние строчки файла журналирование /var/log/messages;
  • убедитесь, что питание карты включено :
# cat /proc/acpi/bbswitch  
  • отредактируйте в файле конфигурации /etc/bumblebee/bumblebee.conf следующие строки:
TurnCardOffAtExit=true 
PMMethod=bbswitch

Не работают эффекты рабочего стола при использовании встроенной карты Intel?

  • удалите файл конфигурации xorg.conf сгенерированный утилитой nvidia-xconfig, если таковой имеется:
# rm -f /etc/X11/xorg.conf 
  • или переместите его
# mv /etc/X11/xorg.conf /etc/X11/xorg.conf.backup 

Не работают 3D-эффекты, а при запуске 3D-приложений в консоли сыпется: Xlib: extension "GLX" missing on display ":0"?

Возможные решения:

  • переустановите GLX библиотеки сервера Xorg и не только:
# zypper in -f xorg-x11-server mesa xorg-x11-driver-video mesa-libgl1

Нет никакой экономии энергии?

Убедитесь, что параметры загрузки ядра не содержат следующие: noacpi, pci=noacpi, acpi=off. Текущие параметры загрузки, Вы можете посмотреть, выполнив:

$ cat /proc/cmdline 

В логах появляется следующая ошибка:[ERROR]Cannot access secondary GPU - error: [XORG] (EE) [drm] failed to open device?

Если в системе установлен драйвер nvidia и при этом присутствует загруженный модуль nouveau, тогда убедитесь в следующем:

  • в наличии строчки Driver=nvidia конфигурационного файла /etc/bumblebee/bumblebee.conf
  • в системе должен присутствовать один из файлов с содержимым blacklist nouveau:
$ grep -R nouveau /etc/modprobe.d/*

Если же Вы хотите использовать драйвер nouveau, тогда см. логи.

Значения FPS optirun glxgears меньше, чем glxgears?

Попробуйте вместо инструмента для тестирования glxgears, воспользоваться optirun glxspheres. Для повышения FPS используйте различные методы сжатия, например:

$ optirun -c yuv glxspheres

Для просмотра вариантов обратитесь к справочной странице:

$ optirun --help
Обратите внимание, что по умолчанию используется автоматический метод ускорения рендеринга (Bridge=auto) файла конфигурации /etc/bumblebee/bumblebee.conf

Файлы

Конфигурация:

/etc/bumblebee/bumblebee.conf
/etc/bumblebee/xorg.conf.nouveau
/etc/bumblebee/xorg.conf.nvidia
/usr/bin/primusrun

Логи:

/var/log/Xorg.8.log
/var/log/messages