Fedora 31 использует llvmpipe в качестве стандартного рендерера OpenGL вместо Nvidia (nvidia-settings также не работают)

Вопрос или проблема

Я хочу использовать только свою видеокарту Nvidia на ноутбуке MSI GL63 8RD (Optimus Bumblebee ужасно работает для меня) с Fedora 31 (свежая установка). Вот мои карты:

lspci | egrep 'VGA|3D'
00:02.0 VGA совместимый контроллер: Intel Corporation UHD Graphics 630 (Mobile)
01:00.0 3D контроллер: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile] (rev a1)

Итак, я установил драйвера с nvidia.com, убрал nouveau и установил их. Это было сделано в многопользовательском режиме (без графики). Теперь у меня загружен этот модуль:

lsmod | grep nvidia
nvidia_drm             57344  0
nvidia_modeset       1118208  1 nvidia_drm
nvidia              19116032  1 nvidia_modeset
ipmi_msghandler        73728  2 ipmi_devintf,nvidia
drm_kms_helper        212992  2 nvidia_drm,i915
drm                   512000  5 drm_kms_helper,nvidia_drm,i915
lsmod | grep video
uvcvideo              114688  0
videobuf2_vmalloc      20480  1 uvcvideo
videobuf2_memops       20480  1 videobuf2_vmalloc
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_common       57344  2 videobuf2_v4l2,uvcvideo
videodev              237568  3 videobuf2_v4l2,uvcvideo,videobuf2_common
mc                     61440  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
video                  49152  2 msi_wmi,i915

Но в то же время у меня эта ошибка с nvidia-settings:

nvidia-settings 

ERROR: Невозможно загрузить информацию из любой доступной системы

А это рендер OpenGL:

inxi -G
Графика:  Устройство-1: Intel UHD Graphics 630 драйвер: i915 v: kernel 
           Устройство-2: NVIDIA GP107M [GeForce GTX 1050 Ti Mobile] драйвер: nvidia v: 430.50 
           Дисплей: x11 сервер: Fedora Project X.org 1.20.5 драйвер: modesetting,nvidia выгружено: fbdev,vesa 
           разрешение: 1920x1080~60Hz 
           OpenGL: рендер: llvmpipe (LLVM 9.0 256 bits) v: 3.3 Mesa 19.2.0 

Этот llvmpipe начинает работать, когда я открываю glxgears:

glxgears -info
GL_RENDERER   = llvmpipe (LLVM 9.0, 256 bits)
GL_VERSION    = 3.1 Mesa 19.2.0
GL_VENDOR     = VMware, Inc.

Я предполагаю, что не могу запустить игры Steam из-за этого (мне это удалось в openbox, запущенном с помощью скрипта nvidia-xrun, когда у меня был bumblebee). Мой пользователь находится в группе “video”, но это не работает.

UPD: Вот что говорит dmesg:

dmesg | grep nvidia
[   22.335524] nvidia: загрузка внешнего модуля осложняет работу ядра.
[   22.335529] nvidia: лицензия модуля 'NVIDIA' осложняет работу ядра.
[   22.341084] nvidia: проверка модуля не удалась: отсутствует подпись и/или необходимый ключ - сложность для ядра
[   22.348074] nvidia-nvlink: Инициализация ядра Nvlink, основной номер устройства 237
[   22.348359] nvidia 0000:01:00.0: включение устройства (0006 -> 0007)
[   22.764812] nvidia-modeset: Загрузка драйвера настройки режима ядра NVIDIA для платформ UNIX  430.50  Чт Сен  5 22:39:50 CDT 2019
[   22.805422] [drm] [nvidia-drm] [GPU ID 0x00000100] Загрузка драйвера
[   22.805428] [drm] Инициализирован nvidia-drm 0.0.0 20160202 для 0000:01:00.0 на минор 1

Благодаря любезному господину в этом посте на reddit, мне удалось заставить это работать (этот гайд сработал для меня).

Прежде всего, установка с nvidia.com была ОШИБКОЙ. Установщик создает ядра, которые потом будут конфликтовать с новыми модулями (в Fedora были модули 440.26, а на nvidia.com – 430.50):

NVRM: загрузка ядра NVIDIA UNIX x86_64 430.50 Чт Сен 5 22:36:31 CDT 2019
NVRM: Несовпадение API: клиент имеет версию 440.26, но
NVRM: этот модуль ядра имеет версию 430.50. Пожалуйста
NVRM: убедитесь, что этот модуль ядра и все компоненты драйвера NVIDIA
NVRM: имеют одну и ту же версию.

