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

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

Введение

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

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

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

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

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

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

Существуют два несовместимых друг с другом типа драйверов NVIDIA:

  1. обычный драйвер для десктопов и ноутбуков без гибридной графики;
  2. NVIDIA Optimus драйвер.

Рассмотрим каждый подробнее.

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

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

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 (серии 400, 500, 600, 700, 800 (ноутбуки), 900 и 1000 и более современные):

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

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

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

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

Для устаревших видеокарт NVIDIA (серии 6000, 7000, 8000, 9000, 200, 300):

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

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

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

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

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

sudo akmods --force

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

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

sudo dracut /boot/initramfs-$(uname -r).img $(uname -r) --force

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

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

sudo dnf remove \*nvidia\*

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

sudo dracut /boot/initramfs-$(uname -r).img $(uname -r) --force

Также потребуется обновить конфиг загрузчика Grub 2. Версия для legacy конфигураций:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Версия для UEFI конфигураций:

sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

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

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

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

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

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

На ноутбуках с гибридной графикой NVIDIA Optimus устанавливать описанный выше драйвер не следует, т.к. он не будет работать и при загрузке получим чёрный экран. Вместо этого следует использовать Bumblebee.

Подключим репозитории со «шмелём»:

sudo dnf --nogpgcheck install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee/fedora$(rpm -E %fedora)/noarch/bumblebee-release-1.2-1.noarch.rpm
sudo dnf --nogpgcheck install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree/fedora$(rpm -E %fedora)/noarch/bumblebee-nonfree-release-1.2-1.noarch.rpm

Теперь установим проприетарные драйверы NVIDIA в managed исполнении:

sudo dnf install gcc kernel-headers kernel-devel bumblebee-nvidia bbswitch-dkms primus

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

sudo dnf install VirtualGL.i686 primus.i686

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

optirun [параметры] application [параметры запуска приложения]

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

optirun -b none nvidia-settings -c :8

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

optirun wine app.exe

Другую полезную информацию о настройке Bumblebee можно найти в Wiki.

Пользователям Gnome с Wayland

Если используется Gnome с GDM, то необходимо отключить поддержку Wayland ибо проприетарные драйверы NVIDIA на момент написания данной статьи работают с ним некорректно. Для этого нужно отредактировать файл /etc/gdm/custom.conf, добавив или расскомментировав строку WaylandEnable=false:

sudo vim /etc/gdm/custom.conf

Если этот шаг пропустить, то при следующей загрузки увидим серый экран с надписью «Упс, что-то пошло не так». Пользователи KDE, XFCE и других DE могут смело его пропускать ибо в Fedora используется Wayland пока только для Gnome.

