Разбираемся с NVIDIA на Linux

Какой выбрать драйвер: с открытым исходным кодом или проприетарный? Почему нельзя устанавливать драйвер с сайта NVIDIA? На эти и другие вопросы отвечу под катом.

Разбираемся с NVIDIA на Linux

Пост ориентирован на людей с видеокартами NVIDIA, которые только перешли на Linux или еще собираются перейти.

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

Также большое спасибо Сергею Латышеву за помощь с написанием этого текста.

Оглавление

Ну нет у Комитета денег на вложенные списки в редакторе, уж извините.

Выбор драйвера

Философия открытого программного обеспечения претит компании NVIDIA, поэтому делиться своими исходниками и помогать разработчикам Linux с поддержкой их драйвера они обычно не хотят. Из-за этого драйвер с открытым исходным кодом Nouveau не сможет раскрыть потенциал вашей видеокарты. Это особенно актуально для современных видеокарт с архитектурами Maxwell, Pascal, Turing или Ampere. Например, в Nouveau нет поддержки CUDA ядер.

Драйвер для GPU от AMD разрабатывается в тесном сотрудничестве с сообществом, поэтому большинство людей использует драйвер с открытым исходным кодом, который нативно поддерживает новые технологии (Wayland, например) и выдаёт лучшую производительность. С NVIDIA же ситуации зеркальная.

Если вы геймер или занимаетесь 3D моделированием, то вы будете использовать проприетарный драйвер. Драйвер с открытым исходным кодом можно использовать если у вас очень старая видеокарта. Даже для сёрфинга в интернете я бы советовал посмотреть проприетарный драйвер, потому что на драйвере Nouveau могут быть проблемы с температурой, оборотами кулеров и частотой.

Ниже сравнение производительности open-source и проприетарного драйверов для GT 1030.

Открытый драйвер - это Nouveau, а не X.Org <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dun7FxlL334g&postId=898395" rel="nofollow noreferrer noopener" target="_blank">Источник</a>
Открытый драйвер - это Nouveau, а не X.Org Источник

Также надо иметь в виду, что драйвер в репозитории дистрибутива, как правило, отстаёт от последнего драйвера NVIDIA. На сайте NVIDIA можно посмотреть последнюю версию драйвера для вашей видеокарты. В данный момент у меня это версия 470.74. При этом в Ubuntu этот драйвер уже находится в репозитории, а в Manjaro в Stable ветке находится версия 470.63.

Старые видеокарты

Отдельно нужно рассказать про старые видеокарты. Поддержка старых GPU может прекратится в новых версиях драйвера NVIDIA, X.Org или самого ядра. Давать какие-то универсальные советы тут сложно.

  • У ряда дистрибутивов есть пользовательские репозитории со старыми драйверами NVIDIA.
  • Можете попробовать использовать старые LTS версии дистрибутивов. Например, Ubuntu 14.04 LTS или 16.04 LTS.
  • Если поддержка прекращена в новой версии ядра, то нужно откатиться на предыдущее ядро.
  • Если поддержка прекращена в новой версии драйвера NVIDIA, то нужно откатиться на старый драйвер.

Важно помнить, что Linux - это не Windows:

  • Принудительно обновлять вашу систему за вас никто не будет.
  • Ожидать, что всё ваше железо будет исправно работать и его будут поддерживать, не стоит. Выбирать железо под софт так же важно, как софт - под железо.

В этом гайде я не буду описывать установку драйверов на старые видеокарты, но я приложу ссылки, где вы можете узнать про установку подробнее.

Установка и удаление драйвера

В этой части статьи я затрону процесс установки и удаления проприетарного драйвера от NVIDIA через GUI и CLI (Интерфейс командной строки) на примере популярных дистрибутивов в разных DE.

Зачем нужно показывать установку через CLI? Неужели Linux нельзя использовать в 2021 году без знания команд в терминале? Можно. Но предупрежден - значит вооружён. Ни я, ни мои знакомые не сталкивались с проблемой отказа работы драйвера NVIDIA и ручной переустановкой, но это знание может вам пригодиться.

Разбираемся с NVIDIA на Linux

Еще запомните навсегда, что НЕЛЬЗЯ устанавливать драйвер NVIDIA с их сайта. Если вы используете пакетный дистрибутив, то вам необходимо использовать пакеты из репозиториев. На это есть причины:

  • Драйвер NVIDIA с сайта может перезаписать библиотеки из пакета mesa, отчего у вас может перестать работать открытый драйвер.
  • При обновлении ядра модуль ядра NVIDIA не собирается, а значит вам нужно будет переустанавливать драйвер при каждом обновлении ядра.
  • Так как теперь ни открытый драйвер, ни проприетарный не работает, то переустанавливать драйвер нужно будет с помощью CLI (терминал).

