Учебники (How-To & F.A.Q)
   26724

Установка nvidia prime на manjaro

Также я перевел данный мануал для английского форума: https://forum.manjaro.org/index.php?topic=31575.0
Так как мне удалось запустить nvidia prime под manjaro, я решил поделиться опытом установки и настройки данного. Но для начала, давайте узнаем в чем же отличия nvidia prime от bumblebee, ведь это совершенно разные подходы использования технологии nvidia optimus, не сочетающиеся друг с другом.

В чем преимущества nvidia prime над bumblebee:
Видеокарта nvidia будет использована по умолчанию
Это значит, что система и приложения, запущенные в ней, будут работать только на дискретной видеокарте, не нужно каждый раз запускать приложения с помощью команды optirun из пакета bumblebee.

Более высокая производительность, по сравнению с bumblebee
Это не всегда верно, но в некоторых приложениях это возможно, потому что prime работает через DMA, в отличии от bumblebee, который использует оперативную память.

Графически, система становится более отзывчивой

Но есть и некоторые проблемы:

Перегрев
Так как дискретная видеокарта будет работать для всех приложений, она может стать причиной перегрева вашего устройства. На устройствах с хорошей системой охлаждения обычно все хорошо.

Тиринг(эффект «рваного» изображения)
Не пытайтесь избавиться от тиринга, на момент написания статьи(27.02.16) нет способа избавиться от него, кроме как использовать встроенную видеокарту Intel с Option «DRI» «3» и bumblebee. Но nvidia выпустила патчи, избавляющие от тиринга, которые должны быть доступны в ядре версии 4.5 и в новой версии Xorg. Xorg 1.18 не имеет данных патчей. Узнать новости по данной проблеме вы можете по этой ссылке: https://devtalk.nvidia.com/default/topic/775691/linux/vsync-issue-nvidia-prime-ux32vd-with-gt620-m-/5
Тиринга не должно быть c приходом wayland, но nvidia еще не реализовала поддержку wayland для своих видеокарт.
Проверить, имеется ли у вас тиринг, вы можете с помощью данного видео: https://youtu.be/cuXsupMuik4

Установка:

В ходе установки вам могут понадобиться следующие статьи:
https://wiki.archlinux.org/index.php/NVIDIA_Optimus Именно из этой статьи я перенял большую часть опыта для настройки.
https://wiki.manjaro.org/index.php?title=Mhwd
1) Удалить текущие видеодрайвера
Вы можете сделать это через графическую утилиту mhwd, либо же удалить драйвера через консоль
sudo mhwd -r pci video-hybrid-intel-nvidia-bumblebee


2) Установить video-nvidia
sudo mhwd -i pci video-nvidia -f


3) Отредактируйте файл /etc/X11/xorg.conf.d/90-mhwd.conf
Файл является ссылкой на /etc/X11/mhwd.d/nvidia.conf, но не имеет значения измените вы сам файл или удалите ссылку и создадите свой 90-mhwd.conf.
sudo nano /etc/X11/xorg.conf.d/90-mhwd.conf


Не пытайтесь использовать стандартный файл 90-mhwd.conf, генерируемый mhwd, вы получите «голую» консоль в лучшем случае, а в худшем потеряете контроль над системой.

Файл 90-mhwd.conf для ноутбука Lenovo y580(Intel HD4000 + Nvidia gtx 660m) сгенерированный по умолчанию mhwd:

Стандартный файл 90-mhwd.conf
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 352.79  (buildmeister@swio-display-x64-rhel04-15)  Wed Jan 13 17:02:24 PST 2016


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
	Option "NoLogo" "1"
	Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
EndSection

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

Section "Extensions"
    Option         "Composite" "Enable"
EndSection

 
Section "InputClass"
	Identifier          "Keyboard Defaults"
	MatchIsKeyboard	    "yes"
	Option              "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection 



Необходимо изменить данный файл 90-mhwd.conf, до рабочего вида:

Рабочий файл 90-mhwd.conf для nvidia prime
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 352.79  (buildmeister@swio-display-x64-rhel04-15)  Wed Jan 13 17:02:24 PST 2016


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    Inactive       "intel"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    BusID          "PCI:1:0:0"
    VendorName     "NVIDIA Corporation"
	Option "NoLogo" "1"
	Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
    Option "AllowEmptyInitialConfiguration" "Yes"
# Change to your resolution
   Monitor "1920x1080"
EndSection

Section "Device"
Identifier "intel"
Driver "modesetting"
BusID "PCI:0:2:0"
Option "AccelMethod" "sna"
Option "DRI" "3"
EndSection

Section "Screen"
Identifier "intel"
Device "intel"
EndSection

Section "Extensions"
    Option         "Composite" "Enable"
EndSection

 
Section "InputClass"
	Identifier          "Keyboard Defaults"
	MatchIsKeyboard	    "yes"
	Option              "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
 



