Вопрос или проблема
Я хочу использовать только свою видеокарту 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.
Устранение ошибки: шаги по исправлению
-
Удаление старых драйверов
- Убедитесь, что драйверы NVIDIA, установленные с сайта nvidia.com, полностью удалены, поскольку они могут конфликтовать с версиями, предоставленными через репозитории Fedora/RPM Fusion.
- Выполните команду:
sudo dnf remove "*nvidia*" sudo dnf remove "*nouveau*"
-
Подключение репозиториев 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
- Для установки актуальных драйверов NVIDIA через менеджер пакетов используйте репозитории RPM Fusion. Это обеспечит более стабильную работу драйверов:
-
Установка драйверов NVIDIA
- Установите драйверы через
dnf
:sudo dnf install xorg-x11-drv-nvidia
- Установите драйверы через
-
Обновление драйверов и Xorg
- Если необходимо, обновите драйвера и сервер X с помощью следующей команды:
sudo dnf copr enable kwizart/xorg-x11-server_nvidia sudo dnf update xorg-x11-server\* sudo dnf install rpmfusion-nonfree-release-rawhide
- Если необходимо, обновите драйвера и сервер X с помощью следующей команды:
-
Конфигурация драйвера NVIDIA
- Создайте конфигурацию для управления параметрами драйвера:
echo 'options nvidia NVreg_DynamicPowerManagement=0x02' | sudo tee /etc/modprobe.d/nvidia.conf
- Создайте конфигурацию для управления параметрами драйвера:
-
Настройка
xorg.conf
- Скопируйте базовый файл конфигурации и измените его для указания на использование NVIDIA в качестве основного адаптера:
sudo cp /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf
- Добавьте строку
Option "PrimaryGPU" "yes"
в секцию "Device".
- Скопируйте базовый файл конфигурации и измените его для указания на использование NVIDIA в качестве основного адаптера:
-
Перезагрузка системы
- После завершения всех изменений перезагрузите систему:
sudo reboot
- После завершения всех изменений перезагрузите систему:
-
Проверка установки
- После перезагрузки проверьте, используется ли драйвер NVIDIA:
inxi -G
- Убедитесь, что в разделе OpenGL renderer присутствует ваш NVIDIA графический адаптер, а не llvmpipe.
- После перезагрузки проверьте, используется ли драйвер NVIDIA:
-
Запуск Steam
- Если вы хотите запустить Steam с использованием NVIDIA, используйте следующую переменную окружения:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia steam
- Если вы хотите запустить Steam с использованием NVIDIA, используйте следующую переменную окружения:
Заключение
Следуя указанным шагам, вы сможете правильно настроить вашу систему Fedora 31 для использования графического адаптера NVIDIA в качестве основного. Это обеспечит лучшую производительность и позволит использовать все возможности ваших игр и графических приложений. Если вы столкнетесь с дальнейшими проблемами, рассмотрите возможность обращения в поддержку сообщества Fedora или на форумы RPM Fusion.