Ubuntu и Ubuntu-based дистрибутивы

Для этого гайда я протестировал Ubuntu 20.04, Zorin OS 16, Linux Mint 20.02 Cinnamon и Mate, и процесс установки везде одинаковый. Из всех дистрибутивов я бы выделил Zorin OS и Pop!_OS, так как они предлагают пользователям с видеокартами NVIDIA предустановленный драйвер. На остальных драйвер нужно докачивать, а по умолчанию используется драйвер Nouveau.

Раньше в Ubuntu подключали PPA для получения последних версий драйвера NVIDIA, но сейчас в репозиториях Ubuntu находится последний драйвер. Главное не забывать обновлять базу репозиториев.

GUI-метод

В Ubuntu и Zorin OS есть программа Software & Updates. В ней мы должны включить пункт "проприетарные драйвера для устройств" среди устанавливаемых пакетов. Без этой галочки драйвера NVIDIA не будут показываться.

Обязательно нажимаем кнопку “Закрыть” и обновляем информацию о пакетах в появившемся окне.

Разбираемся с NVIDIA на Linux

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

Разбираемся с NVIDIA на Linux

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

После перезапуска мы можем зайти сюда же и посмотреть, какой видеодрайвер используется.

В Linux Mint не нужно подключать сторонние репозитории, а проприетарный драйвер можно установить в Driver Manager, который находится под пунктом Administration.

Перед установкой проприетарного драйвера в Mint не забудьте обновить репозитории, чтобы получить последние версии драйвера (см. пункт CLI)

Удалить явно через GUI драйвер нельзя, но если мы установим другой драйвер, то старый будет удалён.

CLI-метод

В большинстве дистрибутивах для открытия терминала используется сочетание клавиш: CTRL + ALT+ T.

Для полного перехода в CLI можно использовать сочетание клавиш: CTRL + ALT + F2 или CTRL + ALT + F3 - и вернутся обратно в графический режим с помощью: CTRL + ALT + F7.

Пример консольного режима
Пример консольного режима

В Ubuntu-based дистрибутивах используется apt, поэтому все эти команды будут работать и в Ubuntu, и в Zorin OS, и в Linux Mint.

Перед установкой драйвера необходимо проверить наличие новых пакетов в репозиториях и обновиться. Для этого мы в терминале выполняем команды:

sudo apt update sudo apt upgrade

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

apt search nvidia-driver
Список драйверов здесь больше чем в программе с GUI.
Список драйверов здесь больше чем в программе с GUI.

Когда вы выбрали драйвер, вводите команду:

sudo apt install nvidia-driver-*** # вместо *** введите выпуск выбранного драйвера

Когда установка завершится - перезапускаем компьютер. Сделать это можно через всё тот же терминал и команду reboot.

Для удаления драйвера можно использовать команду:

sudo apt purge ‘^nvidia-.*’

Также можно посмотреть список всех установленных библиотек NVIDIA с помощью:

dpkg -l | grep -i nvidia
Разбираемся с NVIDIA на Linux

И точечно удалить выведенные библиотеки с помощью команды:

sudo apt purge *название пакета1* *название пакета2* *название пакета3*

У меня бы процесс удаления выглядел примерно так:

sudo apt purge nvidia-cfg1-470 nvidia-common-470 nvidia-compute-470 nvidia-compute-470:i386 nvidia-compute-470:amd64 #и так далее

После установки драйвера перезапускаем компьютер. Если всё прошло успешно, то у вас появится программа NVIDIA X Server Settings.

Разбираемся с NVIDIA на Linux

Если по какой-то причине у вас появятся проблемы с драйвером Nouveau, то установить и удалить его можно следующими командами:

sudo apt install xserver-xorg-video-nouveau #установка sudo apt purge xserver-xorg-video-nouveau #удаление

Linux Mint

При установке проприетарного драйвера на Linux Mint я столкнулся с ошибкой, из-за которой драйвер NVIDIA не работал корректно. Driver Manager пишет, что стоит последний драйвер, но при этом очевидно, что он не работает.

Исправляется это достаточно просто. Запускаем терминал и прописываем там команду:

