NVIDIA Optimus (Русский)
NVIDIA Optimus - технология, которая дает интегрированной графике Intel и дискретной Nvidia работать сообща в лаптопах. Чтобы заставить Optimus работать в Arch Linux потребуется сделать несколько непростых шагов, описанных ниже. Вот доступные решения:
- отключить один из графических адаптеров в BIOS, что увеличит продолжительность работы батареи, если отключить чип Nvidia. Но это невозможно сделать в некоторых BIOS.
- использование официальной поддержки Optimus включенной в проприетарный драйвер Nvidia, который предоставит хороший опыт работы, в сравнении с nouveau, с картами Nvidia, но не поддерживает переключения GPU и содержит больше ошибок.
- использование функционала PRIME, входящего в свободные драйвера nouveau.Эти драйвера поддерживают переключение GPU, но предоставляют более низкую производительность, чем проприетарный драйвер Nvidia, также, до сих пор, не реализовано никакого энергосбережения.
- использование Bumblebee, решения сторонних разработчиков для реализации функционала подобного Optimus, поддерживающего переключение GPU и энергосбережение, но требующего более тонкой настройки.
Contents
Отключение одного из GPU
Если требуется использовать только один из видеоадаптеров, проверьте опции BIOS. Найдите опцию, отключающую один из них. Некоторые лаптопы поддерживают отключение только одного из чипов. Если необходимо использовать обе видеокарты или невозможно отключить ту, что не нужна ищите решение ниже.
Используя драйвера Nvidia
Проприетарный драйвер Nvidia не поддерживает динамического переключения в отличие от nouveau. В наличии проблемы с тирингом, о которых Nvidia знает, но не спешит исправлять. Однако, эти драйвера предоставляют более высокую производительность в сравнении с драйверами nouveau.
Первым делом, установите пакеты nvidia, nvidia-libgl и xorg-xrandr из официальных репозиториев. После настройте xorg.conf. Узнайте PCI адрес карты Nvidia, для этого введите: $ lspci | grep -E "VGA|3D"
PCI адрес выглядит примерно так 01:00.0. В xorg.conf, отредактируйте 01:00.0 на 1:0:0.
Если X.ORG X сервер версии 1.17.2 и выше:
/etc/X11/xorg.conf
Section "Module" Load "modesetting" EndSection Section "Device" Identifier "nvidia" Driver "nvidia" BusID "тут>" Option "AllowEmptyInitialConfiguration" EndSection
Для более старых версий X сервера:
/etc/X11/xorg.conf
Section "ServerLayout" Identifier "layout" Screen 0 "nvidia" Inactive "intel" EndSection Section "Device" Identifier "nvidia" Driver "nvidia" # Change BusID if necessary. BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "nvidia" Device "nvidia" Option "AllowEmptyInitialConfiguration" "Yes" EndSection Section "Device" Identifier "intel" Driver "modesetting" # Change BusID if necessary. BusID "PCI:0:2:0" Option "AccelMethod" "none" EndSection Section "Screen" Identifier "intel" Device "intel" EndSection
Далее добавьте в начало ~/.xinitrc две строки:
xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
Теперь перезагрузитесь для запуска драйверов и X. Если dpi дисплея не верный добавьте строку:
xrandr --dpi96
Если при загрузке X появился черный экран, удостоверьтесь, что в файле ~/.xinitrc нет & перед xrandr. Если & есть, то видимо оконный менеджер запускается раньше, чем команда xrandr завершает выполнение, что и приводит к черному экрану.
Если черный экран еще есть, смотрите #Альтернативная конфигурация ниже.
Альтернативная конфигурация
Если возникли сбои в работе Xorg-server 1.17.1 и выше с описанной выше конфигурацией, измените раздел для Intel в /etc/X11/xorg.conf как показано ниже:
/etc/X11/xorg.conf
Section "Device" Identifier "intel" Driver "modesetting" BusID "PCI:0:2:0" Option "AccelMethod" "sna" #Option "TearFree" "True" #Option "Tiling" "True" #Option "SwapbuffersWait" "True" EndSection
Как указано выше BusID должен совпадать с выводом lspci. Найдите строку с "VGA compatible controller", которая содержит "Intel". Например: $ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
Если X запустился, но на экране ничего не происходит, проверьте содержит ли /var/log/xorg.conf подобную строку:
/var/log/xorg.conf
[ 16112.937] (EE) Screen 1 deleted because of no matching config section.
Если да, проблема может исчезнуть при добавлении раздела ServeLayout в /etc/X11/xorg.conf
/etc/X11/xorg.conf
Section "ServerLayout" Identifier "layout" Screen 1 "nvidia" Inactive "intel" EndSection
Экранные менеджеры
При использовании менеджеров входа, создайте или отредактируйте скрипт настройки вместо использования ~/.xinitrc.
LightDM
Для LightDM:
/etc/lightdm/display_setup.sh
#!/bin/sh xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
Сделайте этот скрипт выполняемым:
# chmod +x /etc/lightdm/display_setup.sh
Теперь настройте LightDM для запуска скрипта, отредактировав раздел [Seat:*] в /etc/lightdm/lightdm.conf:
/etc/lightdm/lightdm.conf
[Seat:*] display-setup-script=/etc/lightdm/display_setup.sh
Теперь перезагрузитесь и DM запуститься.
SDDM
/usr/share/sddm/scripts/Xsetup
xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
GDM
Для GDM создайте новый файл .desktop:
/usr/share/grm/greeter/autostart/optimus.desktop
[Desktop Entry] Type=Application Name=Optimus Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto" NoDisplay=true X-GNOME-Autostart-Phase=DisplayServer
Удостоверьтесь, что GDM использует X как стандартный бэкенд.
KDM
Для KDM, добавьте строки xrandr в файл /usr/share/config/kdm/Xsetup.
Проверка 3D
Для проверки работает ли чип Nvidia установите mesa-demos и запустите: $ glxinfo |grep NVIDIA
Проблемы
Тиринг
К сожалению, эта проблема на данный момент не имеет решения и известна Nvidia.
EDID errors in Xorg.log
Эта ошибка возникает когда драйвер nvidia не определяет EDID для дисплея. Необходимо вручную указать путь к файлу EDID или предоставить ту же информацию подобным образом.
Для предоставления пути к файлу EDID отредактируйте раздел "Device" для NVIDIA в Xorg.conf, добавив эти строки. Не забудьте изменить поля в соответствии с вашей системой:
/etc/X11/xorg.conf
Section "Device" Option "ConnectedMonitor" "CRT-0" Option "CustomEDID" "CRT-0:/sys/class/drm/card0-LVDS-1/edid" Option "IgnoreEDID" "false" Option "UseEDID" "true" EndSection
Если Xorg не запускается попробуйте поменять ссылки CRT на DFB. card0 это идентификатор чипа Intel, который подключен к дисплею с помощью LVDS. Если расположение аппаратных средств отличается, значение пользовательского EDID может быть другим. Путь же будет начинаться с /sys/class/drm.
Используя nouveau
Свободные драйвера nouveau (xf86-video-nouveau)могут динамически переключаться с драйвером Intel (xf86-video-intel) используя технологию PRIME. Для более подробной информации смотрите PRIME.
Используя Bumblebee
Если хотите использовать Bumblebee, который поддерживает энергосбережение и другие полезные функции, смотрите Bumblebee.