понедельник, 4 декабря 2023 г.

Правильная установка драйверов NVIDIA в Fedora

 

Правильная установка драйверов NVIDIA в Fedora

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

Введение

К написанию данной статьи меня побудила статья на другом сайте, в которой рассказывается о единственно верном с их точки зрения варианте установки посредством запуска с правами суперпользователя .run файла, скачанного с официального сайта NVIDIA.

Это в корне неправильный способ, поэтому его никогда не следует использовать в пакетных дистрибутивах, к коим относится и Fedora, т.к. использовав такой способ установки, вы порождаете в системе кучу никем не отслеживаемых файлов, конфигов и даже драйверов, что будет вызывать серьёзные проблемы при работе и обновлениях.

Механизмов безопасного удаления после такой установки также не предусмотрено, поэтому потребуется либо вручную искать и удалять установленные блобом файлы, а также править назад все изменённые конфиги, что очень долго и нудно, либо переустанавливать систему с нуля.

Выбор способа установки

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

Установленные из репозиториев драйверы будут автоматически обновляться штатным для дистрибутива способом (для Fedora через dnf upgrade, либо графический менеджер пакетов на базе PackageKit).

Установка обычного драйвера

Обычный проприетарный драйвер NVIDIA доступен в репозиториях RPM Fusion, поэтому нам потребуется подключить их если они ещё не подключены (необходимы как free, так и nonfree):

1
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

Теперь мы должны установить набор сборки драйвера: компилятор GCC и заголовочные файлы ядра, исходники ядерного модуля, а также сам драйвер.

Установка для современных видеокарт

Вариант для современных видеокарт NVIDIA (серии 800 (ноутбуки), 900 и 1000, 2000, 1600, 3000 и более современные):

1
sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs xorg-x11-drv-nvidia-power

Если используется 64-битная ОС, но требуется запускать ещё и Steam и 32-битные версии игр, то установим также 32-битный драйвер (устанавливать сразу после предыдущих):

1
sudo dnf install xorg-x11-drv-nvidia-libs.i686

Установка для более старых видеокарт

Для видеокарт NVIDIA серий 600 и 700:

1
sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia-470xx xorg-x11-drv-nvidia-470xx xorg-x11-drv-nvidia-470xx-libs xorg-x11-drv-nvidia-470xx-power

Для 64-битных ОС с необходимостью запуска 32-битных игр (устанавливать сразу после предыдущих):

1
sudo dnf install xorg-x11-drv-nvidia-470xx-libs.i686

Установка для устаревших видеокарт

Для устаревших видеокарт NVIDIA (300, 400, 500):

1
sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia-390xx xorg-x11-drv-nvidia-390xx xorg-x11-drv-nvidia-390xx-libs

Для 64-битных ОС с необходимостью запуска 32-битных игр (устанавливать сразу после предыдущих):

1
sudo dnf install xorg-x11-drv-nvidia-390xx-libs.i686

Действия по окончании установки

По окончании установки необходимо убедиться, что модули ядра были успешно собраны и установлены корректно:

1
sudo akmods --force

Если возникла ошибка, то подробный журнал можно найти в каталоге /var/cache/akmods/nvidia/.

Теперь вырежем из образа initrd драйвер nouveau и добавим NVIDIA:

1
sudo dracut --force

Активируем systemd-юниты для корректной работы ждущего и спящего режимов:

1
sudo systemctl enable nvidia-{suspend,resume,hibernate}

Удаление драйверов

Если возникли какие-то проблемы, либо драйверы NVIDIA более не требуются, то их всегда можно удалить штатным способом:

1
sudo dnf remove \*nvidia\*

По окончании удаления необходимо в обязательном порядке пересобрать образ initrd, чтобы вернуть в него удалённый при установке свободный драйвер nouveau:

1
sudo dracut --force

При возникновении чёрного экрана

Если по окончании установки и перезагрузки вместо окна входа в систему нас встретит чёрный экран, то в загрузчике добавим через пробел следующие параметры ядра:

1
rd.drivers.blacklist=nouveau nouveau.modeset=0

Также нужно в обязательном порядке зайти в модуль настройки UEFI компьютера или ноутбука и отключить UEFI Secure Boot (сама Fedora поддерживает работу с Secure Boot, однако модули ядра проприетарного драйвера не имеют цифровой подписи, поэтому не могут быть загружены в данном режиме и, как следствие, пользователь увидит чёрный экран), а также перевести его из режима Windows Only в Other OS.

Работа с включённым UEFI Secure Boot поддерживается начиная с Fedora 36, однако требуется настройка.

Установка драйверов для NVIDIA Optimus

Начиная с Fedora 31 и версии проприетарного драйвера 435.xx, технология NVIDIA Optimus, используемая в ноутбуках с гибридной графикой, поддерживается в полной мере «из коробки». К сожалению, старые поколения видеокарт (ниже серии 700) им не поддерживаются и поэтому работать не будут.

Подключим репозитории RPM Fusion:

1
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 для современных видеокарт:

1
sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs

Если используется 64-битная ОС, но требуется запускать ещё и Steam и 32-битные версии игр, то установим также 32-битный драйвер (устанавливать сразу после предыдущих):

1
sudo dnf install xorg-x11-drv-nvidia-libs.i686

Действия по окончании установки

По окончании установки необходимо убедиться, что модули ядра были успешно собраны и установлены корректно:

1
sudo akmods --force

Если возникла ошибка, то подробный журнал можно найти в каталоге /var/cache/akmods/nvidia/.

Теперь вырежем из образа initrd драйвер nouveau и добавим NVIDIA:

1
sudo dracut --force

При возникновении чёрного экрана

Если по окончании установки и перезагрузки вместо окна входа в систему нас встретит чёрный экран, то в загрузчике добавим через пробел следующие параметры ядра:

1
rd.drivers.blacklist=nouveau nouveau.modeset=0

Также нужно в обязательном порядке зайти в модуль настройки UEFI компьютера или ноутбука и отключить UEFI Secure Boot (сама Fedora поддерживает работу с Secure Boot, однако модули ядра проприетарного драйвера не имеют цифровой подписи, поэтому не могут быть загружены в данном режиме и, как следствие, пользователь увидит чёрный экран), а также перевести его из режима Windows Only в Other OS.

Работа с NVIDIA Optimus

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

1
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia application [параметры запуска приложения]

Пример запуска панели управления NVIDIA для Optimus конфигураций:

1
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia nvidia-settings -c :8

Пример запуска приложения app.exe через Wine на Optimus:

1
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia wine app.exe

Удаление драйверов

Если возникли какие-то проблемы, либо драйверы NVIDIA более не требуются, то их всегда можно удалить штатным способом:

1
sudo dnf remove \*nvidia\*

По окончании удаления необходимо в обязательном порядке пересобрать образ initrd, чтобы вернуть в него удалённый при установке свободный драйвер nouveau:

1
sudo dracut --force