sudo nano /etc/modules
Разбираемся с NVIDIA на Linux

В открывшемся файле под комментариями прописываем в отдельных строчках следующее:

nvidia nvidia-drm nvidia-modeset
Разбираемся с NVIDIA на Linux

Сохраняем файл и выходим из редактора с помощью сочетаний: Ctrl + X, Y и Enter. Перезапускаем ПК.

Fedora 34

Совместимость для старых видеокарт и команды для установки драйвера можно здесь. Дальше я буду описывать установку для современных видеокарт.

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

По умолчанию репозитории с проприетарными пакетами не включены, поэтому мы должны будем подключить RPM Fusion сами. Сделать это можно несколькими способами, но я опишу два: через приложение Software или с помощью терминала.

Если вы выбрали первый вариант, то мы должны зайти в приложение Software и нажать на кнопку меню в правом верхнем углу и в выпавшем меню выбираем Software Repositories.

Разбираемся с NVIDIA на Linux
Разбираемся с NVIDIA на Linux

В открывшемся окне нас интересует “RPM Fusion бла бла бла NVIDIA Driver”. Выбираем этот пункт и нажимаем Enable.

Разбираемся с NVIDIA на Linux

Если вы выбрали второй вариант,то мы должны зайти на сайт rpmfusion и узнать адрес зеркала для Nonfree RPM Fusion пакетов. Копируем ссылку и пишем следующую команду в терминал:

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

Когда репозитории с драйвером NVIDIA добавлены, мы обновляем систему с помощью команд:

sudo dnf update sudo dnf upgrade

Для установки драйвера и сборки его модуля ядра используем команду:

sudo dnf install akmod-nvidia

После этого нужно до 5 минут ждать сборку модуля. Проверить успешность сборки можно с помощью команды modinfo -F version nvidia

И опционально для включения поддержки технологий CUDA, NVDEC или NVENC после установки нужно прописать команду:

sudo dnf install xorg-x11-drv-nvidia-cuda

После этого перезапускаем систему.

Удалить видеодрайвер можно с помощью команд:

sudo dnf remove \*nvidia\* sudo dracut --force

Manjaro

Несмотря на то что Manjaro является rolling дистрибутивом, в стабильную ветку пакеты попадают после тщательной проверки. Из-за этого последняя версия драйвера для вашей видеокарты может не находится в репозитории, и вам нужно будет менять текущую ветку на Unstable. Описывать этот процесс я здесь не буду, но точка отсчета у вас теперь есть.

У Manjaro есть MHWD ( Manjaro HardWare Detection), который выполняет ту же функцию, что и Software & Updates с ubuntu-devices в Ubuntu. MHWD помогает ставить драйверы для ваших устройств. У него есть GUI и CLI версии.

GUI-метод

GUI версия MHWD находится в Manjaro Settings Manager. Нужный нам интерфейс находится в Hardware Configuration.

Разбираемся с NVIDIA на Linux

Здесь мы можем увидеть своё устройство и список драйверов для него.

video-nvidia - это последняя доступная версия проприетарного драйвера NVIDIA.
video-linux - это открытый драйвер Nouveau.

Скачать драйвер можно через ПКМ по нужному драйверу или кнопку Auto Install сверху.

Разбираемся с NVIDIA на Linux

После завершения загрузки перезапускаем ПК.

Удаляется драйвер также в этом меню через ПКМ, где у нас появляется опция Remove.

CLI-метод

Узнать текущий видеодрайвер можно с помощью команды glxinfo | grep OpenGL

Разбираемся с NVIDIA на Linux

Узнать список драйверов, доступных для вашей видеокарты можно с помощью mhwd -l или mhwd -la .

Разбираемся с NVIDIA на Linux

video-nvidia - это последняя доступная версия проприетарного драйвера NVIDIA.

video-linux - это открытый драйвер Nouveau.

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

sudo mhwd -i pci video-nvidia
Разбираемся с NVIDIA на Linux

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

Разбираемся с NVIDIA на Linux

После перезапуска мы можем проверить установленный драйвер уже знакомой командой.

Разбираемся с NVIDIA на Linux

Для удаления видеодрайвера нужно узнать его название. Посмотреть установленные драйверы можно с помощью команд mhwd -li или mhwd -li -d

Разбираемся с NVIDIA на Linux

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

sudo mhwd -r pci video-nvidia

Какие проблемы могут возникнуть

Все настройки в NVIDIA X Server можно изменять через CLI и конфиги, но я буду показывать всё на примере графической утилиты NVIDIA X Server Settings.

