Вопрос или проблема
У меня есть ноутбук с графическим процессором nvidia RTX 3050, и я только что установил Ubuntu 23.04, gnome 44.1 и wayland. Я попробовал драйвер nvidia 530, 535, но gnome-shell не использует драйвер nvidia в сессии wayland. Он использует драйвер intel UHD. Поэтому на 4k мониторе очень медленно.
$ glxinfo | egrep “OpenGL vendor|OpenGL renderer”
OpenGL vendor string: Intel OpenGL renderer string: Mesa Intel(R) UHD Graphics (TGL GT1)
Когда я переключился на сессию X11, nvidia работает правильно и показывает отличную производительность.
Как я могу заставить gnome-shell использовать проприетарный драйвер nvidia?
Для сессий Wayland вы можете контролировать, какой графический процессор использовать, с помощью правила udev. Вот как это сделать, предполагая, что оба ваших драйвера работают правильно:
Создайте новый файл с помощью текстового редактора nano:
sudo nano /etc/udev/rules.d/61-mutter-primary-gpu.rules
Вставьте следующее содержимое:
ENV{DEVNAME}=="/dev/dri/card1", TAG+="mutter-device-preferred-primary"
Сохраните с помощью CTRL + O и нажмите Enter. Перезагрузите систему.
Обратите внимание, что в приведенном выше примере я установил card1, у вас, вероятно, есть card0 и card1 в вашей системе, поэтому вам, возможно, придется попробовать оба, чтобы найти правильный. Я успешно использовал этот метод для перехода с моего выделенного GPU Nvidia на интегрированную графику AMD при использовании Wayland (драйверы AMD работают лучше с Wayland).
Итак… Это, конечно, хака, но если ваша цель — запустить Gnome с Wayland на Nvidia, почему бы не пропустить проверки безопасности и всегда запускать Gnome с включенным Wayland?…
В этом файле: /lib/udev/rules.d/61-gdm.rules на или около строки 84 находится логика того, что делать, если тесты не проходят…
LABEL="gdm_disable_wayland" RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false" GOTO="gdm_end"
Вы можете изменить это на «Всегда включать Wayland», изменив значение «false» на «true»:
RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable true"
Сохраните конфигурацию, перезагрузите систему, и вы должны оказаться в Gnome с Wayland вместо X11.
Это делает тесты/проверки всегда успешными. Вы можете сделать это без загрузки модулей, изменения параметров ядра, редактирования grub и т. д.
Это простой хак. Хорошее начало. «Почему бы нет» не следует воспринимать буквально, мне не нужен ответ о возможных опасностях… Работает отлично, гибернация, спящий режим и так далее, без необходимости выполнять другие методы, упомянутые здесь:
https://wiki.debian.org/NvidiaGraphicsDrivers#Wayland
Также попробуйте эти методы, если хак не сработает, это буквально шаги для прохождения тестов…
Ответ или решение
Для владельцев ноутбуков с GPU Nvidia RTX 3050, которые установили Ubuntu 23.04 и используют GNOME 44.1 в среде Wayland, может возникнуть проблема с использованием драйвера Nvidia. Вместо этого система использует драйвер Intel UHD, что приводит к низкой производительности на 4K мониторе, в особенности заметно при выполнении команды:
$ glxinfo | egrep "OpenGL vendor|OpenGL renderer"
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics (TGL GT1)
На X11 сессиях этот баг не присутствует, и Nvidia работает должным образом. Ниже приведён метод для принудительного использования проприетарного драйвера Nvidia в Wayland сессиях:
Шаг 1: Создание udev правила
Чтобы указать системе, какой GPU использовать в Wayland, можно настроить udev правило:
-
Создайте новый файл с помощью nano:
sudo nano /etc/udev/rules.d/61-mutter-primary-gpu.rules
-
Вставьте следующий контент:
ENV{DEVNAME}=="/dev/dri/card1", TAG+="mutter-device-preferred-primary"
Примечание: Предполагается, что card1 – это ваша Nvidia карта. Если нет, измените card1 на card0.
-
Сохраните файл с помощью комбинации клавиш
CTRL + O
, затемEnter
. -
Перезагрузите систему.
Шаг 2: Редактирование udev правила GDM
Если первый метод не помогает, можно изменить поведение GDM, чтобы всегда включать Wayland, даже если система считает, что это нежелательно:
-
Откройте файл udev правил для GDM:
sudo nano /lib/udev/rules.d/61-gdm.rules
-
Перейдите к строке, подобной этой:
LABEL="gdm_disable_wayland" RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false"
-
Измените
false
наtrue
:RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable true"
-
Сохраните файл и перезагрузите систему.
Эти шаги позволяют обойти стандартные проверки и использовать Nvidia GPU на Wayland сессиях.
Альтернативные решения
Если ни один из вышеперечисленных методов не сработал, вам может помочь изучение дополнительных материалов, таких как официальная документация Debian по драйверам Nvidia. Эти ресурсы содержат обширные сведения о решении подобных проблем и настройке вашей системы.
Принудительное использование драйвера Nvidia на Wayland требует сознательного вмешательства в системные настройки, поэтому все изменения необходимо выполнять с пониманием возможных последствий для стабильности системы.