Как установить и пользоваться bumblebee как включить nvidia optimus в linux

Обновлено: 05.07.2024

Bumblebee — решение, позволяющее задействовать NVIDIA Optimus в ноутбуках с GNU/Linux, что включает в себя два графических адаптера с двумя разными профилями энергопотребления, использующих общий фреймбуфер.

Примечание: Рассмотрите nvidia-xrun (Русский) или PRIME в качестве альтернативы, так как у Bumblebee присутствуют значительные проблемы с производительностью[1][2] и не планируется поддержка Vulkan[3].

This article or section needs expansion.

Reason: Что такое "primus_vk" и как его можно использовать с Bumblebee? См. также primus-vk-git AUR (Discuss in Talk:Bumblebee (Русский))

Contents

Bumblebee: Optimus для Linux

Optimus реализует технологию гибридной графики без аппаратного коммутатора. Интегрированная видеокарта выводит на экран,в то время,как дискретная видеокарта занимается рендерингом, который требует более высокой вычислительной мощности графического процессора. Технология NVIDIA Optimus дает большую производительность, сберегая при этом заряд батареи, подключая дискретный графический процессор, когда это требуется.

Bumblebee — программное решение, базирующееся на VirtualGL и драйверах ядра, позволяющее использовать дискретный GPU, не имеющий физического подключения к экрану.

Bumblebee реализует технологию Optimus в два шага:

  • Дискретная видеокарта производит рендеринг на виртуальном дисплее, в то время как выводом на экран занимается интегрированная видеокарта.
  • Дискретная видеокарта отключается от питания, когда ее вычислительная способность не требуется.

Установка

Перед установкой Bumblebee убедитесь, что поддержка NVIDIA Optimus включена в настройках BIOS, а дисплей подключён к интегрированной видеокарте.

Также включите репозиторий multilib для поддержки 32-битных приложений и установите:

  • lib32-virtualgl — виртуальный дисплей для рендеринга в 32-битных приложениях.
  • lib32-nvidia-utils или lib32-nvidia-340xx-utilsAUR (должен соответствовать версии обычного драйвера NVIDIA).

Чтобы использовать Bumblebee, необходимо добавить обычного пользователя в группу bumblebee :

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

Тестирование

Примечание: Для использования glxgears и glxspheres32 , glxspheres64 требуется установить пакет mesa-demos

Если это не сработало

Примечание: Если glxgears не запустилось,а glxspheresXX работает, используйте glxspheresXX во всех случаях

Запуск программ

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

Настройка

Вы можете настраивать bumblebee под свои нужды, редактируя /etc/bumblebee/bumblebee.conf

Оптимизация скорости

Использование VirtualGL в качестве 'моста'

Bumblebee отрисовывает, используя дискретную видеокарту NVIDIA на виртуальном дисплее с помощью VirtualGL,а затем отрисовка происходит на 'реальном' дисплее, когда интегрированная видеокарта передает изображение на X Server . Для увеличения скорости передачи 'Виртуальный дисплей'->'X Server' можно использовать различные методы сжатия,вызывая optirun с опцией -c

Методы со сжатием:

Методы без сжатия

Таблица производительности с ASUS N550JV приложение для тестирования: unigine-heaven AUR :

Command FPS Score Min FPS Max FPS
optirun unigine-heaven 25.0 630 16.4 36.1
optirun -c jpeg unigine-heaven 24.2 610 9.5 36.8
optirun -c rgb unigine-heaven 25.1 632 16.6 35.5
optirun -c yuv unigine-heaven 24.9 626 16.5 35.8
optirun -c proxy unigine-heaven 25.0 629 16.0 36.1
optirun -c xv unigine-heaven 22.9 577 15.4 32.2

Для использования метода сжатия по-умолчанию выставьте переменную VGLTransport c параметром compress-method в /etc/bumblebee/bumblebee.conf :

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

Primus позволяет увеличить производительность и энергосбережение за счет неиспользования VirtualGL. Преимущества Primus перед стандартным Optirun :

  • уменьшенное использование дополнительных ресурсов (увеличена частота кадров) и оптимизированное решение (без сетевых процессов или процессов сжатия)
  • отсутствие бага с преждевременным выключением GPU
  • более стабильный,нежели Optirun , а также более прост в отладке
  • дискретная видеокарта используется только для обработки OpenGL,вся остальная информация обрабатывается и хранится в интегрированном графическом процессоре
