Nvidia optimus, настройка и запуск bumblebee

Материал из ALT Linux Wiki

Данное руководство предназначено для счастливых обладателей ноутбуков с nvidia optimus на борту, которые используют дистрибутивы на базе бранча p8.

Примечание: Начиная с p9 bumblebee не поддерживается, всё должно работать без bumblebee.


PRIME

Это единственный способ (кроме автоматического выбора режима), который работает в Сизифе и в бренче p10

Если у вас современная видеокарта, которая поддерживается драйвером версии 435 или новее (посмотреть можно в /proc/driver/nvidia/version), то у вас есть поддержка технологии NVIDIA PRIME, достаточно запускать программы при помощи nvidia-prime-run (входит в пакет nvidia_glx_common)

$ nvidia-prime-run имяпрограммы

Например, при установленном пакете glxinfo можно запустить

$ nvidia-prime-run glxinfo | grep -i 'renderer.*string'

, убедившись, какой 3D-ускоритель задействован.

Bumblebee

Рассмотрим процесс установки, настройки и запуска видеокарты nvidia посредством bumblebee.

установка

1) Обновляем систему и ядро до текущего бранча:

# apt-get update
# apt-get dist-upgrade
# update-kernel

2) Узнаем версию установленного ядра:

$ uname -r
3.4.27-std-def-alt0.M60P.1

3) Для запуска проприетарного драйвера nvidia удалим модуль ядра от свободного драйвера nouveau (обратите внимание на сборку ядра):

# apt-get remove kernel-modules-drm-nouveau-std-def

и установим (если не установлены) проприетарный драйвер nvidia и модуль ядра для него:

# apt-get install kernel-modules-nvidia-std-def

4) Устанавливаем bbswitch для своего ядра и bumblebee:

# apt-get install kernel-modules-bbswitch-std-def bumblebee

настройка

5) Узнаем BusID видеокарт[1]:

$ lspci
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)

нас интересует BusID, относящийся к intel (00:02.0)

6) Создадим файл (от рута, можно через mc) в /etc/X11/xorg.conf.d следующего содержания с указанием ранее полученного BusID:

 Section "Device"
    Identifier     "Device1"
    Driver         "intel"
    VendorName     "onboard"
    BusID          "PCI:0:2:0"
#обратите внимание на двоеточия и количество 0
EndSection

Section "Monitor"
    Identifier "Monitor0"
    Option         "DPMS"
EndSection

Section "Screen"
    Identifier     "Screen0"   
    Device         "Device1"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection 

Для тех у кого артефакты при скроллинге, файл будет выглядеть так:

Section "Device"
    Identifier     "Device1"
    Driver         "intel"
    Option "AccelMethod" "uxa"
    VendorName     "onboard"
    BusID          "PCI:0:2:0"
#обратите внимание на двоеточия и количество 0
EndSection
Section "Monitor"
    Identifier "Monitor0"
    Option         "DPMS"
EndSection
Section "Screen"
    Identifier     "Screen0"   
    Device         "Device1"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

7) Удаляем файл /etc/X11/xorg.conf.d/10-monitor.conf и желательно удалить компонент от альтератора alterator-x11 или не производить через него настройку дисплея.

проверка

8) Перезагружаем систему и проверяем работоспособность видеокарты nvidia:

$ optirun glxinfo | grep OpenGL

должно получиться нечто подобное:

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 540M/PCIe/SSE2
OpenGL version string: 4.3.0 NVIDIA 310.19
OpenGL shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL extensions:

Можно запускать нужные приложения на видеокарте nvidia командой от пользователя, входящего в группу xgrp[2]:

$ optirun приложение

Запущенные без optirun приложения будут работать на видеокарте intel, при этом видеокарта nvidia будет выключена.

P.S. На р6 замечено, что на 32-разрядных системах bumblebee падает после отработки команды optirun, для повторного запуска команды optirun необходимо перезапустить сервис bumblebee:

# service bumblebeed restart

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

# service bumblebeed status

Если сервис не активен (вместо active выводится unknown или что-подобное), то для включения сервиса нужно выполнить команду:

# service bumblebeed enable

после чего имеет смысл перезагрузить систему.

Primus

Для nvidia optimus собран primus, предлагающий некоторое улучшение производительности.

установка

9) Устанавливаем primus:

# apt-get install primus

проверка

Команда запуска приложений через primus:

$ primusrun приложение

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

$ optirun приложение

Для отключения вертикальной синхронизации у primus:

$ vblank_mode=0 primusrun приложение

Для нормальной работы 32-х разрядных приложений и игр на 64-х разрядной системе через primus должны быть установлены следующие пакеты: i586-primus, i586-xorg-drv-intel, i586-xorg-dri-intel, i586-nvidia_glx, i586-nvidia_glx_common.

Для запуска игр в steam на карте nvidia primus (особенно 32-х разрядный) обязателен к установке! Чтобы игра стартовала через primus необходимо в свойствах запуска игры в steam прописать следующее:

primusrun %command%

где %command% переменная (не надо ее менять на команду запуска игры), steam сам подставит нужную команду.

Запуск nvidia-settings с установленным bumblebee :

optirun nvidia-settings -c :8

или

primusrun nvidia-settings -c :8

Ссылки

Примечания

  1. На Sisyphus за 20140209 для Lenovo B570e этот шаг и создание секции xorg.conf оказались по факту необязательны
  2. см. вывод команды id и файл /etc/group