36 комментариев к записи

  1. Не находит akmod-nvidia, org-x11-drv-nvidia, xorg-x11-drv-nvidia-libs
    Пакета с названием akmod-nvidia не найдено.
    Пакета с названием xorg-x11-drv-nvidia не найдено.
    Пакета с названием xorg-x11-drv-nvidia-libs не найдено.
    Ошибка: Совпадений не найдено.

    1. Сначала нужно подключить репозитории RPMFusion, как сказано в статье. После этого данные пакеты смогут быть установлены.

  2. Всё установил и работает, но неправильно… У меня ноут M50Vn с графической картой GeForce 9650M GT. Я столько лет потратил на это столько раз переустанавливал Ось после неудачной установки Nvidia. Я нашёл единственный удачный драйвер для ядра 2.6. К несчастью более поздние версии не поддерживает этот драйвер. Но мне кажется в связи с экспериментами с графической картой она просто накрылась. Однако на ядре 2.6 тот драйвер работает по прежнему. Не идеально, но в игры играть можно. Я не знаю какая это версия fedora, но Suse 11.4. Это ось 10-ти летней давности и для неё давно нет поддержки. Но думаю если поставить CentOS 6, то будет. Не работает аспект. Почему-то монитор стал вместо 16:9 3:4. Все картинки искажены ужасно. Смотреть невозможно, но это лучше, чем когда у тебя система вылетала через 3 минуты из-за нестабильности. Хотя там аспект не искажался. Я не уверен, что вообще возможно нормально установить эту карту. Возможно именно моя карта такая неудачная. Но я уже зарёкся когда-либо связываться с Nvidia. Ибо хуже не придумаешь когда навороченая карта не то, что не работает, а вообще автоматом подвешивает систему. Это всё из-за брэнда… Никогда не покупайте навороченный хард для Linux, не будет работать в лучшем случае… И ни в коем случае не мелкософтовский или компании связанyой с ней. А NVidia связана. Никто не знает как она работает, пишут наугад.. Даже тот драйвер общего типа и в бинарной форме. Исходников нет… Лучше какой нибудь ATI. Эти работают железно!!!

    1. У меня ноут M50Vn с графической картой GeForce 9650M GT

      Эта карта поддерживается более старой версией драйвера — nvidia-304xx. В статье сказано о том, как его установить.

      Я столько лет потратил на это столько раз переустанавливал Ось после неудачной установки Nvidia

      Если устанавливать всё, как описано в статье, то при возникновении проблем будет достаточно просто удалить данные пакеты и пересобрать initrd образ.

      Лучше какой нибудь ATI. Эти работают железно!

      Только те, которые поддерживаются свободным драйвером. Их проприетарные драйверы даже хуже, чем у NVIDIA.

      А вообще, лучшие видеокарты для GNU/Linux — это интегрированные в процессоры Intel. С ними нет проблем.

  3. После установки Nvidia драйверов в fedora 25\26 вместо сплеша с логотипом федоры появляется серый экран с тремя белыми точками, не подскажете можно эту мерзость вообще убрать? А то стирание опции quiet в /etc/default/grub и добавление GRUB_CMDLINE_LINUX_DEFAULT=»» не дает никаких результатов(конфиг груба конечно перегенерировал su -c ‘grub2-mkconfig -o… и т д)

    1. После установки Nvidia драйверов в fedora 25\26 вместо сплеша с логотипом федоры появляется серый экран с тремя белыми точками, не подскажете можно эту мерзость вообще убрать?

      Это известная проблема проприетарных драйверов. Другая проблема — невозможность задания родного для монитора разрешения виртуальных консолей фреймбуфера (всегда будет использоваться 800*600).

  4. Теперь вырежем из образа initrd драйвер nouveau и добавим NVIDIA:
    sudo dracut /boot/initramfs-$(uname -r).img $(uname -r) —force

    Начиная, вроде бы, с 26 версии федоры, этого делать не требуется.

    1. Да, этот шаг есть в скриптлетах устанавливаемых RPM пакетов с модулями ядра, но часто он отрабатывает некорректно и пользователь получает чёрный экран после загрузки, поэтому лучше ещё раз прогнать самостоятельно.

  5. EFI, делал в таком порядке:

    dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs
    dnf install xorg-x11-drv-nvidia-libs.i686
    sudo akmods —force
    sudo dracut /boot/initramfs-$(uname -r).img $(uname -r) —force
    sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

    после перезагрузки — Minimal BASH like…….

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

      fpaste --sysinfo
      lspci | fpaste

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

      1. Похоже я сам на чем-то сглупил но проблема решилась так: выполнил только одну команду
        + установил vulcan, cuda но они думаю не суть и все заработало на свежеустановленном fedore 27.

  6. Полезный материал, спасибо автору.
    Рекомендую сделать небольшое дополнение к статье, что делать при обновлении ядра.
    Я установил драйвера нвидиа, но потом (через месяц) обновил ядро, однако оно не может загрузиться. Я так понимаю, что хоть нвидиа и rpm через rpmfusion, но все равно там сборка происходит с учетом заголовочных файлов текущей версии ядра.
    Всего хорошего!

    1. Нет, такого быть не должно. При каждом обновлении ядра Fedora автоматически загружаются и соответствующие development пакеты, после чего выполняется akmods, который собирает новые kmod модули для нового ядра.

      1. После обновления ядра 4.13 на 4.14 система норм загрузилась, но дрова не подхватились.
        Пришлось снова вводить

        sudo akmods --force
        1. Обычно достаточно просто подождать несколько минут пока прямо во время загрузки будет скомпилирован и установлен необходимый модуль ядра.

  7. Большое спасибо за статью. Удалось все согласно инструкции в Fedora 27.

    Вот только sudo akmods —force завершался ошибкой и просил убедиться правильная ли версия kernel-devel установлена.

    Если у кого так будет, стоит выполнить

    sudo dnf install kernel-devel-версия_ядра_которое_не_находит

    А уже после его установки

    sudo akmods --force
    1. Да, если в системе есть более старые версии ядер (по умолчанию dnf сохраняет 2 предыдущих ядра), то нужно либо установить соответствующие development пакеты для них вручную, либо просто удалить их. Новые версии будут автоматически устанавливаться сразу с development пакетами.

  8. Сделал все, как описано в статье, драйверы встали, но теперь Гном не реагирует на кнопки мыши (нет реакции при щелчке по верхней панели Гнома, списку программ; окна нельзя переместить за заголовок окна или закрыть нажатием на крестик). Причем непосредственно в запускаемых приложениях все работает нормально. Подскажите, что можно сделать?

    1. Вы используете Gnome на Wayland или X11? Видеокарты NVIDIA с проприетарными драйверами пока не очень хорошо работают с Wayland, поэтому рекомендую попробовать в менеджере сессий GDM выбрать пункт Gnome on X11 и проверить воспроизведётся ли проблема.

      1. Как написано в конце статьи в /etc/gdm/custom conf раскомментировал строку WaylandEnable=false, так что Х11.

        1. Этого недостаточно. Данная строка лишь заставляет сам GDM использовать X11. Gnome при этом всё равно будет в Wayland запускаться. Для полного переключения на X11 нужно в списке доступных сессий выбрать пункт Gnome on X11.

          1. Странно, но у меня в списке сессий есть только GNOME и GNOME Classic. Гном запускается в X11, судя по
            $ loginctl show-session 4 -p Type
            Type=x11
            Возможно проблема из-за того, что обновился с RF25 в связи с EOL. Нужно было до 26 обновляться и на ней посидеть пару-тройку месяцев, а то что-то намучился с 27-й уже — на другой машине регулярные зависания намертво, хотя там и чистая установка.
            Ну да ладно, дрова от нвидии для меня не сильно критичны, в любом случае спасибо за ответы! 🙂

          2. Возможно проблема из-за того, что обновился с RF25 в связи с EOL.

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

  9. Все поставил как указано в инструкции. Ничего вроде не отвалилось. Но любые команды с optirun ноут почему-то упрямо игнорирует. Ноутбук asus x75v. Fedora 24

  10. Помогите, пожалуйста. Всё делаю, как написано в статье, однако nouveau как был, так и остаётся на месте!

    Fedora 27, VGA compatible controller: NVIDIA Corporation GK208B [GeForce GT 730] (rev a1).

    делаю:

    dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs xorg-x11-drv-nvidia-libs.i686
    akmods --force
    dracut /boot/initramfs-$(uname -r).img $(uname -r) --force

    Никаких ошибок не было. Посоветуйте, что можно сделать?

    1. Попробуйте задать дополнительные параметры ядра:

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

      Это полностью отключит запуск nouveau.

    1. Мы проверили — всё работает. Убедитесь, что вы верно скопировали команду подключения репозитория.

  11. Спасибо, репозиторий подключился. Теперь при выполнении шага 2 (установка проприетарных драйверов) получаю ошибку об отсутствии совпадения для аргумента bamblebee-nvidia.
    Извините, если задаю глупые вопросы. Я самый начинающий. Заранее спасибо.

    1. У вас опечатка. Нужно писать bumblebee-nvidia. Просто копируйте строки целиком и вставляйте в консоль.

      Двойной клик по строке с кодом на сайте автоматически выделит её и чтобы скопировать в буфер обмена достаточно нажать комбинацию Ctrl+C. Для вставки в эмулятор терминала из буфера — Ctrl+Shift+V.

  12. Спасибо, теперь все получилось. До этого (когда не получалось) я тоже копипастил, но получилось, почему-то, только сейчас. ))
    Единственная разница, которая, по идее не должна была бы ни на что влиять, это то, что ранее, когда не получалось, я заходил под SU и копипастил без sudo. Сейчас и под SU зашел, и вводил команды через sudo.
    Спасибо еще раз большое.

    1. На будущее — используйте что-то одно: либо su, либо sudo, ибо они делают одно и то же — запускают команды с правами суперпользователя.

      Лично я рекомендую всегда использовать только sudo от текущего пользователя (пользователь при этом должен состоять в группе wheel), т.к. он более безопасен, а все действия логируются в журнале аудита системы.

  13. У меня проблема. Следую гайду, у меня nvidia 820m, fedora 27. После всех настроек остается только интеловский чип. Когда пишу lspci то vga-intel, 3d — nvidia. Раза 3 прошел по гайду и ничего не меняется. Что с этим можно сделать?

    1. Т.к. у вас ноутбук, вы должны устанавливать Bumblebee драйверы (для NVIDIA Optimus) согласно инструкции.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *