Эта инфа есть в Gentoo Wiki и Arch Wiki, но всё равно тема с завидной регулярностью поднимается на ЛОРе. Поэтому я решил написать об этом здесь. Красивой переключалки не будет: только правкой конфигов.
Практическая часть
Убедитесь что версия вашего ядра Linux ≥ 3.13, X-Server ≥ 1.13, xrandr ≥ 1.4, драйвера NVIDIA ≥ 319.xx. Версию ядра Linux, минимально необходимую для NVIDIA Prime, подняли в драйвере 364.xx: раньше была 3.9.
Создайте /etc/X11/xorg.conf
со следующим содержимым:
Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Inactive "intel"
EndSection
Section "Device"
Identifier "intel"
Driver "modesetting"
Option "AccelMethod" "none"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "intel"
Device "intel"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "1:0:0"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Screen"
Identifier "nvidia"
Device "nvidia"
Option "UseDisplayDevice" "none"
EndSection
Вместо PCI:1:0:0 и PCI:0:2:0 подставьте свои значения, узнав их с помощью lspci
. Чаще всего, значения именно эти.
Добавьте в конфиг-файл своего графического менеджера входа в систему эти команды:
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
GDM:
Файл /etc/X11/gdm/Init/Default
, просто добавьте в конец, перед «exit 0»
KDM:
Файл /usr/share/config/kdm/Xsetup
, просто добавьте в конец.
LightDM:
Создайте файл /etc/lightdm/display_setup.sh
со следующим содержимым:
#!/bin/sh
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
Выполните chmod +x /etc/lightdm/display_setup.sh
.
В файле /etc/lightdm/lightdm.conf
найдите секцию [Seat:*]
, а в нём display-setup-script=
. Добавьте/раскомментируйте эту строку, затем приведите к виду:
[Seat:*]
display-setup-script=/etc/lightdm/display_setup.sh
Остальные графические менеджеры входа в систему
https://wiki.gentoo.org/wiki/NVIDIA/Optimus#Display_manager_configuration,
https://wiki.archlinux.org/index.php/NVIDIA_Optimus#Display_Managers
Решение бага с обрезанным экраном в Minecraft
В Minecraft, при нажатии клавиши F11, включается полноэкранный режим. С приведённым мной конфигом, вы увидите прямоугольник 640x480, и чёрный экран на остальной площади. С другими полноэкранными играми такого бага нет.
Я нашёл решение проблемы, когда читал Xorg.0.log
. Виртуальный экран стартует с разрешением 640x480, затем пробрасывается на Intel, затем меняет размер на реальный. Нужно сделать так, чтобы виртуальный экран создался сразу с нужным разрешением.
В xorg.conf в секцию «„Screen“, Identifier „nvidia“», добавьте это (поменяв моё разрешение на ваше):
SubSection "Display"
Virtual 1600 900
EndSubSection
Теоретическая часть
( читать дальше... )
Что почитать?
http://ru.download.nvidia.com/XFree86/Linux-x86_64/384.69/README/randr14.html
https://github.com/Bumblebee-Project/Bumblebee/wiki/History-of-the-project
https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/post/4964506/#4964506 Важная информация ↓
https://wiki.gentoo.org/wiki/NVIDIA/Optimus
https://wiki.archlinux.org/index.php/NVIDIA_Optimus