Bumblebee (Русский)
Bumblebee это решение, позволяющее задействовать гибридную графику с Nvidia Optimus. Основатель проекта Martin Juhl
Contents
О Bumblebee
Optimus реализует технологию гибридной графики без аппаратного multiplexer. Интегрированная карта GPU берёт на себя управление, когда ноутбук работает от батареи, так лучше для энергосбережения. Дискретную карту следует использовать, когда вы запускаете требовательные приложения.
Bumblebee это программное решение, базирующееся на VirtualGL и драйверах ядра, позволяющее использовать дискретный GPU, не имеющий физического подключения к экрану.
Как это работает
Bumblebee пытается подражать поведению Optimus; использует дискретный GPU для рендеринга когда это необходимо, и отключает питание дискретного GPU когда он не используется. Нынешние релизы поддерживают только рендеринг, управление питанием в процессе разработки.
Дискретная видеокарта Nvidia использует отдельный X сервер, присоединенный к "виртуальному" дисплею (дисплей сконфигурирован, но не используется). Второй сервер вызывается с помощью VirtualGL, как будто это удаленный X сервер. Это означает, что вам необходимо проделать несколько шагов по установке драйверов ядра, дополнительного X сервера и демона.
Сведения об установке
Пакет AUR bumblebee является стабильной версией и использует проприетарный драйвер Nvidia по умолчанию.
Также имеется версия git (bumblebee-git) , которая может использовать любой драйвер: Nvidia или Nouveau. It is a checkout of the develop branch of the GitHub repository.
Для использование 32-битных приложений на 64-битной системе вам следует задействовать lib32-virtualgl вместе с другими специфичными приложениями 32-битных библиотек.
Версии>= 2.3 работают с демоном старта /останова X сервера, но не будут контролировать питание карты по умолчанию.
Использование драйвера Nvidia
Если вы установили git версию bumblebee, вы должны установить дополнительные пакеты, чтобы запустить его с драйвером Nvidia
- nvidia-utils-bumblebee содержит бинарный пакет Nvidia, который не будет конфликтовать с libgl
- lib32-nvidia-utils-bumblebee содержит 32-битный бинарный пакет Nvidia, не вызывающий конфликтов с libgl
Использование драйвера Nouveau
Для использования драйвера Nouveau вы должны инсталлировать git версию Bumblebee и некоторые дополнительные пакеты:
- xf86-video-nouveau экспериментальный 3D драйвер
- nouveau-dri классический Mesa DRI + Gallium3D drivers
- mesa библиотеки Mesa 3-D
Чтобы это работало:
# pacman -S xf86-video-nouveau nouveau-dri mesa
Установка
Для того, чтобы Bumblebee мог функционировать на вашем компьютере, вам необходимо настроить второй X сервер, загрузить нужные модули ядра и запустить демон bumblebee. Большая часть этого делается автоматически при установке.
Загрузка модулей ядра
Использование Nvidia
Для того, чтобы Bumblebee использовал проприетарные модули Nvidia, вам нужно сначала выгрузить модуль ядра Nouveau. Для этого запустите в терминале:
# rmmod nouveau
Добавьте в /etc/modprobe.d/modprobe.conf строки, выключающие Nouveau при загрузке:
blacklist nouveau
Теперь загрузите модуль Nvidia:
# modprobe nvidia
Если вы хотите, чтобы модуль был загружен при старте, добавьте Nvidia в секцию MODULES в ваш файл /etc/rc.conf:
MODULES=(... nvidia ...)
Nouveau
Убедитесь, что драйвер Nouveau не добавлен в blacklist в файле /etc/modprobe.d/. Модуль ядра Nouveau загрузится по умолчанию.
Установка X Server
При инсталляци должны быть распознаны ваши графические карты и их PCI BusID. Если вы заметили предупреждения относительно этого во время установки, следуйте указаниям ниже.
После установки файл /etc/bumblebee/xorg.conf.DRIVER будет содержать минимальную конфигурацию устройств (где DRIVER может бытьnouveau или nvidia). В этот файл вам нужно вписать индивидуальный адрес PCI шины вашей карты. Чтобы получить его, введите в терминале:
$ lspci -d10de: -nn | grep '030[02]'
01:00.0 VGA compatible controller [0300]: nVidia Corporation GT218 [GeForce 310M] [10de:0a75] (rev a2)
Обратите внимание на PCI адрес карты (01:00.0 в примере) и отредактируйте строку в /etc/bumblebee/xorg.conf.DRIVER с указанной опцией BusID в секции Device:
... Section "Device" ... BusID "PCI:01:00:0" ... EndSection ...
Если вы используете драйвер Nvidia, взгляните на секцию "Files" и проверьте, чтобы путь к модулю был правильным:
... Section "Files" ModulePath "/usr/lib/nvidia-bumblebee,/usr/lib/xorg/modules" EndSection ...
Разрешить использование Bumblebee
Разрешение на использование optirun даётся всем пользователям группы 'bumblebee', так что добавьте себя (и других пользователей, которым нужен bumblebee) в эту группу:
# usermod -a -G bumblebee <user>
где<user> имя пользователя, который будет добавлен. Затем выйдите из системы, чтобы изменения вступили в силу.
Запуск демона Bumblebee
Bumblebee запускает демон для старта вторичного X сервера и управляет некоторыми привилегированными функциями, для его запуска просто скомандуйте:
# systemctl start bumblebeed.service
Чтобы старт происходил при загрузке системы выполните:
# systemctl enable bumblebeed.service
Для отключения автозапуска выполните:
# systemctl disable bumblebeed.service
Чтобы увидеть состояние демона, скомандуйте:
# systemctl status bumblebeed.service
Тестирование Bumblebee
Вы можете протестировать Bumblebee командой:
$ optirun glxgears
Если это сработает, вы в состоянии управлять картой.
Конфигурация
Вы можете исправить некоторые переменные в файле/etc/bumblebee/bumblebee.conf. По умолчанию он выглядит так:
STOP_SERVICE_ON_EXIT=N X_SERVER_TIMEOUT=10 VGL_DISPLAY=:8 DRIVER=nvidia X_CONFFILE= BUMBLEBEE_GROUP=bumblebee ENABLE_POWER_MANAGEMENT=N VGL_COMPRESS=proxy ECO_MODE=N FALLBACK_START=N
Compression and VGL Transport
Compression and transport regards how the frames are compressed in the server side (bumblebee X server), then transported to the client side (main X server) and uncompressed to be displayed in the application window. It mostly will affect performance in the GPU/GPU usage, as the transport is unlimited in bandwidth. Compressed methods (such as jpeg) will load the CPU the most but will load GPU the minimum necessary; uncompressed methods loads the most on GPU and the CPU will have the minimum load possible.
вы можете испробовать разные методы сжатия, добавив аргумент -c к команде optirun и посмотреть, какая подходит вам больше:
$ optirun -c <compress-method> /opt/VirtualGL/bin/glxspheres
Bumblebee будет передавать кадры с помощью: <compress-method>
где <compress-method>может бытьjpeg, xv, proxy, rgbилиyuv. Тогда вы сможете заменить одну из переменных VGL_COMPRESS в /etc/bumblebee/bumblebee.conf, используемых по умолчанию.
Server Behavior Configuration
Есть три переменные для управления optirun
STOP_SERVICE_ON_EXIT X_SERVER_TIMEOUT FALLBACK_START
X сервер стартует не сразу, если вы обратились к ним впервые. Старт должен происходить за секунду или около того, если время последующих вызовов слишком большое, установите STOP_SERVICE_ON_EXITвN и Bumblebee X сервер не будет остановлен, когда последний optirun отключен.
X_SERVER_TIMEOUT управляет временем ожидания X сервера. Если X серверу требуется время для запуска, вы можете уувеличить значение параметра, в противном случае запуск сервера может не произойти.
If you want the application to start in the integrated GPU if the X server is not available, set FALLBACK_START to Y. This will print the same message when the server is not available but will not fail to launch the program.
Использование
Для запуска приложений, использующих графическую карту:
$ optirun [опции] <приложение> [параметры приложения]
Для просмотра списка опций optirun запустите:
$ optirun --help
Если вам нужно запустить 32-битное приложение на 64-битной системе, вы можете установить пакет библиотек 'lib32'.
Управление питанием
Целью управления питанием является отключение дискретной видео карты, когда вы не используете ресурсоёмкие приложения и её активацию, когда это необходимо. Сейчас вы можете переключать карты вручную, автоматическое переключение не работает по умолчанию.
Небольшое примечание относительно удаления функции
Управление питанием временно недоступно, поскольку Bumblebee допускает ошибки при работе с ACPI. Вот некоторые из побочных эффектов:
- - "FATAL: Error inserting nvidia (.../nvidia.ko): Нет такого устройства " ошибка при загрузке модуля nvidia
- - Зависания во время загрузки, выключения или сна
- - Приложение может изменить настройки BIOS
- - Другие операционные системы больше не определяют графическую карту
В следующих версиях управление питанием может быть восстановлено.
Один из разработчиков говорит следующее об управлении питанием bumblebee:
Lekensteyn
Okay, let's assume a building with dirty windows. You'd like to see more sun and therefore asks a worker to hire someone to get that job done. The worker has never learnt how to clean a dirty window properly, but guess that a rock might be the right way to do it. He asks a kid to try cleaning the window with a rock. Now, different things may happen:
- the window gets scratched and it even gets more darky
- the window breaks and the sun can shine
In the first case, it has gotten worse. That's the "Module not found" horror and suspend/lock-up issues. In the second case, you won't guess that something is wrong because you achieved your goal: the sunshine is better. Anyway, the right solution is obviously cleaning the window with a cloth but not before the window is repaired, which is our current task.
The ACPI call methods are rocks and "you" is you. The kid is just a messenger, the acpi_call module. That worker is the Bumblebee developer team.
Включение управления питанием
Начиная с версии 2.4.0 Bumblebee позволяет работать с ACP при помощи модуляacpi_call. Вы можете использовать пакет acpi_call-git.
Сначала отредактируйте /etc/bumblebee/bumblebee.confи установитеSTOP_SERVICE_ON_EXITсY, так X сервер будет остановлен, когда optirun не работает.
... STOP_SERVICE_ON_EXIT=Y ...
Теперь вы можете создать два файла (/etc/bumblebee/cardonи/etc/bumblebee/cardoff), содержащих настройки включения и отключения видео карты. Каждая строка должна содержать установку, комментарии не допускаются. Запишите ваши установки по одной на строку, кроме них не должно быть ничего, иначе это может привести к ошибкам:
\_SB.PCI0.RP00.VGA._DSM {0x01,0x02} 0x03 0x04 {0x1,0x0,0x0,0x3} \_SB.PCI0.RP00.VGA._PS0
Наконец, включите управление питанием, отредактировав /etc/bumblebee/bumblebee.conf:
... ENABLE_POWER_MANAGEMENT=Y ...
Вы можете рестартовать демон или перезагрузиться для того, чтобы настройки вступили в силу.
Поиск неисправностей
Это пример поиска неисправностей, если проблема останется, сообщите об ошибках здесь.
VirtualGL не находит дисплей
Если вы видите сообщение, похожее на это
[VGL] ERROR: Could not open display :XX
значит вторичный X сервер не работает или не запускается. Для поиска ошибок посмотрите файл /var/log/Xorg.XX.log , где 'XX' это номер дисплея, используемого bumblebee, также обратите внимание на сообщения в /var/log/bumblebee.log.
Вот кое-что, что вы можете попробовать сделать:
- Проверьте загружен ли модуль nvidia командой "lspci -k"
- Проверьте файл /etc/bumblebee/xorg.conf.nvidia и посмотрите соответствует ли значение опции "BusID" вашей PCI шине.
- Проверьте опцию "ConnectedMonitor" в "DFP-0"или"CRT-0" (или "DFP,CRT"). Это должно быть верно для различных ноутбуков с "LVDS"
- Попробуйте установить опцию X_SERVER_TIMEOUT в более высокое значение, если X сервер запускается, но далеко не сразу становится доступен.