Разбираемся с NVIDIA на Linux

Загрузка конфигурации при запуске

Проблема актуальная для пользователей Manjaro. Недостаточно поменять значение в этом приложении. Между сессиями X Server, который отвечает за отрисовку, не сохраняет наши значения, а значит нам придётся сохранять значения в файле конфигурации и загружать его при запуске. Во всех Ubuntu-based дистрибутивах и Fedora конфигурация ставится в автозапуск сама.

Драйвер не сохраняет значения намеренно, но от этого не легче
Драйвер не сохраняет значения намеренно, но от этого не легче

Выбираем все значения, которые нам нужны, тыкаем кнопку сохранения текущей конфигурации на странице nvidia-settings Configuration и оставляем место по умолчанию.

Разбираемся с NVIDIA на Linux

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

XFCE

В приложении Session and Startup во второй вкладке создаём новое приложение с командой: nvidia-settings --load-config-only , — которая будет загружать конфигурацию настроек в начале каждой сессии. Напротив Trigger выбираем опцию On Login ( на русском будет что-то вроде: "при запуске", "на входе систему" и т.п. ).

Разбираемся с NVIDIA на Linux

GNOME и KDE

Из коробки в GNOME и KDE нет приложения c GUI для добавления команд в автозапуск. Но мы можем это легко сделать созданием файла .desktop в папке autostart.

Для этого в терминале прописываем следующую команду:

sudo nano ~/.config/autostart/nvidia-config.desktop
Разбираемся с NVIDIA на Linux

Содержание этого файла должно быть таким:

[Desktop Entry] Name=Nvidia Configuration GenericName=Nvidia Configuration Loader Exec=nvidia-settings --load-config-only Terminal=false Type=Application

Сохраняем и выходим из редактора с помощью сочетаний: Ctrl + X, Y и Enter.

Проблема с контрастностью

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

Разбираемся с NVIDIA на Linux

Можно оставить всё как есть и настроить монитор, а можно вместо Full выбрать опцию Limited. Если же вам нужна более гибкая настройка, то вы можете зайти в соседнюю вкладку Color Correction и подкрутить значения, как вам нужно.

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

Тиринг в играх

Несмотря на включенный VSYNC, вы можете наблюдать тиринг картинки. Лично я столкнулся с этим только в Half-Life 2.

Это легко исправляется во всё том же NVIDIA X Server. На этот раз нам нужно зайти в X Server Display Configuration.

Разбираемся с NVIDIA на Linux

Здесь же мы выбираем наш монитор и нажимаем кнопку Advanced в правом углу. Пунктов стало немного больше. Нас интересует Force Full Composition Pipeline. Ставим галочку напротив этой опции, нажимаем Apply и сохраняем конфигурацию (нам нужна кнопка сохранения НЕ в этом окне, а последнем nvidia-settings Configuration). Теперь тиринга не должно быть.

Разбираемся с NVIDIA на Linux

Производительность FireFox

После перехода с Windows я заметил ухудшение в производительности Firefox на своём ПК. Благодаря Даниилу Масленникову я узнал, как можно немного улучшить ситуацию, за что ему большое спасибо! Chromium работает в любом случае лучше, но кому-то может пригодится эта информация.

Лучше всего Firefox работает с композитором Wayland, который нативно поддерживается в данный момент только на видеокартах от AMD. С Wayland в Firefox по умолчанию работает WebRender, который может дать ощутимый прирост в производительности. Но лично у меня на даже на иксах он начал работать намного шустрее, хоть и ставите вы его на свой страх и риск.

Чтобы включить WebRender , надо ввести в адресной строке: about:config - и там же в поиске: gfx.webrender.all . И поставить значение true.

Разбираемся с NVIDIA на Linux

Заключение

Сейчас с видеодрайверами в Linux всё намного лучше чем раньше, особенно у современных видеокарт. NVIDIA хоть и проводит странную политику со своими драйверами, но со временем ей приходится сдавать назад и прислушиваться к сообществу. А многие дистрибутивы стараются быть более дружелюбными к пользователям, предоставляя удобные интерфейсы.

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

106106
156 комментариев

Комментарий недоступен

49
Ответить

Комментарий недоступен

18
Ответить

Комментарий недоступен

11
Ответить

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

4
Ответить

Комментарий недоступен

1
Ответить

Дурачок? Просто пару пакетов поставить, где тут ебля?

1
Ответить