Прежде всего, я переустановил Fedora (сделал много настроек, которые, как оказалось, были плохи для системы).

В свежей обновленной установке Fedora я добавляю репозитории fusion:

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Затем я устанавливаю драйвера nvidia:

dnf install xorg-x11-drv-nvidia

После этого я устанавливаю обновление для драйверов и xorg из rawhide:

dnf copr enable kwizart/xorg-x11-server_nvidia
dnf update xorg-x11-server\*
dnf install rpmfusion-nonfree-release-rawhide
dnf обновление --enablerepo=rpmfusion-nonfree-rawhide xorg-x11-drv-nvidia\*

После этого я создаю конфигурацию:

cat > /etc/modprobe.d/nvidia.conf <<EOF
# Включить DynamicPwerManagement
# http://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/dynamicpowermanagement.html
options nvidia NVreg_DynamicPowerManagement=0x02
EOF

Затем гайд говорит создать nvidia.conf:

cp -p /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf

И изменить файл, чтобы использовать: Опция "PrimaryGPU" "yes" 

Но этот шаг просто не сработал для меня. После перезагрузки SDDM не запускается, и tty с SDDM просто выключенный экран (даже не черный экран, он совершенно выключен). Но даже без этой конфигурации я могу использовать переменные окружения:

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%

[denis@fedora ~]$ inxi -G
Графика:  Устройство-1: Intel UHD Graphics 630 драйвер: i915 v: kernel 
           Устройство-2: NVIDIA GP107M [GeForce GTX 1050 Ti Mobile] драйвер: nvidia v: 440.26 
           Дисплей: x11 сервер: Fedora Project X.org 1.20.5 драйвер: modesetting,nvidia 
           выгружено: fbdev,nouveau,vesa разрешение: 1920x1080~60Hz 
           OpenGL: рендер: Mesa DRI Intel UHD Graphics 630 (Coffeelake 3x8 GT2) v: 4.5 Mesa 19.2.2 

[denis@fedora ~]$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia inxi -G
Графика:  Устройство-1: Intel UHD Graphics 630 драйвер: i915 v: kernel 
           Устройство-2: NVIDIA GP107M [GeForce GTX 1050 Ti Mobile] драйвер: nvidia v: 440.26 
           Дисплей: x11 сервер: Fedora Project X.org 1.20.5 драйвер: modesetting,nvidia 
           выгружено: fbdev,nouveau,vesa разрешение: 1920x1080~60Hz 
           OpenGL: рендер: GeForce GTX 1050 Ti/PCIe/SSE2 v: 4.6.0 NVIDIA 440.26 

Например, я могу загрузить Steam таким образом и затем играть в игры. Это то, чего я никогда не добивался с Primusrun или Optirun. Я не нашел способ загрузить весь SDDM с этими параметрами, но это решение уже намного лучше, чем запускать новый xserver с nvidia-xrun.

Также у меня были проблемы с установкой Steam:

sudo dnf install steam
Ошибка:
Проблема: пакет libglvnd-glx-1:1.1.1-5.fc31.i686 требует mesa-libGL(x86-32) >= 13.0.4-1, но ни один из провайдеров не может быть установлен
- пакет xorg-x11-drv-nvidia-libs-3:440.26-1.fc32.x86_64 требует (xorg-x11-drv-nvidia-libs(x86-32) = 3:440.26-1.fc32, если mesa-libGL(x86-32)), но ни один из провайдеров не может быть установлен
- пакет libva-2.6.0-0.1.fc31.i686 требует libGL.so.1, но ни один из провайдеров не может быть установлен
- пакет xorg-x11-drv-nvidia-3:440.26-1.fc32.x86_64 требует libnvidia-glcore.so.440.26()(64bit), но ни один из провайдеров не может быть установлен
- пакет xorg-x11-drv-nvidia-3:440.26-1.fc32.x86_64 требует libnvidia-tls.so.440.26()(64bit), но ни один из провайдеров не может быть установлен
- пакет xorg-x11-drv-nvidia-3:440.26-1.fc32.x86_64 требует xorg-x11-drv-nvidia-libs(x86-64) = 3:440.26-1.fc32, но ни один из провайдеров не может быть установлен
- пакет steam-1.0.0.61-4.fc31.i686 требует libva(x86-32), но ни один из провайдеров не может быть установлен
- пакет kmod-nvidia-5.3.7-301.fc31.x86_64-3:440.26-1.fc31.x86_64 требует nvidia-kmod-common >= 3:440.26, но ни один из провайдеров не может быть установлен
- конфликтующие запросы
- проблема с установленным пакетом kmod-nvidia-5.3.7-301.fc31.x86_64-3:440.26-1.fc31.x86_64
(попробуйте добавить '--skip-broken', чтобы пропустить нельзя установить пакеты)