С помощью сайта https://www.diffchecker.com/diff вы можете сравнить свой конфигурационный файл, с моим.
Коротко о внесении изменений в файл 90-mhwd.conf:
Измените секцию
Section "ServerLayout"
, убрав 2 цифры после
Screen      0  "Screen0"
и добавьте параметр
Inactive       "intel"

В секцию Device, относящуюся к nvidia
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"

добавьте
BusID          "PCI:1:0:0"

где
"PCI:1:0:0"

укажите адрес своей дискретной видеокарты nvidia, который можно узнать командой
lspci | grep -E "VGA|3D"

Output
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107M [GeForce GTX 660M] (rev ff)


В секцию
Section "Screen"
добавьте параметр
Option "AllowEmptyInitialConfiguration" "Yes"
и
Monitor "1920x1080"
, где «1920x1080» укажите свое разрешение дисплея.

После окончания секции
Section "Screen" ... EndSection
добавьте следующие 2 секции:
Section "Device"
Identifier "intel"
Driver "modesetting"
# Change to your PCI
BusID "PCI:0:2:0"
Option "AccelMethod" "sna"
Option "DRI" "3"
EndSection

Section "Screen"
Identifier "intel"
Device "intel"
EndSection

Не забудьте указать свой адрес PCI для встроенной видеокарты Intel.

4) Измените файл $ ~/.xinitrc, добавив следующие две строчки в начало файла:
nano ~/.xinitrc

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

5) Измените параметры вашего экранного менеджера(графического менеджера входа), в зависимости от того, какой вы используете:
!SDDM:
sudo nano /usr/share/sddm/scripts/Xsetup

xrandr --dpi 142
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

!LightDM:
sudo nano /etc/lightdm/display_setup.sh

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

Сделайте скрипт исполняемым:
# chmod +x /etc/lightdm/display_setup.sh
Теперь настройте lightdm для запуска скрипта, изменив секцию [SeatDefaults] в /etc/lightdm/lightdm.conf:
sudo nano /etc/lightdm/lightdm.conf

[SeatDefaults]
display-setup-script=/etc/lightdm/display_setup.sh

14 комментариев

avatar
Более высокая производительность, по сравнению с bumblebee
Может кто-нибудь тесты проводил?

… система и приложения, запущенные в ней, будут работать только на дискретной видеокарте, не нужно каждый раз запускать приложения с помощью команды optirun из пакета bumblebee.
Я бы сказал что это недостаток! Мне на ноуте не надо чтоб браузер работал на дискретке.
Хотя если есть опция для GRUB, но нормально.
0
avatar
В бамблби не нужно каждый раз писать optirun для приложения. Идем в /usr/share/applications и в свойства-команда запуска просто дописываем optirun тем приложениям которые будут использовать nvidia. Усё.
+1
avatar
Не получилось по инструкции сделать…
Есть такие у кого получилось?
0
avatar
получилось. Ибо в 90-mhwd.conf
Screen 0 «Screen0» заменить на Screen 1 «Screen1» надо, и далее по конфигу Screen0 на Screen1

Но это у меня так было.
Мы же линуксойды все-таки: если что-то не заработало — кури логи, там все написано, что не так.
0
avatar
уже два года пытаюсь заставить работать nvidia карту под linux.
ничего не помогает. прошу помощи!!!
0
avatar
Самую быструю помощь можно получить в конференции сообщества telegram.me/manjarolinux
Веб клиент: web.telegram.org
0
avatar
там инглиш, я убьюсь
0
avatar
Ввести свой номер телефона, подтвердить по смс, в «Search» вбить @manjarolinux. Разве это так трудно? :)
0
avatar
все сделал по инструкции и заработала!
скрин

у меня следующий вопрос: в настрйках драйвера nvidia нет профиля prime(как в ubuntu) через него вручную можно было переключатся между картами, здесь это возможно сделать?
Последний раз редактировалось
0
avatar
Лично я, работая с бамблби, создал папочку со скриптами, которые запускал через иконки на рабочем столе.
Пример содержания скрипта:
cd «путь до директории с файлом»
optirun start.sh
0
avatar
Огромное спасибо, все работает!
0
avatar
У меня самый глупый, наверное вопрос, откуда взять файл 90-mhwd.conf? В том месте, где он должен быть — у меня его нет, только 2 файла — 00-keyboard.conf и 30-touchpad.conf
Последний раз редактировалось
0
avatar
В целом то, что мне надо.

Плюс 1-й — Я могу спокойно переключаться между внешним и внутренним дисплеем ноутбука
Плюс 2-й — При подключенном внешнем дисплее и закрытой крышке ноутбука, ничего не тормозит (в отличии от драйвера nvidia-prime)

Пожалуй минус такого решения (он очевиден, т.к. используются стандартные драйвера nvidia) — время работы от батареи.
Но для меня этот минус менее важен, чем два плюса выше.
0
avatar
Подскажите данная статья еще актуальна? Дело в том, что установил драйвера NVIDIA, а как их запустить рабочего враианта так и не нашел
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.