Разбираемся с NVIDIA на Linux
Какой выбрать драйвер: с открытым исходным кодом или проприетарный? Почему нельзя устанавливать драйвер с сайта NVIDIA? На эти и другие вопросы отвечу под катом.
Пост ориентирован на людей с видеокартами NVIDIA, которые только перешли на Linux или еще собираются перейти.
Еще отмечу, что на ПК я использую английский язык, но на случай, если у вас система на русском языке, я буду прикладывать скриншоты, чтобы вы могли разобраться.
Также большое спасибо Сергею Латышеву за помощь с написанием этого текста.
Оглавление
- Выбор Драйвера
- Старые видеокарты
- Установка и удаление драйвера
|--- Ubuntu и Ubuntu-based дистрибутивы
*\----- GUI-метод
**|---- CLI-метод
**|---- Linux Mint
|--- Fedora 34
|--- Manjaro
*\----- GUI-метод
**|---- CLI-метод - Какие проблемы могут возникнуть
|--- Загрузка конфигурации при запуске
*\----- XFCE
**|---- GNOME и KDE
|--- Проблема с контрастностью
|--- Тиринг в играх
|--- Производительность FireFox - Заключение
Ну нет у Комитета денег на вложенные списки в редакторе, уж извините.
Выбор драйвера
Философия открытого программного обеспечения претит компании NVIDIA, поэтому делиться своими исходниками и помогать разработчикам Linux с поддержкой их драйвера они обычно не хотят. Из-за этого драйвер с открытым исходным кодом Nouveau не сможет раскрыть потенциал вашей видеокарты. Это особенно актуально для современных видеокарт с архитектурами Maxwell, Pascal, Turing или Ampere. Например, в Nouveau нет поддержки CUDA ядер.
Драйвер для GPU от AMD разрабатывается в тесном сотрудничестве с сообществом, поэтому большинство людей использует драйвер с открытым исходным кодом, который нативно поддерживает новые технологии (Wayland, например) и выдаёт лучшую производительность. С NVIDIA же ситуации зеркальная.
Если вы геймер или занимаетесь 3D моделированием, то вы будете использовать проприетарный драйвер. Драйвер с открытым исходным кодом можно использовать если у вас очень старая видеокарта. Даже для сёрфинга в интернете я бы советовал посмотреть проприетарный драйвер, потому что на драйвере Nouveau могут быть проблемы с температурой, оборотами кулеров и частотой.
Ниже сравнение производительности open-source и проприетарного драйверов для GT 1030.
Также надо иметь в виду, что драйвер в репозитории дистрибутива, как правило, отстаёт от последнего драйвера 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 с их сайта. Если вы используете пакетный дистрибутив, то вам необходимо использовать пакеты из репозиториев. На это есть причины:
- Драйвер 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 не будут показываться.
Обязательно нажимаем кнопку “Закрыть” и обновляем информацию о пакетах в появившемся окне.
После этого в этом же приложении мы заходим во вкладку Драйверы/Дополнительные Драйверы, в которой можно выбрать драйвер для использования. По умолчанию у вас будет установлен драйвер Nouveau.
Из предложенных драйверов выбираем нужный и применяем изменения. Когда установка закончится, перезагружаем компьютер.
После перезапуска мы можем зайти сюда же и посмотреть, какой видеодрайвер используется.
В 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.
Перед установкой драйвера необходимо проверить наличие новых пакетов в репозиториях и обновиться. Для этого мы в терминале выполняем команды:
Теперь нам нужно найти в репозиториях драйвер для нашей видеокарты. Прописываем следующую команду:
Когда вы выбрали драйвер, вводите команду:
Когда установка завершится - перезапускаем компьютер. Сделать это можно через всё тот же терминал и команду reboot.
Для удаления драйвера можно использовать команду:
Также можно посмотреть список всех установленных библиотек NVIDIA с помощью:
И точечно удалить выведенные библиотеки с помощью команды:
У меня бы процесс удаления выглядел примерно так:
После установки драйвера перезапускаем компьютер. Если всё прошло успешно, то у вас появится программа NVIDIA X Server Settings.
Если по какой-то причине у вас появятся проблемы с драйвером Nouveau, то установить и удалить его можно следующими командами:
Linux Mint
При установке проприетарного драйвера на Linux Mint я столкнулся с ошибкой, из-за которой драйвер NVIDIA не работал корректно. Driver Manager пишет, что стоит последний драйвер, но при этом очевидно, что он не работает.
Исправляется это достаточно просто. Запускаем терминал и прописываем там команду:
В открывшемся файле под комментариями прописываем в отдельных строчках следующее:
Сохраняем файл и выходим из редактора с помощью сочетаний: Ctrl + X, Y и Enter. Перезапускаем ПК.
Fedora 34
Совместимость для старых видеокарт и команды для установки драйвера можно здесь. Дальше я буду описывать установку для современных видеокарт.
В дистрибутиве Fedora нет графической утилиты для установки драйверов, поэтому поставить их можно только через терминал.
По умолчанию репозитории с проприетарными пакетами не включены, поэтому мы должны будем подключить RPM Fusion сами. Сделать это можно несколькими способами, но я опишу два: через приложение Software или с помощью терминала.
Если вы выбрали первый вариант, то мы должны зайти в приложение Software и нажать на кнопку меню в правом верхнем углу и в выпавшем меню выбираем Software Repositories.
В открывшемся окне нас интересует “RPM Fusion бла бла бла NVIDIA Driver”. Выбираем этот пункт и нажимаем Enable.
Если вы выбрали второй вариант,то мы должны зайти на сайт rpmfusion и узнать адрес зеркала для Nonfree RPM Fusion пакетов. Копируем ссылку и пишем следующую команду в терминал:
Когда репозитории с драйвером NVIDIA добавлены, мы обновляем систему с помощью команд:
Для установки драйвера и сборки его модуля ядра используем команду:
После этого нужно до 5 минут ждать сборку модуля. Проверить успешность сборки можно с помощью команды modinfo -F version nvidia
И опционально для включения поддержки технологий CUDA, NVDEC или NVENC после установки нужно прописать команду:
После этого перезапускаем систему.
Удалить видеодрайвер можно с помощью команд:
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.
Здесь мы можем увидеть своё устройство и список драйверов для него.
video-nvidia - это последняя доступная версия проприетарного драйвера NVIDIA.
video-linux - это открытый драйвер Nouveau.
Скачать драйвер можно через ПКМ по нужному драйверу или кнопку Auto Install сверху.
После завершения загрузки перезапускаем ПК.
Удаляется драйвер также в этом меню через ПКМ, где у нас появляется опция Remove.
CLI-метод
Узнать текущий видеодрайвер можно с помощью команды glxinfo | grep OpenGL
Узнать список драйверов, доступных для вашей видеокарты можно с помощью mhwd -l или mhwd -la .
video-nvidia - это последняя доступная версия проприетарного драйвера NVIDIA.
video-linux - это открытый драйвер Nouveau.
Для того, чтобы установить проприетарный драйвер, мы должны воспользоваться командой:
Когда установка завершится, вы должны увидеть надпись об успешном завершении установки. После этого нужно перезапустить систему.
После перезапуска мы можем проверить установленный драйвер уже знакомой командой.
Для удаления видеодрайвера нужно узнать его название. Посмотреть установленные драйверы можно с помощью команд mhwd -li или mhwd -li -d
Для того, чтобы удалить проприетарный драйвер, мы можем воспользоваться командой:
Какие проблемы могут возникнуть
Все настройки в NVIDIA X Server можно изменять через CLI и конфиги, но я буду показывать всё на примере графической утилиты NVIDIA X Server Settings.
Загрузка конфигурации при запуске
Проблема актуальная для пользователей Manjaro. Недостаточно поменять значение в этом приложении. Между сессиями X Server, который отвечает за отрисовку, не сохраняет наши значения, а значит нам придётся сохранять значения в файле конфигурации и загружать его при запуске. Во всех Ubuntu-based дистрибутивах и Fedora конфигурация ставится в автозапуск сама.
Выбираем все значения, которые нам нужны, тыкаем кнопку сохранения текущей конфигурации на странице nvidia-settings Configuration и оставляем место по умолчанию.
Дальнейшие действия будут варьироваться в зависимости от выбранного DE, а также наличию в дистрибутиве утилит, отслеживающими все приложения в автозапуске. Предпочтению буду отдавать GUI, но к терминалу прибегать тоже придётся.
XFCE
В приложении Session and Startup во второй вкладке создаём новое приложение с командой: nvidia-settings --load-config-only , — которая будет загружать конфигурацию настроек в начале каждой сессии. Напротив Trigger выбираем опцию On Login ( на русском будет что-то вроде: "при запуске", "на входе систему" и т.п. ).
GNOME и KDE
Из коробки в GNOME и KDE нет приложения c GUI для добавления команд в автозапуск. Но мы можем это легко сделать созданием файла .desktop в папке autostart.
Для этого в терминале прописываем следующую команду:
Содержание этого файла должно быть таким:
Сохраняем и выходим из редактора с помощью сочетаний: Ctrl + X, Y и Enter.
Проблема с контрастностью
По умолчанию в настройках вашего монитора в параметре Color Range стоит опция Full. При определенных настройках монитора это может вызвать проблемы с отображением интерфейсов. Например, на сайте задний фон будет сливаться с передним и т.п.
Можно оставить всё как есть и настроить монитор, а можно вместо Full выбрать опцию Limited. Если же вам нужна более гибкая настройка, то вы можете зайти в соседнюю вкладку Color Correction и подкрутить значения, как вам нужно.
После того, как вы закончили, не забудь сохранить конфигурацию, иначе вам придётся заново настраивать цвета после запуска ПК.
Тиринг в играх
Несмотря на включенный VSYNC, вы можете наблюдать тиринг картинки. Лично я столкнулся с этим только в Half-Life 2.
Это легко исправляется во всё том же NVIDIA X Server. На этот раз нам нужно зайти в X Server Display Configuration.
Здесь же мы выбираем наш монитор и нажимаем кнопку Advanced в правом углу. Пунктов стало немного больше. Нас интересует Force Full Composition Pipeline. Ставим галочку напротив этой опции, нажимаем Apply и сохраняем конфигурацию (нам нужна кнопка сохранения НЕ в этом окне, а последнем nvidia-settings Configuration). Теперь тиринга не должно быть.
Производительность FireFox
После перехода с Windows я заметил ухудшение в производительности Firefox на своём ПК. Благодаря Даниилу Масленникову я узнал, как можно немного улучшить ситуацию, за что ему большое спасибо! Chromium работает в любом случае лучше, но кому-то может пригодится эта информация.
Лучше всего Firefox работает с композитором Wayland, который нативно поддерживается в данный момент только на видеокартах от AMD. С Wayland в Firefox по умолчанию работает WebRender, который может дать ощутимый прирост в производительности. Но лично у меня на даже на иксах он начал работать намного шустрее, хоть и ставите вы его на свой страх и риск.
Чтобы включить WebRender , надо ввести в адресной строке: about:config - и там же в поиске: gfx.webrender.all . И поставить значение true.
Заключение
Сейчас с видеодрайверами в Linux всё намного лучше чем раньше, особенно у современных видеокарт. NVIDIA хоть и проводит странную политику со своими драйверами, но со временем ей приходится сдавать назад и прислушиваться к сообществу. А многие дистрибутивы стараются быть более дружелюбными к пользователям, предоставляя удобные интерфейсы.
Я надеюсь, что этот пост был вам полезен. Если вам есть что дополнить или спросить, а также вы заметили ошибку - напишите в комментариях.