Примечание: Для использования primus понадобится пакет primus .
  • Для запуска 32-битных приложений на 64-битной машине понадобится пакет lib32-primus (Должен быть подключен Multilib (Русский))

Пример запуска glxspheres32 :

Для запуска приложения с ипользованием VirtualGL используйте:

Энергосбережение

Для регулировки потребления энергии на десктопном ПК используется пакет bbswitch

Примечание: Bumblebee не умеет регулировать потребление энергии на ПК самостоятельно.

Для настройки включения и отключения видеокарты редактируйте опции load_state и unload_state . Подробнее смотрите BBSwitch-документация.

Некорректная инициализация запуска видеокарты NVIDIA

Для более подробного разбора всех возможностей Bumblebee посетите английскую ветку wiki: bumblebee

Решение проблем

Примечание: Пожалуйста, сообщайте об ошибках на GitHub-странице Bumblebee-Project в соответствии с его вики-разделом.

[VGL] ERROR: Could not open display :8

Проблема заключается в VirtualGL, в этом случае можно использовать primus

Если использование драйвера NVIDIA решило проблему,то отредактируйте файл /etc/bumblebee/xorg.conf.nvidia и измените опцию ConnectedMonitor на CRT-0 .

Xlib: extension "GLX" missing on display ":0.0"

Если вы установили видеодрайвер с сайта NVIDIA, то проделайте следующее:

1. Удалите драйвер:

2. Удалите сгенерированный NVIDIA конфигурационный файл Xorg:

[ERROR]Cannot access secondary GPU: No devices detected

В этом случае вам следует переместить файл /etc/X11/xorg.conf.d/20-intel.conf куда-нибудь в другое место,а затем перезапустите the bumblebeed демона и это должно сработать. Если же вам нужны настройки модулей Intel, то соедините файл /etc/X11/xorg.conf.d/20-intel.conf c /etc/X11/xorg.conf .

Закомментируйте строку Drive в /etc/X11/xorg.conf.d/10-monitor.conf .

Если вы используете драйвер nouveau попробуйте поменять его на nvidia драйвер.

Вам требуется обозначить видеокарту (в конфигурационных файлах /etc/X11/xorg.conf.d ), используя корректный BusID получив его выводом команды lspci ;

NVIDIA(0): Failed to assign any connected display devices to X screen 0

Вы должны поменять эту строку в /etc/bumblebee/xorg.conf.nvidia :

Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)

Добавьте rcutree.rcu_idle_gp_delay=1 в kernel parameters из конфигурации загрузчика (подробнее BBS post для примера).

Could not load GPU driver

И вы пробуете загрузить модуль nvidia, но получаете это:

NOUVEAU(0): [drm] failed to set drm interface version

Примите во внимание то,что nouveau драйвер в стадии тестирования. Как написано тут: here, лучшим выходом будет - установка официального драйвера nvidia.

/dev/dri/card0: failed to set DRM interface version 1.4: Permission denied

Это можно решить, добавив в /etc/bumblebee/xorg.conf.nvidia несколько строк. (Подробнее тут):

ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored

Вы пытаетесь запустить 32-битное приложение. Решит проблему запуск приложения через primus

Установлен проприетарный драйвер NVIDIA, но видеокарта не используется

К сожалению, вопросы установки проприетарных драйверов для видеокарт на Linux до сих пор не так безболезненны, как на Windows. Но я столкнулся с ещё более запутанной ситуацией: после успешной установки драйверов, не получается задействовать, использовать видеокарту NVidia.

Симптомы проблемы следующие:

  • драйвера для видеокарты NVidia успешно установились
  • система загружается и прекрасно работает
  • но используется видео ядро центрального процессора Intel, а видеокарта NVidia не используется
  • попытки переключиться на NVidia либо не приносят успеха, либо приводят к чёрному экрану (когда иксы, графическая оболочка, не могут загрузиться)
  • программы использующие CUDA (например, Hashcat) прекрасно работают