Это потому что драйвера nvidia обновляются из внешнего репозитория. Чтобы Steam работал, вам нужно добавить это:

sudo dnf install steam --enablerepo=rpmfusion-nonfree-rawhide

Надеюсь, это поможет.

Ответ или решение

Решение проблемы с использованием графического адаптера NVIDIA в Fedora 31

Введение

При установке операционной системы Fedora 31 пользователи ноутбуков с графическими адаптерами NVIDIA часто сталкиваются с проблемами, связанными с неправильной конфигурацией графических драйверов. В этой статье мы подробно рассмотрим, как настроить систему для использования NVIDIA в качестве основного графического рендерера и избежать использования программного рендеринга через llvmpipe.

Характеристика проблемы

На вашем ноутбуке MSI GL63 8RD установлены два графических адаптера: Intel UHD Graphics 630 и NVIDIA GeForce GTX 1050 Ti. При попытке запустить графические приложения в системе используется llvmpipe вместо драйвера NVIDIA, что приводит к снижению производительности и проблемам с запуском графически интенсивных приложений, таких как игры в Steam.

В приведенных вами логах видно, что модуль NVIDIA загружен, но возникают ошибки при запуске утилиты nvidia-settings, указывающей на проблемы с конфигурацией драйвера. Сообщение ERROR: Unable to load info from any available system говорит о том, что система не может получить информацию о графическом адаптере NVIDIA.

Устранение ошибки: шаги по исправлению

  1. Удаление старых драйверов

    • Убедитесь, что драйверы NVIDIA, установленные с сайта nvidia.com, полностью удалены, поскольку они могут конфликтовать с версиями, предоставленными через репозитории Fedora/RPM Fusion.
    • Выполните команду:
      sudo dnf remove "*nvidia*"
      sudo dnf remove "*nouveau*"
  2. Подключение репозиториев RPM Fusion

    • Для установки актуальных драйверов NVIDIA через менеджер пакетов используйте репозитории RPM Fusion. Это обеспечит более стабильную работу драйверов:
      sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
      https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
  3. Установка драйверов NVIDIA

    • Установите драйверы через dnf:
      sudo dnf install xorg-x11-drv-nvidia
  4. Обновление драйверов и Xorg

    • Если необходимо, обновите драйвера и сервер X с помощью следующей команды:
      sudo dnf copr enable kwizart/xorg-x11-server_nvidia
      sudo dnf update xorg-x11-server\*
      sudo dnf install rpmfusion-nonfree-release-rawhide
  5. Конфигурация драйвера NVIDIA

    • Создайте конфигурацию для управления параметрами драйвера:
      echo 'options nvidia NVreg_DynamicPowerManagement=0x02' | sudo tee /etc/modprobe.d/nvidia.conf
  6. Настройка xorg.conf

    • Скопируйте базовый файл конфигурации и измените его для указания на использование NVIDIA в качестве основного адаптера:
      sudo cp /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf
    • Добавьте строку Option "PrimaryGPU" "yes" в секцию "Device".
  7. Перезагрузка системы

    • После завершения всех изменений перезагрузите систему:
      sudo reboot
  8. Проверка установки

    • После перезагрузки проверьте, используется ли драйвер NVIDIA:
      inxi -G
    • Убедитесь, что в разделе OpenGL renderer присутствует ваш NVIDIA графический адаптер, а не llvmpipe.
  9. Запуск Steam

    • Если вы хотите запустить Steam с использованием NVIDIA, используйте следующую переменную окружения:
      __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia steam

Заключение

Следуя указанным шагам, вы сможете правильно настроить вашу систему Fedora 31 для использования графического адаптера NVIDIA в качестве основного. Это обеспечит лучшую производительность и позволит использовать все возможности ваших игр и графических приложений. Если вы столкнетесь с дальнейшими проблемами, рассмотрите возможность обращения в поддержку сообщества Fedora или на форумы RPM Fusion.

Оцените материал
Добавить комментарий

Капча загружается...