Небольшое howto о включении интерфейса KMS (Kernel Modesetting) в проприетарном драйвере Nvidia. Это будет полезно в первую очередь для пользователей ноутбуков с Nvidia Optimus, так как полностью избавит их от тиринга.
Начиная с версии 364.12 в проприетарный драйвер Nvidia добавлена поддержка инфраструктуры DRM/DRI (Direct Rendering Manager) и интерфейса KMS, работающих в ядре Linux и используемых свободными видеодрайверами. Это необходимо для, например, поддержки Wayland, однако реализация Wayland в Nvidia драйвере пока работает только в патченом композитном оконном менеджере Weston и в GNOME 3.24 (с ограничениями). Также включение KMS позволяет запустить оконную систему Xorg от обычного пользователя (по умолчанию он запускается от имени root) при использовании дисплейного менеджера GDM (в GNOME) или командой startx в виртуальной консоли (другие дисплейные менеджеры пока не поддерживаются), а также - избавить от тиринга на ноутбуках с Nvidia Optimus, благодаря технологии PRIME Synchronization, появившейся в Xorg 1.19. KMS отключён по умолчанию в драйвере Nvidia вследствие проблем с работой на SLI-конфигурациях. Однако включается он весьма просто:
Для начала необходимо убедиться, что нужные модули загружены:
lsmod | grep nvidia
Вывод должен быть примерно таким:
nvidia_drm 45056 1
drm_kms_helper 155648 1 nvidia_drm
drm 360448 4 nvidia_drm,drm_kms_helper
nvidia_modeset 790528 9 nvidia_drm
nvidia 12312576 302 nvidia_modeset
Создаём файл, который будет загружать нужный модуль с нужными параметрами:
sudo nano /etc/modprobe.d/zz-nvidia-modeset.conf
В него добавляем строку:
options nvidia_drm modeset=1
Обратите внимание: если вы пользуетесь Ubuntu или её производными, необходимо явно указать версию драйвера. К примеру если у вас установлен драйвер версии 390.48, то строка будет выглядеть так:
options nvidia_390_drm modeset=1
Сохраняемся и обновляем начальный рамдиск (initramfs):
sudo update-initramfs -u
Перезагрузитесь. Для проверки введите команду:
sudo cat /sys/module/nvidia_drm/parameters/modeset
В строке modeset=1 должно стоять "y"
Кроме того, если вы используете GNOME, то до включения KMS иксы будут запущены от root:
А после включения - от имени вашего пользователя:
Для начала необходимо убедиться, что нужные модули загружены:
lsmod | grep nvidia
Вывод должен быть примерно таким:
nvidia_drm 45056 1
drm_kms_helper 155648 1 nvidia_drm
drm 360448 4 nvidia_drm,drm_kms_helper
nvidia_modeset 790528 9 nvidia_drm
nvidia 12312576 302 nvidia_modeset
Создаём файл, который будет загружать нужный модуль с нужными параметрами:
sudo nano /etc/modprobe.d/zz-nvidia-modeset.conf
В него добавляем строку:
options nvidia_drm modeset=1
Обратите внимание: если вы пользуетесь Ubuntu или её производными, необходимо явно указать версию драйвера. К примеру если у вас установлен драйвер версии 390.48, то строка будет выглядеть так:
options nvidia_390_drm modeset=1
Сохраняемся и обновляем начальный рамдиск (initramfs):
sudo update-initramfs -u
Перезагрузитесь. Для проверки введите команду:
sudo cat /sys/module/nvidia_drm/parameters/modeset
В строке modeset=1 должно стоять "y"
Кроме того, если вы используете GNOME, то до включения KMS иксы будут запущены от root:
А после включения - от имени вашего пользователя:
А что это даст так скажем обычному пользователь? Можно простым языком, если не трудно...
ОтветитьУдалитьВ статье я привёл пример - возможность запуска оконной системы Xorg от обычного пользователя. Вообще, включение KMS также необходимо для правильной работы ноутбуков с Nvidia Optimus, но я пока не в курсе текущей ситуации с Optimus, да и ноутбука такого у меня нет.
УдалитьПривет. Можешь подсказать где я неправильно делаю? Есть система с archlinux, nvidia gtx460 + kde. Делаю вроде все по вики + этот пост(кажется аналогично вики). При запуске сессии с gnome-shell(wayland) - сессия запускается, но через пару секунд все 4 ядра процессора загружены под 100%, система зависает. При попытке запустить остальные варианты wayland-сессии(weston, plasma-wayland) сестема виснет наглухо сразу(просто черный экран). + еще вопрос - при запуске wayland-сессии нет виртуальных tty?
ОтветитьУдалить100% загрузка процессора - это баг, как я понял баг самого драйвера, так как разработчики GNOME мне ничего толком не ответили. KDE не поддерживает Wayland при работе на проприетарном Nvidia-драйвере, а Weston нужен специальный, патченый (в AUR weston-eglstreams). Насчёт tty - есть конечно, куда-ж они денутся. Кстати можете ещё попробовать запустить Wayland сессию Гнома не через менеджер входа, а именно из tty, командой dbus-run-session -- gnome-shell --display-server --wayland
УдалитьНичего не получилось - отключил sddm, запустил от имени пользователя dbus-run-session -- gnome-shell --display-server --wayland - просто зависает намертво машина.
ОтветитьУдалитьА по поводу "Если вы используете GNOME, то до включения KMS иксы будут запущены от root:А после включения - от имени вашего пользователя:" - это после старта wayland?
lsmod | grep nvidia
nvidia_drm 45056 1
drm_kms_helper 131072 1 nvidia_drm
drm 299008 4 nvidia_drm,drm_kms_helper
nvidia_uvm 651264 0
nvidia_modeset 835584 7 nvidia_drm
nvidia 12972032 158 nvidia_modeset,nvidia_uvm
Возможно что-то отломано в самом Гноме. Насчёт второго - нет, это после старта иксов
Удалитьpacman -Q weston-eglstream
ОтветитьУдалитьweston-eglstream 3.0.0-1
Еще раз привет! Еще немного понадоедаю. Удалил nvidia, установил nouveau - сессия gnome(wayland) запускается! Теперь проблема с KDE(не могу пользоваться GNOME, хоть убей) - сессия plasma(wayland) запускается, но страшно глючит: 1 - при вызове контекстного меню - оно вылазит не мод мышкой, а в верхнем левом углу. 2 - при попытке нажать на "меню приложений KDE" - зависает наглухо, на клавиатуру не реагирует, по SSH достучаться могу - процесс plasmashell со значением D( dead вроде?) - не убивается
ОтветитьУдалитьPlasma Wayland пока работает на уровне технодемки, и не рекомендована к использованию кем либо, кроме разработчиков. Очень много всего не реализовано, очень много всего забаговано, при чём много Wayland-багов в Qt
УдалитьСтранно - почему у GNOME все работает? KDE вроде не мельче среда чем GNOME. В любом случае спасибо за ответы :)
ОтветитьУдалитьКоманда GNOME больше, и сам GNOME далеко не такой большой и сложный проект, как KDE. Ну и к тому же там гораздо раньше начали внедрять поддержку Wayland
УдалитьБольшое спасибо! После замены видеокарты Radeon HD6770 на GeForce GTX460, Федора начала постоянно выдавать ошибки. Сделал все по вашей инструкции, теперь не выдает ошибки
ОтветитьУдалить