Чуть подробнее о последнем пункте. Для меня видеокарта представляет главный интерес для брут-форса (взлома) хешей паролей. И эта функция работает, видеокарта нагружена, Hashcat показывает устройство видеокарты как успешно используемое, высокая скорость брут-форса паролей. Именно по этой причине я уже полтора года (!) после установки проприетарного драйвера NVidia не догадывался, что у меня какие-либо проблемы.

И всё-таки драйвер NVidia работает

Я могу убедиться в этом, поскольку срабатывала команда

А также успешно работали приложения, использующие CUDA. Для всех других задач я не мог задействовать видеокарту NVidia.

Какую видеокарту, встроенную в центральный процессор или выделенную выбирает Linux?

Некоторые видеокарты от NVidia поддерживают технологию NVIDIA Optimus. Суть этой технологии в том, что программное обеспечение автоматически переключается на интегрированную (Intel) или выделенную (NVidia) видеокарту. На таких системах всё довольно просто — по крайней мере в теории. Нужная видеокарта может выбираться множество раз во время работы Linux.

Но на компьютерах без NVIDIA Optimus видеокарта выбирается настройками пользователя, либо по умолчанию используется графика Intel.

Как узнать, какая видеокарта используется в Linux

Есть несколько команд, которые покажут, какая видео карта используется:

Эта же самая команда, но запущенная через optirun из пакета Bumblebee:

Пример вывода, в котором показано, что задействована видеокарта NVIDIA:

Подробнее о optirun и Bumblebee будет позже.

Ещё одна команда, которая выводит информацию об используемой видеокарте (и прикольный треугольник в качестве бонуса):


С помощью команды lspci и определённых опций можно вывести информацию об устройствах, на конце строки с используемой видеокартой должно быть [VGA controller]. Команда для фильтрации данных:

Как проверить, используется ли видеокарта NVIDIA

Следующая команда покажет процессы, которые использует видеокарта NVIDIA (если процессов нет, значит видеоадаптер не используется):

Ещё одна команда, которая показывает процессы, потребляющие ресурсы видеокарты NVIDIA, а также уровень её загруженности, температуру и другие метрики:

Как установить видео драйвер NVidia в Linux

Для установки проприетарного драйвера NVidia в Kali Linux выполните команды:

Возможно, этот же способ будет работать и для Debain и других производных.

Для установки драйвера NVidia в Arch Linux, BlackArch и их производные выполните команду:

Кроме указанных, дополнительно будут установлены пакеты nvidia-utils и opencl-nvidia. Если вам не нужен CUDA, то не устанавливайте пакет cuda.

Как установить и пользоваться Bumblebee (как включить NVIDIA Optimus в Linux)

Если ваша карта там есть, то переходите к выполнению следующих команд. У вас уже должен быть установлен проприетарный драйвер NVIDIA, как это показано выше.

На Kali Linux, Debian и их производных выполните:

В ПРОЦЕССЕ ПОДГОТОВКИ

На Arch Linux, BlackArch и их производных выполните:

Система зависает после установки Bumblebee

Я столкнулся с проблемой, что Bumblebee в принципе работает, но при использовании некоторых команд, которые задействуют CUDA или обращаются к модулям ядра, система зависала. Чтобы проверить, есть ли у вас эта проблема, выполните команду lspci, например:

Если система полностью зависнет, то перезагрузитесь и удалите пакет bbswitch.

Вместо удаления bbswitch вы можете попробовать в опции загрузки ядра добавить строку:

Для этого создайте файл /etc/modprobe.d/options.conf:

и скопируйте в него:

Но у меня сработало только удаление bbswitch.

Как пользоваться Bumblebee / NVIDIA Optimus в Linux

Теперь любую программу, которая должна использовать видеокарту NVIDIA, можно запустить командой вида:

Когда optirun не используется, то карта NVIDIA должна находиться в отключённом состоянии, что должно сберегать электричество.

Как проверить Bumblebee / NVIDIA Optimus в Linux

Запустите тест видеокарты обычной командой:


А также с помощью optirun:


Обратите внимание, что FPS вырос примерно в 20 раз.

