Правильная установка драйверов 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 |