Ещё один вариант теста работы видеокарты:


А также с помощью optirun:


Вы должны увидеть прирост производительности при использовании optirun.

Во время работы этих тестов, выполните команду:


Вы должны увидеть процессы, которые используют дискретную видеокарту.

Если у вас установлен веб-браузер Chromium, то запустите его двумя способами:

В обоих случаях откройте вкладку:

Там вы увидите информацию об используемом графическом чипе:



Заключение

Даже после написания этой инструкции, после того, как я разобрался во многих вопросах, всё ещё осталось много непонятного.

Например, как использовать постоянно только карту NVidia? Ниже я покажу что именно пробовал — абсолютно всё не сработало.

Также открыт вопрос, как установить Bumblebee в Debian и производные дистрибутивы? Все команды, которые я пробовал, приводят к чёрному экрану, либо неработоспособности Bumblebee.

БОНУС. Как сделать видеокарту NVidia используемой по умолчанию в Linux

В этом разделе я перечислил то, что у меня не сработало — поэтому можете пропускать этот раздел.

Предупреждение: если после указанных в этом разделе действий вы не можете загрузиться — появляется чёрный экран, то во время неудачной загрузки нажмите Ctrl+Alt+F*, где вместо звёздочки пробуйте указать разные цифры, например, Ctrl+Alt+F1, Ctrl+Alt+F2 и т. д., пока не появится консоль. Введите ваш логин и пароль и откатите изменения, которые привели к неудачной загрузке. Для удаления пакетов используйте стандартные менеджеры пакетов вашего дистрибутива, а для редактирования файлов в командной строке используйте vim или nano. Если вы не знакомы с vim или nano, то пропустите этот раздел!

Если драйвер NVidia установлен, то, вроде бы, видеокарта NVidia должна использоваться по умолчанию. У меня это никогда не происходило, всегда используется интегрированная графика Intel.

Начните с проверки настроек БИОСа — там может быть возможность отключить одну из карт.

Для явного указания используемого драйвера можно создать файл /etc/X11/xorg.conf.d/20-nvidia.conf.

И скопировать в него примерно следующее:

Но у меня не происходит загрузка в графический интерфейс.

Если вы хотите отключить загрузку драйверов Intel, то создайте файл /etc/modprobe.d/blacklist-intel.conf:

И скопируйте в него примерно следующее (название модулей могут отличаться в зависимости от вашего центрального процессора):

Среди других советов встречаются добавить в опции загрузки ядра следующее:

Если у вас EFI (а не БИОС), то для изменения опций загрузки ядра нужно открыть файл вида /boot/loader/entries/*.conf. У меня этот файл называется /boot/loader/entries/arch.conf:

Также рекомендуют изменить файл /mkinitcpio.conf:

В котором вместо строки

нужно записать строку

Затем нужно пересобрать ядро, для этого в Debian и производных нужно выполнить команду:

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 с четким разделением развития и стабильной ветки.


Эта технология не нова, можно сказать, что это усовершенствование «старых» Hybrid SLI и Hybrid Graphics, которые позволяли управлять мощностью при объединении графического процессора Nvidia с платой с набором микросхем Nvidia на настольном компьютере, теперь Optimus позволяет мы делаем то же самое в наших ноутбуках с процессорами Intel Sandy Brigde (i3, i5 и i7) и Nvidia Gpu. Простыми словамиЭта технология позволяет вам переключаться между дискретной и выделенной графикой в ​​соответствии с требованиями, то есть, если мы запускаем видеоигру, система автоматически активирует выделенную графику, но если мы смотрим фильм, она будет использовать дискретную графику. И чуть более сложными словами:

В Windows это работает нормально (я бы сказал чудеса, но мы знаем, что с окнами ничего не творит чудеса) и на LinuxДля разнообразия, нет официальной поддержки со стороны Nvidia, и, согласно новостям, которые я смог прочитать, они не собираются делать это в краткосрочной или среднесрочной перспективе, к этому добавляется, что на большинстве компьютеров нет возможности активировать / отключить один из графиков с помощью BIOS, что оставляет нам очень обескураживающий сценарий, потому что в случае, если только Integrada инвестиции в Выделенный GPU он отправляется в мусорное ведро, вместо этого, если у вас есть Графика Nvidia активная (это обычная) энергоэффективность заставит нас вспомнить Матрицу и благосклонно отнестись к идее превратить родственника или соседа в батарею, потому что, как мы все знаем, от Kernel 2.6.38 Аккумуляторы ноутбуков разряжены, и автономия стала полезным словом для написания песен протеста (в моем случае батареи хватило на два часа).

Вот почему со стороны Linux возникли проекты для поддержки этой технологии, но без особого успеха, то есть до тех пор, пока Шмель. Шмель Это инструмент с открытым исходным кодом, написанный на языке C, он позволяет нам использовать проприетарный драйвер Nvidia или бесплатную версию. Модерн, несколько дней назад была запущена версия 3.0, которая, среди прочего, позволяет нам автоматически активировать диспетчер питания, активируя или деактивируя выделенный графический процессор в соответствии с потребностями случая (что для нас важно).

Есть пакеты в репозиториях Ubuntu, Gentoo, Арка y Debian.
Я установил это приложение в двух дистрибутивах, которые использую: Debian y Арка следуя указаниям соответствующих вики-сайтов.

Установка арки

Устанавливаем Шмель из AUR

И мы устанавливаем толстушка иметь возможность занять менеджера по питанию

С драйвером Nouveau

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

$ sudo pacman -S xf86-video-nouveau nouveau-dri mesa

С проприетарной Nvidia

Если вы используете проприетарные драйверы Nvidia, мы устанавливаем эти пакеты из AUR.

$ yaourt -S nvidia-utils-bumblebee dkms-nvidia

конфигурация

Добавляем нашего пользователя в группу Шмель:

Проверяем, что все правильно установлено и работает, запустив шмеля вручную:

И волшебство . Графический процессор Nvidia деактивирован, и нам остается только интегрированный, кстати, мы даем нашей батарее перерыв.

Далее редактируем /etc/rc.conf

Мы добавляем Шмель в Демоны

Мы можем заметить, что интегрированный активирован, и когда процесс завершен, он отключается, уступая место выделенному, если вы хотите запустить приложение с графическим процессором Nvidia, мы делаем это с консоли

Чтобы увидеть список опций:

Для автоматического включения / выключения выделенной карты мы добавляем Bbswitch в разделе Модули:

Мы редактируем /etc/bumblebee/bumblebee.conf и добавляем в раздел драйверов следующую строку:

Мы проверяем, что PMMethod это в машине:

[driver-nvidia] PMMethod=auto

[driver-nouveau] PMMethod=auto

Мы перезапускаем шмель:

Установка на Debian (только для тестирования или Sid)

Сначала вы должны удалить любую предыдущую установку Bumblebee, затем мы включаем репозитории несвободный.
Для запуска 32-битных приложений в 64-битных системах рекомендуется установить следующие пакеты:

$ sudo aptitude install virtualgl-libs-ia32 and libgl1-nvidia-glx-ia32

Мы добавляем эти репозитории в / Etc / кв / sources.list

Затем опускаем ключ и добавляем его:

Добавляем нашего пользователя в группу Bumblebee:

Перезапускаем и проверяем, что он работает:

Если мы хотим запустить приложение с выделенным графическим процессором, мы делаем это в терминале следующим образом

В заключение я могу сказать вам, что мой опыт работы с этим приложением был неплохим, некоторые друзья из FromLinux они были свидетелями того, как я разочаровался в своих попытках безуспешно установить проприетарные драйверы Nvidia в дистрибутивы, которые я использую (Debian и Arch), пока я не наткнулся на Bumblebee, с другой стороны, батарея, продолжавшаяся два часа, разряжалась в среднем до трех полтора часа, а температура ноутбука упала с 54 ° в среднем до 45 °.

Мне кажется, что до тех пор, пока Nvidia не решит официально поддерживать Optimus в Linux, или если вы не заинтересованы в проприетарных драйверах, но используете свой графический процессор Nvidia, Bumblebee - отличная альтернатива.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Из Linux » GNU / Linux » Nvidia Optimus на вашем ноутбуке с Linux устанавливает Bumblebee

Читайте также: