Skip to content

NVIDIA

Эта статья описывает процесс установки и настройки драйверов для видеочипов NVIDIA.

На данный момент существуют 2 драйвера:

1. Проприетарный драйвер от NVIDIA

NVIDIA — это собственный драйвер от NVIDIA. Этот драйвер является закрытым программным обеспечением и поставляется отдельно от ядра GNU/Linux, требуя индивидуальной установки.

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

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

2. Драйвер Nouveau

Nouveau — это проект с открытым исходным кодом, созданный независимыми разработчиками с использованием методов реверс-инжиниринга. В настоящее время он разрабатывается под эгидой X.Org Foundation и размещается на freedesktop.org. Nouveau является частью проекта Mesa 3D и систем на базе GNU/Linux.

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

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

Информация

Названия видеокарт, кодовые наименования и архитектуру можно посмотреть на отдельной странице Code Names

Выбор правильного драйвера

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

  1. Развитие драйверов: Как Nouveau, так и драйвер от NVIDIA постоянно обновляются и развиваются. Невозможно точно предсказать, какие функции будут добавлены или изменены в будущем. Если однажды услышали, что чего-то нет в каких-то драйверах, через полгода это может поменяться.
  2. Архитектура графического чипа: Важно учитывать, что старые модели графических чипов, как правило, лучше работают с драйвером Nouveau, чем с последними, где предпочтительнее использовать драйвер NVIDIA. Однако всё индивидуально, и проверка требуется для каждой архитектуры видеочипов отдельно. Для проверки уровня поддержки различных архитектур можно обратиться к Feature Matrix для Nouveau и к блоку настройки драйвера в случае с NVIDIA.
  3. Происхождение драйверов: Проприетарный драйвер NVIDIA разрабатываются самой компанией NVIDIA и зачастую не контактирует с сообществом Linux. В то же время Nouveau является частью проекта Mesa (одной из основных частей графического стека GNU/Linux). Однако он разрабатывается с помощью реверс-инжиниринга, то есть проприетарный драйвер обычно обеспечивает более высокий уровень поддержки видеокарт, в то время как Nouveau обеспечивает более глубокую интеграцию с GNU/Linux системами.

Отличия в драйверах

Проприетарный драйвер NVIDIA обеспечивает управление питанием большего числа видеокарт, поддерживает работу CUDA, а также лучше справляется с поддержкой игр и графических программ.

Открытый Nouveau встроен в ядро GNU/Linux и обычно не требует дополнительных настроек, также обеспечивает управление питанием, но на меньшем количестве видеокарт, не поддерживает CUDA и имеют плохую поддержку игр. В некоторых моментах справляется лучше, чем NVIDIA.

Информация

Дополнительную информацию о поддержке управления питанием с использованием Nouveau можно найти на странице PowerManagement

Рекомендации по выбору

Если драйвер выбирается для игр, CUDA и других технологий NVIDIA, а при использовании Nouveau возникают проблемы с производительностью, — рекомендуется установить драйвер NVIDIA.

Если вышеупомянутые технологии не используете и видеокарта работает стабильно на Nouveau — рекомендуется выбирать его.

Проприетарный драйвер NVIDIA

Установка (Смена Nouveau драйвера на проприетарный)

Способ 1. EPM Play

Подсказка

Если необходима наиболее простая установка, используйте этот способ.

Для упрощения процесса установки проприетарного драйвера для графических карт NVIDIA, можно использовать скрипт из EPM.

Данный скрипт включает в себя наиболее полную первоначальную настройку, затрагивая активацию Wayland и решение проблемы с неизвестным монитором, но только для нового драйвера.

Выполните следующую команду в терминале:

shell
su -
epm play switch-to-nvidia

Внимание

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

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

Способ 2. Установка из RUN-файла

Дисклеймер

Все действия, описанные в данной статье, вы выполняете на свой страх и риск. Автор статьи и сообщество ALT Linux Team, а также ООО «Базальт СПО» не несут ответственность за возможные последствия.

Выполняйте все действия по собственной инициативе, возникающие проблемы решайте самостоятельно или обращаясь за помощью к сообществу.

ВСЁ ОПИСАННОЕ ДАЛЕЕ ВЫПОЛНЯЛОСЬ НА ЧИСТОЙ СИСТЕМЕ, В ОДНОНАПРАВЛЕННОМ ПОРЯДКЕ, ОТКАТ СИСТЕМЫ НЕ ПРОВЕРЯЛСЯ !!!

ВЫ ОБЯЗУЕТЕСЬ ПРОЧИТАТЬ ДОКУМЕНТ ДО КОНЦА БЕЗДУМНОЕ КОПИРОВАНИЕ НЕ ОСВОБОЖДАЕТ ВАС ОТ ПРОБЛЕМ И ЕЩЕ РАЗ ЗАНОВО ПРОЧИТАТЬ ПРЕЖДЕ ЧЕМ ДЕЛАТЬ ЕСЛИ СОМНЕНИЯ НЕ ИСЧЕЗЛИ ТО НЕ НАДО ДЕЛАТЬ ЭТОГО !!!

ИНСТРУКЦИЯ НЕ ПОДХОДИТ ДЛЯ ДРАЙВЕРОВ НИЖЕ 560 ТАК КАК ТЕСТИРОВАЛАСЬ ТОЛЬКО НА ЭТО И ВЕРСИИ СТАРШЕ

В примере использовалась следующая конфигурация
  • Персональный компьютер архитектуры x86_64;
  • Система ALT Regular Gnome (current);
  • Видеокарта NVIDIA 4080 Super;
  • Отключённый Secure Boot;
  • Выключенное встроенное в процессор видеоядро.

В примере использовался драйвер 560.35.03 (дата релиза — 21 августа 2024) На текущий момент драйвер может быть свежее

Подготовка

Загрузка драйвера с сайта NVIDIA:

  1. На сайте NVIDIA НАЙДИТЕ последний подходящий драйвер, выбрав модель карты и операционную систему Linux 64-bit (драйверы Linux Aarch64 ставится аналогично), и скачайте этот драйвер;

  2. Под пользователем root переместите скачанный файл в папку /opt;

  3. ОБЯЗАТЕЛЬНО обновите систему:

sh
su -
apt-get update
apt-get dist-upgrade
update-kernel # установит последнее ядро

После обновления понадобится перезагрузка для активации установленного ядра.

  1. Установите дополнительные зависимости:
sh
su -
apt-get install gcc kernel-headers-modules-$kflavor dkms libglvnd-devel # где $kflavor - версия флейвора вашего запущенного ядра
reboot

::: alert

Нужно перезагрузиться ещё раз, чтобы DKMS начал работать.

:::

  1. Переход в TTY:

Нажмите сочетание клавиш Ctrl + Alt + F3 (или другие сочетания). Будет осуществлён переход в TTY (чёрный экран и строка ожидания ввода логина)

Войдите под суперпользователем root и отключите дисплейный менеджер (в случае с ALT Regular Gnome — GDM):

sh
systemctl stop gdm
  1. Установка драйвера (на примере версии 560.35.03):
sh
cd /opt
chmod +x NVIDIA-Linux-x86_64-560.35.03.run
./NVIDIA-Linux-x86_64-560.35.03.run

После выбора Proprietary (да да да проверял только тут, есть еще MIT/GPL но там не тестировал) начнётся установка, в ходе которой установщик может попросить отключить Nouveau — подтвердите это действие. Установщик может предложить провести проверку установки — нажмите Continue without check. Подтвердите установку библиотек i586, ОТКАЖИТЕСЬ от добавления настроек в X-Config если вам нужен WAYLAND. В конце подтвердите добавление драйвера в DKMS.

  1. Последняя настройка до перезагрузки машины:
  • В файле /etc/sysconfig/grub2 добавьте в параметр GRUB_CMDLINE_LINUX_DEFAULT строчку nvidia-drm.modeset=1 и пересоздайте файл настройки загрузчика GRUB2, выполнив:
shell
grub-mkconfig -o /boot/grub/grub.cfg
  • Создайте файл /etc/modprobe.d/nvidia.conf с следующим содержимым:
text
blacklist nouveau
options nvidia_drm fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp

Если установщик предложил вам отключить запуск Nouveau, вместо создания отдельного файла достаточно отредактировать созданный драйвером файл. Он будет находиться в /etc/modprobe.d/ и называться nvidia-installer-*. Добавьте в него следующие строки:

text
options nvidia_drm fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
  1. Пересоберите initrd с помощью команды:
shell
make-initrd -k $(uname -r)
  1. Удаление установщика:
sh
cd /opt
rm NVIDIA-Linux-x86_64-560.35.03.run

Способ 3. Вручную

Для перехода с Nouveau на NVIDIA рекомендуется сначала обновить ядро:

shell
su -
update-kernel

Для дальнейшей установки проприетарного драйвера NVIDIA необходимо перезагрузить операционную систему.

Установка проприетарного драйвера и добавление Nouveau в чёрный список:

  • Перейдите в режим root:
shell
su -
  • Установите nvidia_glx_common:
shell
apt-get install nvidia_glx_common
shell
epm -i nvidia_glx_common
  • Добавьте Nouveau в чёрный список:
shell
echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nvidia-x11.conf
  • Запустите скрипт установки драйверов:
shell
nvidia-install-driver

Настройка драйвера

Существует 4 версии драйвера NVIDIA, устанавливающиеся в зависимости от поколения видеокарты.

Далее будет описана важная информация и настройка каждой из этих версий.

Подсказка

Чтобы узнать версию установленного драйвера, необходимо ввести:

shell
inxi -G

Драйвер 550.54.14 или новее

При установке драйвера через EPM настройка под Wayland производится автоматически. Если использован этот способ, дальнейшая настройка под Wayland не требуется.

Если установка производилась вручную, следует выполнить дальнейшую настройку.

Сессия Wayland

Для работы Wayland необходимо настроить сохранение выделенных ресурсов видеопамяти

Внимание

У драйвера NVIDIA существуют известные проблемы и несовместимости, связанные с Wayland.

Работа заставки (plymouth)

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

Также, если в параметрах ядра есть initcall_blacklist=simpledrm_platform_driver_init, его необходимо удалить и использовать другой способ из решения проблем с «Неизвестным монитором»

Подсказка

Проверить, есть ли этот параметр, можно в файле /etc/sysconfig/grub2 в строке с параметром GRUB_CMDLINE_LINUX_DEFAULT.

При установке через EPM и для пользователей Ximper

Этот параметр будет у Вас будет по умолчанию.

Драйвер 470.223.02

Информация

Драйвер до версии 495 имеет поддержку только одного Buffer API — EGLStreams.

Он не был популяре и критиковался, но безальтернативная связка с NVIDIA «заставляла» некоторые крупные проекты работать с ним.

Начиная с версии 495, NVIDIA представила поддержку Generic Buffer Management (GBM), и подавляющее большинство проектов отказалось от EGLStreams.

GNOME один из немногих, кто ещё поддерживает EGLStreams, однако сейчас его поддержка постепенно уходит на второй план.

Проблема с Intel

Драйвер версии 470.223.02 и старше, начиная с версии ядра Linux 5.18 может работать неправильно в системах с процессорами Intel 11-го поколения и новее из-за несовместимости с Indirect Branch Tracking (IBT).

Его можно отключить, добавив значение ibt=off в параметр GRUB_CMDLINE_LINUX_DEFAULT:

shell
su -
mcedit /etc/sysconfig/grub2
grub-mkconfig -o /boot/grub/grub.cfg

Внимание

Эта функция безопасности отвечает за защиту от ряда методов эксплойта.

Сессия Wayland

Для работы Wayland необходимо сделать 2 вещи:

  1. Активировать метод Kernel Mode Setting
  2. Настроить сохранение выделенных ресурсов видеопамяти

Внимание

У драйвера NVIDIA существуют известные проблемы и несовместимости, связанные с Wayland.

Работа заставки (plymouth)

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

Также, если у вас в параметрах ядра есть initcall_blacklist=simpledrm_platform_driver_init, его необходимо удалить и использовать другой способ из решения проблем с «Неизвестным монитором»

Подсказка

Проверить, есть ли этот параметр можно в файле /etc/sysconfig/grub2 в строке с параметром GRUB_CMDLINE_LINUX_DEFAULT.

При установке через EPM и для пользователей Ximper

Этот параметр будет у Вас будет по умолчанию.

Драйвер 390.157

Информация

Драйвер до версии 495 имеет поддержку только одного buffer API — EGLStreams.

Он часто предавался критике и не взыскал популярности, но безальтернативная связка с NVIDIA "заставляла" некоторые крупные проекты работать с ним.

Начиная с 495, NVIDIA представила поддержку GBM, и с тех пор подавляющее большинство проектов отказалось от EGLStreams.

GNOME, один из немногих, кто ещё поддерживает EGLStreams, но на сегодняшний день эта поддержка постепенно уходит на второй план.

Драйверы NVIDIA до версии 470 не поддерживают аппаратное ускорение Xwayland.

Для драйвера до версии ~400 ускоренное декодирование видео NVDEC недоступен.

Сессия Wayland

Для работы Wayland необходимо 2 вещи:

  1. Активировать метод Kernel Mode Setting
  2. Настроить сохранение выделенных ресурсов видеопамяти

Внимание

У драйвера NVIDIA существуют известные проблемы и несовместимости, связанные с Wayland.

Работа заставки (plymouth)

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

Также, если у вас в параметрах ядра есть initcall_blacklist=simpledrm_platform_driver_init, его необходимо удалить и использовать другой способ из решения проблем с «Неизвестным монитором»

Подсказка

Проверить, есть ли этот параметр можно в файле /etc/sysconfig/grub2 в строке с параметром GRUB_CMDLINE_LINUX_DEFAULT.

При установке через EPM и для пользователей Ximper

Этот параметр будет у Вас будет по умолчанию.

Полезные программы

Информация

При установке драйвера через EPM, многие программы, скорее всего, уже будут установлены.

Группа устанавливаемых пакетов, может постоянно меняться, поэтому для уточнения следует посмотреть EPM-скрипт

NVIDIA Settings

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

В зависимости от сессии (Xorg или Wayland) набор настроек в NVIDIA Settings может различаться. Например, в Wayland нельзя настроить вертикальную синхронизацию и тройную буферизацию, так как они работа по-другому в этом окружении. Также в Wayland нет поддержки G-Sync, так как эта технология работает только с NVIDIA и требует специального оборудования. В целом, основные функции NVIDIA Settings доступны в обоих окружениях, но некоторые дополнительные возможности могут быть ограничены.

shell
su -
apt-get update
apt-get install nvidia-settings
shell
epm -i nvidia-settings

NVIDIA System Management Interface

NVIDIA System Management Interface (NVSMI), или nvidia-smi — предоставляет возможности мониторинга и управления для NVIDIA Tesla, Quadro, GRID и GeForce, начиная с семейства Fermi.

shell
su -
apt-get update
apt-get install nvidia-smi
shell
epm -i nvidia-smi

switcheroo-control

switcheroo-control — утилита для выбора графического устройства при запуске приложения на устройствах с несколькими графическими процессорами

Информация

Для устройств, имеющих как встроенный, так и выделенный графический процессор, switcheroo-control по умолчанию использует встроенный графический процессор для экономии энергии.

shell
su -
apt-get update
apt-get install switcheroo-control
systemctl enable --now switcheroo-control.service
shell
epm -i switcheroo-control
systemctl enable --now switcheroo-control.service

После установки приложения switcheroo-control, в меню появится пункт «Запустить с помощью выделенной видеокарты»

Запустить с помощью выделенной видеокарты

EnvyControl

EnvyControl — CLI-утилита, которая позволяет выбирать режим работы гибридной графики:

  1. Гибридный режим

    • Позволяет драйверу самому решать, какой графический процессор использовать. Обычно используется интегрированная графика, а дискретная графика работает только если она нужна, например, в играх или программах для монтажа
    • Позволяет использовать RTD3
    • Работает только на видеокартах Turing и выше
    • Возможны проблемы с HDMI
  2. Интегрированный режим

    • Использует только интегрированную графику (Intel или AMD) отключая NVIDIA
    • Мониторы подключённые к NVIDIA работать не будут
  3. Режим NVIDIA

    • Используется исключительно видеокарта от NVIDIA
Примеры

Установить интегрированный режим:

shell
su -
envycontrol -s integrated

Установить гибридный режим и включить RTD3 (если не указывать режим, то будет выбран второй):

shell
su -
envycontrol -s hybrid --rtd3

Установить гибридный режим, включить ForceCompositionPipeline, а так же установить coolbits на 28, разрешая разгон видеокарты:

shell
su -
envycontrol -s nvidia --force-comp --coolbits 28
shell
su -
apt-get update
apt-get install envycontrol
shell
epm -i envycontrol

После установки рекомендуется ввести команду envycontrol --help, чтобы ознакомиться со всеми возможностями утилиты. Также доступно расширение для GNOME

Vulkan Information

Vulkan Information — отображает информацию о поддерживаемых возможностях Vulkan для пользователей графических устройств NVIDIA. Необходимо установить пакет vulkan-tools:

shell
su -
apt-get update
apt-get install vulkan-tools
shell
epm -i vulkan-tools

Для вывода общей информации в терминале:

shell
vulkaninfo --summary

nvidia-vaapi-driver

nvidia-vaapi-driver — реализация VA-API, использующая NVDEC в качестве бэкенда. Эта реализация специально разработана для использования в Firefox для ускоренного декодирования веб-содержимого и может работать некорректно в других приложениях. Дополнительную информацию можно посмотреть на странице проекта

shell
su -
apt-get update
apt-get install nvidia-vaapi-driver
shell
epm -i nvidia-vaapi-driver

nvidia-modprobe

nvidia-modprobe — используется компонентами драйвера NVIDIA в пользовательском пространстве для проверки загрузки модуля ядра NVIDIA и наличия файлов устройств NVIDIA. Эти возможности обычно предоставлялись системами конфигурации дистрибутива GNU/Linux, такими как udev.

Подсказка

По возможности рекомендуется использовать встроенные механизмы вашего дистрибутива GNU/Linux для управления загрузкой модулей ядра и созданием файлов устройств. Эта утилита предоставляется в качестве запасного варианта для работы независимо от дистрибутива.

shell
su -
apt-get update
apt-get install nvidia-modprobe
shell
epm -i nvidia-modprobe

nvidia-cuda-toolkit

nvidia-cuda-toolkit — пакет, содержащий библиотеки и сопутствующие файлы, необходимые для запуска программ, использующих CUDA.

shell
su -
apt-get update
apt-get install nvidia-cuda-toolkit
shell
epm -i nvidia-cuda-toolkit

nvidia-xconfig

nvidia-xconfig — инструмент, предназначенный для обеспечения базового управления по параметрам конфигурации, доступным в драйвере NVIDIA X11.

shell
su -
apt-get update
apt-get install nvidia-xconfig
shell
epm -i nvidia-xconfig

Выбор проприетарного драйвера в Центр управления системой (только для X11)

Осторожно

Выбор драйвера через Центр управления системой (ЦУС) происходит путём изменения /etc/X11/xorg.conf.d/10-monitor.conf и работает только на Xorg сессии, только на поздних этапах, игнорируя KMS.

На данный момент, такой способ изменения драйвера не будет работать с Wayland, является устаревшим и не рекомендуется

Данная инструкция рекомендована для использования только на стационарных ПК, в которых графическая карта NVIDIA будет использована как основная. Для ноутбуков с гибридной графикой рекомендуется пропустить этот шаг и воспользоваться switcheroo-control или envycontrol

Информация

Удостоверьтесь, что пакет alterator-x11 и драйвер от NVIDIA установлены.

Без этого, вариант nvidia - NVIDIA (proprietary) в разделе выбора драйвера будет недоступен

Выбор проприетарного драйвера
  • Зайдите в Центр управления системой
nvidia-acc-1
  • Выберите параметр Дисплей в категории Графический интерфейс
nvidia-acc-2
  • В графе Драйвер нажмите Другой драйвер.
nvidia-acc-3
  • В открывшемся окне выберите nvidia - NVIDIA (proprietary)

  • После выбора нажмите ОК, Применить и перезагрузите систему

Детальная настройка драйвера

Активация Kernel Mode Setting.

Необходимо прописать в параметр GRUB_CMDLINE_LINUX_DEFAULT значение nvidia-drm.modeset=1 и сгенерировать новых grub.cfg:

shell
su -
mcedit /etc/sysconfig/grub2
grub-mkconfig -o /boot/grub/grub.cfg

Подсказка

Чтобы проверить, работает ли KMS, выполните:

shell
su -
cat /sys/module/nvidia_drm/parameters/modeset

Если команда вернула Y, то KMS работает. В ином случае можете попробовать включить его через параметры ядра

В драйверах 550.54.14 и выше настройка KMS не нужна

Начиная с октября 2023 года, в ручной активации KMS нет необходимости. Правильная опция будет прописана вместе с установкой драйвера и будет находиться в /etc/modprobe.d/nvidia_common.conf.

Настройка сохранения выделенных ресурсов видеопамяти

NVIDIA предлагает 2 способа:

Способ 1. Сохранение в безымянных временных файлах

Такой способ позволяет использовать глубокий уровень сна (S4 и S5) и не требует дополнительной поддержки S0ix.

Внимание

Существуют проблемы на некоторых устройствах с PRIME. Этот способ направлен в основном на настольные ПК

  • Активируйте интерфейсы управления питания NVIDIA:
shell
su -
systemctl enable nvidia-suspend.service nvidia-resume.service nvidia-hibernate.service

Подсказка

Эти интерфейсы заменяют стандартные sleep, hibernate и resume, давая возможность записать ресурсы видеопамяти перед отключением питания у видеокарты.

Информация

Если вы устанавливали проприетарный драйвер NVIDIA при помощи epm, то данная команда уже была выполнена автоматически.

  • В опциях драйвера NVIDIA измените способ сохранения ресурсов видеопамяти:
shell
su -
cat << _EOF_ > /etc/modprobe.d/nvidia_videomemory_allocation.conf
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
_EOF_
make-initrd

Информация

Для сохранения ресурсов видеопамяти важно, чтобы файловая система имела поддержку безымянных временных файлов и имела достаточный объём для сохранения видеопамяти. Объёма, равного сумме всей видеопамяти и 5% сверху, будет вполне достаточно для сохранения.

Узнать количество видеопамяти можно командой:

shell
nvidia-smi -q -d MEMORY | grep 'FB Memory Usage' -A1

Также во избежание нехватки места, не следует указывать директории с tmpfs (например, /tmp или /run) в опции NVreg_TemporaryFilePath.

NVIDIA не даёт каких-то конкретных рекомендаций, какую директорию использовать, но на форумах зачастую рекомендуется /var/tmp, что соответствует описанию раздела.

Способ 2. Режим сохранения питания S0ix.

Этот способ позволяет не выгружать видеопамять. Режим S0ix создан для переносных устройств.

  • Проверьте, поддерживает ли система s2idle:
shell
cat /sys/power/mem_sleep

Подсказка

Если в выводе есть s2idle, значит он поддерживается. В ином случае используйте Способ 1.

  • Проверьте, поддерживает ли видеочип S0ix:
shell
grep 'Video Memory Self Refresh' /proc/driver/nvidia/gpus/<Domain>:<Bus>:<Device>.0/power

Информация

Посмотрите в директории после /proc/driver/nvidia/gpus, у каждого устройства своё значение <Domain>, <Bus> и <Device>

Подсказка

Если ответ Video Memory Self Refresh: is supported, значит S0ix поддерживается и можно проверять систему дальше.

  • Если система и видеочип поддерживают указанные режимы, добавьте параметр NVreg_EnableS0ixPowerManagement=1:
shell
su -
modprobe nvidia NVreg_EnableS0ixPowerManagement=1
  • Если при выводе cat /sys/power/mem_sleep, s2idle не был в квадратных скобках ([s2idle]), выполните:
shell
su -
echo "s2idle" > /sys/power/mem_sleep
  • После указания опции и режима переведите устройство в режим ожидания и проверьте, корректно ли всё загрузилось. Если всё хорошо, добавьте настройки для постоянной загрузки:
shell
su -
cat << _EOF_ > /etc/modprobe.d/enable_S0ix_power_management.conf
options nvidia NVreg_EnableS0ixPowerManagement=1
_EOF_
make-initrd
  • Если ранее приходилось указывать s2idle вручную, укажите в параметре GRUB_CMDLINE_LINUX_DEFAULT значение mem_sleep_default=s2idle и сгенерируйте новых grub.cfg:
shell
su -
mcedit /etc/sysconfig/grub2
grub-mkconfig -o /boot/grub/grub.cfg

Информация

При переходе видеокарты в спящий режим S0ix будет выполнятся один из 2-х сценариев:

  • Если использование памяти было меньше определённого порога, видеопамять будет скопирована в системную память и полностью отключится вместе с графическим процессором
  • Если использование памяти было больше определённого порога, видеопамять будет в режиме самообновления, в то время как остальная часть графического процессора будет отключена

По умолчанию порог — 256 МБ. Его можно изменить с помощью параметра NVreg_S0ixPowerManagementVideoMemoryThreshold. Однако стоит учитывать, что чем выше порог, тем выше вероятность того, что часть видеопамяти не будет сохранена.

Ранняя загрузка модулей NVIDIA

Для того, чтобы запустить модули NVIDIA на этапе initramfs, необходимо добавить их в /etc/initrd.mk и отключить Features, которые запрещают их загрузку.

  • Добавьте в /etc/initrd.mk строки MODULES_TRY_ADD +=nvidia nvidia-drm nvidia-modeset nvidia-uvm и DISABLE_FEATURES += nvidia и сгенерируйте initramfs:
shell
su -
cat << _EOF_ >> /etc/initrd.mk

# trying to load nvidia modules
MODULES_TRY_ADD += nvidia nvidia-drm nvidia-modeset nvidia-uvm
DISABLE_FEATURES += nvidia
_EOF_
make-initrd

Внимание

При добавлении модулей в initramfs не будет работать способ Замены драйверов Nouveau / NVIDIA «на лету»

Управление питанием PCI-Express Runtime D3 (RTD3)

Драйвер NVIDIA имеет поддержку динамического управления питанием графического процессора NVIDIA — PCI-Express Runtime D3 (RTD3) Power Management.

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

И всё это не влияя на функциональность позволит работать графическому процессору с меньшей производительностью при меньшем потреблением энергии.

Для работы RTD3 необходимо следующее:

  • Ноутбук
  • Процессор из серия чипсетов Coffee Lake или новее
  • Видеокарта архитектуры Turing или новее
  • Ядро Linux версии 4.18 и новее, собранное с CONFIG_PM (CONFIG_PM=y). Как правило, если система поддерживает S3 (suspend-to-RAM), то и CONFIG_PM будет корректно определён

Информация

Для видеокарт Turing и старше нужна дальнейшая настройка

Для Ampere или более поздних версий видеокарт, RTD3 включено по умолчанию.

  • Для автоматизации управления добавьте правила в /lib/udev/rules.d:
shell
su -
cat << _EOF_ > /lib/udev/rules.d/80-nvidia-pm

# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"

# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"
_EOF_
make-initrd
  • Добавьте конфигурационный файл с параметром в /etc/modprobe.d:
shell
su -
cat << _EOF_ > /etc/modprobe.d/nvidia_RTD3.conf
# This options activate RTD3
options nvidia "NVreg_DynamicPowerManagement=0x02"
_EOF_
make-initrd

Информация

Более подробное описание работы, а также решение возможных проблем можно посмотреть в документации NVIDIA.

PAT

PAT — более современная технология, чем MTRR, является более гибким атрибутом, добавляя новые возможности для организации памяти.

Драйвер NVIDIA позволяет сменить старый атрибут страничной организации памяти MTRR на PAT.

Чтобы её включить, добавьте конфигурационный файл с параметром в /etc/modprobe.d:

shell
su -
cat << _EOF_ > /etc/modprobe.d/nvidia_PAT.conf
# This options activate PAT
options nvidia NVreg_UsePageAttributeTable=1
_EOF_
make-initrd

Внимание

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

shell
su -
cat /proc/cpuinfo | grep pat

GSP прошивка

Некоторые видеокарты имеют GPU System Processor (GSP), который может использоваться для разгрузки задач и управления графическим процессором. По умолчанию он включён для ограниченного числа видеокарт.

Начиная с архитектуры Turing, GSP присутствует во всех видеокартах и его можно принудительно включить:

shell
su -
cat << _EOF_ > /etc/modprobe.d/nvidia_GSP_firmware.conf
# This options force unlock GPU firmware
options nvidia NVreg_EnableGpuFirmware=1
_EOF_
make-initrd

Фреймбуфер от NVIDIA

Осторожно

Это экспериментальная функция и она работает нестабильно.

Начиная с драйвера версии 545.29, можно включить фреймбуфер, предусмотренный nvidia-drm. Он заменяет стандартные фреймбуферы, такие как efifb или vesafb.

Внимание

Для работы необходимо, чтобы работал KMS

shell
su -
cat << _EOF_ > /etc/modprobe.d/nvidia-framebuffer.conf
# This options unlock experimental nvidia framebuffer
options nvidia_drm fbdev=1
_EOF_

Решение известных проблем

«Неизвестный монитор» в настройках дисплеев в сессии Wayland

Информация

Данная проблема может привести к некорректному поведению устройств ввода. Особенно часто данные проблемы проявляются в играх.

На данный момент существует 3 способа устранения фантомного неизвестного монитора:

Способ 1. Использование собственного фреймбуфера от NVIDIA:

Смотрите раздел Фреймбуфер от NVIDIA

Способ 2. Отключение загрузки simpledrm:

Информация

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

  • Внесите изменение в конфигурацию GRUB:
shell
su -
mcedit /etc/sysconfig/grub2
  • Добавьте в параметр GRUB_CMDLINE_LINUX_DEFAULT значение initcall_blacklist=simpledrm_platform_driver_init

  • Сгенерируйте grub.cfg:

shell
su -
grub-mkconfig -o /boot/grub/grub.cfg

Внимание

Данное решение приводит к невозможности входа в tty, отсутствию вывода логов во время загрузки (если не включён Plymouth) и чёрному экрану, если система по какой-то причине не запустилась вовсе.

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

Также для решения проблем, может быть полезным удаление параметров quiet (для вывода более подробных логов) и splash (для отключения заставки во время вывода логов).

Способ 3. Отключение монитора через настройки

Откройте настройки GNOME и во вкладке дисплеев отключите «Неизвестный монитор».

После настроек для сессии Wayland, он не появляется GDM

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

su -
ln -s /dev/null /etc/udev/rules.d/61-gdm.rules

Информация

Перед маскированием правил, удостоверьтесь в правильности настроек сохранения выделенных ресурсов видеопамяти. Чаще всего проблемы именно из-за этого.

Также прочтите комментарии правил GDM и поищите правила, относящиеся к вашей системе.

Вполне возможно, есть объективная причина, почему режим Wayland недоступен.

Не работает KMS

Если при загрузке GNOME возникает чёрный экран или при выполнении cat /sys/module/nvidia_drm/parameters/modeset возвращается N, можно попробовать включить KMS через командную строку ядра.

Чёрный экран при выборе сессии X11 или ошибка в инициализации CUDA

Драйвер NVIDIA для Linux по умолчанию использует Message Signaled Interrupts (MSI), это обеспечивает лучшую совместимость и масштабируемость, из-за избегания совместного использования IRQ. Было замечено, что некоторые системы имели проблемы с поддержкой MSI.

Все известные ошибки были исправлены, но если наблюдаете данные проблемы, попробуйте отключить MSI:

shell
su -
cat << _EOF_ > /etc/modprobe.d/nvidia_MSI.conf
# This options deactivate MSI
options nvidia NVreg_EnableMSI=0
_EOF_
make-initrd

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

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

Для этого необходимо на этапе выбора вариантов загрузки в GRUB нажмите кнопку e, найдите первую строку с linux /boot/vmlinuz и допишите в эту строку один из следующих параметров (параметр должен быть отделён от других пробелом; очерёдность параметров не важна):

  • nomodeset — не загружать видеодрайверы для видеокарты до момента, пока не будет загружен X-сервер. В результате система загружается в текстовом виде, можно видеть сообщения процесса загрузки, проблема «чёрного экрана загрузки» устраняется;

  • xdriver — графический установщик предпринимает попытку автоматического подбора драйвера видеокарты, но иногда это ему не удаётся. Данным параметром можно отключить автоматический выбор и явно указать нужный вариант драйвера;

  • instdebug — перед запуском и после завершения работы графического установщика будет запущена командная оболочка (shell). Это очень полезное средство для обнаружения ошибок графической программы установки. Последовательность работы внутренних сценариев следующая: install2 -> xinit -> alterator-install2 -> alterator-wizard. При необходимости можно вручную загрузить Xorg (команда xinit) и в открывшемся окне терминала запустить alterator-install2 (или alterator-wizard) вручную. Лог-файлы инсталлятора сохраняются в /tmp.

  • xdriver — отключает автоопределение и принудительно загружает указанный драйвер; можно указать любой драйвер, поддерживаемый Xorg. Например, i915, nvidia, radeon, fglrx и т.д.

    Существуют универсальные видеодрайверы:

    • vesa — минимальный драйвер. Работает так же, как и любой другой, но ожидает не конкретной видеокарты, а пытается следовать стандартам VESA (многие видеокарты его поддерживают). Этот драйвер умеет только выводить изображение, без «излишеств». Работает довольно медленно.
    • fbdev — ещё более простой драйвер. Передаёт команду связаться с ядром и пытается рисовать картинку через него. Под ним может быть несколько разных драйверов со стороны ядра, но чаще всего это ядерная версия vesa. Это работает ещё медленнее, но практически всегда работает.

Информация

Всё описание взято отсюда: ALT Linux Wiki: Первая помощь - Проблемы с драйвером видеокарты

Прочие решения известных проблем

Также другие проблемы и возможные их решения, можно найти в главе 8 документации NVIDIA

Известные нерешённые проблемы

Системы, где есть NVIDIA со второй гибридной графикой и нет доступа к сессии Wayland:

На сегодняшний день есть проблемы с запуском Wayland на системах с гибридной графикой, поэтому правила GDM запрещает работу Wayland в таких случаях.

Про проблему написано тут и тут.

Внимание

Правила GDM можно замаскировать, но в таком случае есть вероятность столкнуться с проблемами.

Прочие известные нерешённые проблемы

В главе 9 документации NVIDIA можно ознакомиться с известными нерешёнными проблемами у драйвера NVIDIA

Проблемы c протоколом Wayland

У NVIDIA c Wayland существуют нерешённые проблемы. Вы можете ознакомиться с ними в приложении L документации NVIDIA

Способы управления частотами/лимитами видеокарты

Осторожно

Все цифры указаны для примера, все решения и риски лежат на вас.

Установить порога TDP:

shell
su -
nvidia-smi -pl 160.30

Вывести в терминале поддерживаемые частоты:

shell
su -
nvidia-smi -q -d SUPPORTED_CLOCKS

Установить пороги частоты GPU:

shell
su -
nvidia-smi --lock-gpu-clocks=0,1695 --mode=1

Установить пороги частоты видеопамяти:

shell
su -
nvidia-smi --lock-memory-clocks=0,5001

Для детальной настройки смотрите его man-страницу

Подсказка

Описание примеров применения управления лимитами через nvidia-smi можно посмотреть тут и тут

Внимание

Изменение параметров не сохраняется при перезагрузке. Для сохранения параметров используйте bashrc, udev (пример) или systemd (пример).

Coolbits (только для X11)

Для сессии X11 (через X Config Options) существует возможность активировать не поддерживаемые функции NVIDIA через расширение NV-CONTROL X. Активация функций происходит через указание битовой макси:

Осторожно

Для работы необходима сессия под X11 и отключённый режим nvidia_drm_modeset=0, поэтому данная возможность является устаревшей.

Также для разных версий драйвера в документации заявлено разное количество функций. К примеру, в документации для версии 364.19 их описано 6, а в версии 550.54.14 их уже 2.

БитОписание
1Если установлено значение 1 (бит 1), позволяет разгонять старые ядра (до Fermi) на странице Тактовые частоты в разделе Настройки NVIDIA.
2Если установлено значение 2 (бит 1), драйвер NVIDIA попытается инициализировать SLI при использовании графических процессоров с разным объёмом видеопамяти.
4Если установлено значение 4 (бит 2), на странице Настройки термомонитора будет доступна регулировка скорости вращения вентилятора графического процессора на графических платах с программируемыми возможностями вентилятора.
8Если установлено значение 8 (бит 3), на странице PowerMizer в панели управления отобразится таблица, которая позволяет устанавливать смещение для каждого тактового домена и уровня производительности для применения к тактовым значениям. Это разрешено на некоторых графических процессорах GeForce. Не все тактовые диапазоны или уровни производительности могут быть изменены. (для Fermi и выше)
16Если установлено значение 16 (бит 4), интерфейс командной строки nvidia-settings позволит настроить перенапряжение графического процессора. Это разрешено на некоторых графических процессорах GeForce. (для Fermi и выше)
0Если установлено значение 0 (бит 0), все неподдерживаемые функции будут отключены.

Установить битовую маску можно либо вручную в конфигурационном файле xorg.conf в разделе Device, либо через такие программы, как nvidia-xconfig и EnvyControl

Пример работы с nvidia-xconfig:
shell
nvidia-xconfig --cool-bits=2
Пример ручной записи в xorg.conf:
shell
su -
cat << _EOF_ > /etc/X11/xorg.conf.d/22-cool_bits.conf
Section "Device"
	Identifier "NVIDIA GeForce"
	Driver     "nvidia"
	Option     "Coolbits" "24"
EndSection
_EOF_

PowerMizer

PowerMizer — технология, созданная NVIDIA и предназначенная для экономии энергии.

Внимание

Начиная с драйвера версии 530.xx, данная технология была отключена и рекомендуется использовать nvidia-smi. На старых драйверах данная технология работает в штатном режиме.

Информация

Поскольку мир сталкивается с постоянно растущей потребностью в своих ресурсах, любая возможность устранить растрату энергии может помочь. Технология NVIDIA® PowerMizer® — это интеллектуальное решение для управления питанием, доступное на всех графических процессорах (GPU) NVIDIA, которое может эффективно продлить срок службы батареи и сократить потери энергии — и всё это при обеспечении производительности по требованию даже при подключении к сети.

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

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

1. Включение PowerMizer

Включение/выключение технологии происходит через указание в параметре PowerMizerEnable значений 0x0 (выключен) и 0x1 (включён):

PowerMizerEnable=0x1
2. Стратегии

Они позволяют выбирать логику подбора частот.

Существуют следующие стратегии:

СтратегияОписание
22Стратегия с фиксированной тактовой частотой — карта работает с фиксированной частотой вне зависимости от использования графического процессора
33Адаптивная стратегия тактовой частоты — карта работает на максимальном уровне энергосбережения, пока приложения не начинают интенсивно использовать ресурсы карты. Проверяет необходимость смены режима производительности каждые 15 секунд

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

shell
PerfLevelSrc=0x[стратегия для работы от батареи][стратегия для работы от сети]
shell
PerfLevelSrc=0x2233
3. Режимы производительности

Режимы производительности применяются только при стратегии с фиксированной частотой (22). Для адаптивной стратегии 33 указание режима не требуется.

Существует 3 режима производительности:

РежимОписание
0x1Максимальная производительность — уровень с самым высоким уровнем производительности
0x2Сбалансированный — один из средних уровней производительности
0x3Максимальное энергосбережение — минимальный уровень производительности

Значения указываются в параметрах PowerMizerDefault и PowerMizerDefaultAC.

shell
PowerMizerDefaultAC=0x3; PowerMizerDefault=0x1
ПараметрОписание
PowerMizerDefaultСодержит значение режима PowerMizer, которое будет использоваться для режима питания от батареи
PowerMizerDefaultACСодержит значение режима PowerMizer, которое будет использоваться для режима питания от сети

Если доступен только один тип работы питания (обычно от сети - AC, проверьте текущий параметр GPUPowerSource), используйте только тот параметр, который определяется в системе.

Есть 2 способа записи настроек

Информация

В примере использован вариант, когда для работы от сети и от батареи выбран режим с фиксированной частотой (PerfLevelSrc=0x2222); для питания от батареи выбрано максимальное энергосбережение (PowerMizerDefaultAC=0x3), а для питания от сети — максимальная производительность (PowerMizerDefaultAC=0x3)

Способ 1. Запись в /etc/modprobe.conf:
shell
su -
cat << _EOF_ > /etc/modprobe.d/nvidia_PowerMizer.conf
options nvidia NVreg_RegistryDwords="PowerMizerEnable=0x1;PerfLevelSrc=0x2222;PowerMizerDefault=0x1PowerMizerDefaultAC=0x3"
_EOF_
make-initrd
Способ 2. Запись в /etc/X11/xorg.conf (только для X11):
shell
su -
cat << _EOF_ > /etc/X11/xorg.conf.d/21-PowerMizer.conf
Section "Device"
	Identifier "NVIDIA GeForce"
	Driver     "nvidia"
	Option     "RegistryDwords" "PowerMizerEnable=0x1;PerfLevelSrc=0x2222;PowerMizerDefault=0x1PowerMizerDefaultAC=0x3"
EndSection
_EOF_

Подсказка

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

Данные об оборудовании и ПО пользователей за 2024 год.

Открытый драйвер Nouveau

Смена проприетарного драйвера от NVIDIA на Nouveau

  • Перейдите в режим root:
shell
su -
  • Удалите nvidia_glx_common:
shell
apt-get remove nvidia_glx_common
shell
epm -e nvidia_glx_common
  • Удалите initcall_blacklist и nvidia-drm.modeset, если они есть:
shell
mcedit /etc/sysconfig/grub2
  • Сгенерируйте grub.cfg
shell
grub-mkconfig -o /boot/grub/grub.cfg
  • Удалите ссылку на 61-gdm.rules, если она есть
shell
rm /etc/udev/rules.d/61-gdm.rules
  • Удалите правила, запрещающие Nouveau, если они есть:
shell
rm /etc/modprobe.d/blacklist-nvidia-x11.conf
  • Удалите изменение размещения видеопамяти, если оно есть:
shell
rm /etc/modprobe.d/nvidia_videomemory_allocation.conf
  • Установите драйвер (пример для ядра un-def):
shell
apt-get install kernel-modules-drm-nouveau-un-def
shell
epm -i kernel-modules-drm-nouveau-un-def
  • Если у Вас видеокарта Curie или старше, удостоверьтесь, что у вас установлен пакет xorg-drv-nouveau с DDX-драйвером Xf86-video-nouveau:
shell
apt-get install xorg-drv-nouveau
shell
epm -i xorg-drv-nouveau

Информация

Xf86-video-nouveau — это DDX-драйвер для Xorg, необходимый для поддержки 2D и 3D-ускорения на старых видеокартах.

Для новых видеокарт существует универсальный modesetting-драйвер Xf86-video-modesetting, который уже входит в пакет Mesa и не нуждается в установке.

  • Перезагрузите систему
shell
su -
reboot

Как только система загрузилась можно убедиться в том, что Nouveau заработало (в выводе сборки initrd должен присутствовать Nouveau):

shell
su -
make-initrd
reboot

Осторожно

Для видеокарт Maxwell потребуется обязательное внедрение прошивки NVIDIA.

OpenGL и Zink

Zink по умолчанию

В настоящее время команда Mesa работает над OpenGL-драйвером Zink и в будущем рассчитывают сделать его стандартом для видеокарт Turing и новее. На момент лета 2024 года, в нём всё ещё активно устраняют ошибки, тем не менее, он уже сейчас во многих случаях превосходит стандартный Nouveau OpenGL-драйвер.

Стандартный Nouveau OpenGL-драйвер (NVC0) всё ещё актуальный и работает стабильно, но если хотите за счёт стабильности увеличить производительность, можете уже сейчас попробовать Zink и добавить NOUVEAU_USE_ZINK=1 в переменные окружения.

Как один из вариантов, можно добавить строку export NOUVEAU_USE_ZINK=1 в конец ~/.bashrc:

shell
mcedit ~/.bashrc

Внимание

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

Оптимизация ввода-вывода Zink

Дополнительная оптимизация для Zink, в некоторых случаях позволяющая улучшить отзывчивость. В частности, убирает лаг курсора мыши при использовании Zink.

На момент лета 2024 года она всё ещё не внедрена в систему по умолчанию, т.к. ждёт изменения CTS тестов, тем не менее её можно запустить, добавив в переменные окружения ZINK_DEBUG=ioopt.

Как один из вариантов, можно добавить строку export ZINK_DEBUG=ioopt в конец ~/.bashrc:

shell
mcedit ~/.bashrc

Информация

Параметр работает только в связке с Zink.

Внедрение прошивки NVIDIA

Большинство видеочипов NVIDIA имеют встроенный аппаратный декодер, и некоторые видеочипы для его работы отдельно требуют извлечённую из драйвера прошивку NVIDIA. Прошивка NVIDIA требуется для видеокарт с аппаратным декодером: VP1, VP2, VP3, VP4.0, VP4.2, VP5 или VP6+. Список видеокарт с данными декодерами можно посмотреть на странице Video Acceleration в блоке Which card has what engine

Информация

Хоть вышеупомянутые аппаратные декодеры и требуют прошивку NVIDIA, не во всех реализована её поддержка. Статус поддержки для конкретного декодера смотрите на сайте Video Acceleration в блоке Video engine support status

Осторожно

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

  • Установка прошивки:
shell
apt-get install firmware-nouveau
shell
epm -i firmware-nouveau
Ручная установка прошивки
  • Распакуйте прошивку:
shell
mkdir -p /tmp/nouveau && cd /tmp/nouveau
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/340.108/NVIDIA-Linux-x86_64-340.108.run
wget https://raw.github.com/envytools/firmware/master/extract_firmware.py
sh NVIDIA-Linux-x86_64-340.108.run --extract-only
python3 extract_firmware.py
  • Установите прошивку:
shell
su -
cd /tmp/nouveau
mkdir /lib/firmware/nouveau
cp -d nv* vuc-* /lib/firmware/nouveau/

Управление питанием (Turing и новее)

Nouveau — драйвер с открытым исходным кодом для графических процессоров NVIDIA, развивается посредством реверс-инжиниринга. До архитектуры Turing, в управлении питанием возникали проблемы, о чём можно посмотреть на странице Power Management.

Начиная с архитектуры Turing, видеокарты получили полную поддержку управления питанием благодаря GSP-прошивкам от NVIDIA. Видеокарты на базе архитектур Ampere и Ada Lovelace имеют эту поддержку по умолчанию. Для видеокарт на базе архитектуры Turing необходимо указать специальный параметр ядра.

Для того, чтобы на видеокартах Turing заработало управление питанием, можно прописать в параметр GRUB_CMDLINE_LINUX_DEFAULT значение nouveau.config=NvGspRm=1 и сгенерировать новый grub.cfg, либо прописать в файле /etc/modprobe.conf.:

shell
su -
cat << _EOF_ > /etc/modprobe.d/nouveau_power_management.conf
options nouveau config=NvGspRm=1
_EOF_
make-initrd

Управление частотами через Reclocking (для GM10x Maxwell, Kepler и Tesla G94-GT218)

Видеочипы до архитектуры Turing не имеют поддержку управления питания на Nouveau, из-за чего остаются в режиме пониженного энергопотребления и пониженными частотами. Но на Maxwell, код которых начинается с GM10x, Kepler и Tesla G94-GT218 есть возможность менять частоты GPU и видеопамяти через уже заготовленные пресеты частот GPU и видеопамяти.

  • Проверьте доступные состояния питания:
shell
su -
cat /sys/kernel/debug/dri/0/pstate
Ожидаемый вид вывода
shell
07: core 405 MHz memory 810 MHz
0f: core 653-954 MHz memory 1600 MHz
AC: core 953 MHz memory 1600 MHz
  • Проверьте интересующее состояние на работоспособность:
shell
su -
echo pstate > /sys/kernel/debug/dri/0/pstate

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

В примере будет указано значение 0f, которое перевели в десятеричный формат (15)

ПараметрОписание
nouveau.config=NvClkMode=15На этапе загрузки устанавливает необходимое состояние питания.
nouveau.config=NvClkModeAC=15На этапе загрузки устанавливает необходимое состояние питания, если устройство работает от сети.
nouveau.config=NvClkModeDC=15На этапе загрузки устанавливает необходимое состояние питания, если устройство работает от батареи.

Можно прописать в параметр GRUB_CMDLINE_LINUX_DEFAULT и сгенерировать новый grub.cfg, либо прописать в файле /etc/modprobe.conf.

Пример записи в /etc/modprobe.conf:

shell
su -
cat << _EOF_ > /etc/modprobe.d/nouveau_recloking.conf
options nouveau config=NvClkMode=15
options nouveau config=NvClkModeAC=15
options nouveau config=NvClkModeDC=15
_EOF_
make-initrd

Осторожно

Хоть эта поддержка и существует давно, она имеет статус MOSTLY (всё основное сделано, но имеется ряд нерешённых проблем) и, скорее всего, останется таким навсегда.

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

Управление частотами через NVBoost (для Fermi, Kepler, Maxwell, Pascal и Volta):

Для Fermi, Kepler, Maxwell, Pascal и Volta существует способ управления частотами через 3 режима:

РежимОписание
0Базовые тактовые частоты (по умолчанию)
1Тактовые частоты в режиме Boost
2Максимальные тактовые частоты

Управление происходит через параметр config.NvBoost.

Например, установка тактовых частот в режиме boost будет config.NvBoost=1

Можно прописать это в параметр GRUB_CMDLINE_LINUX_DEFAULT и сгенерировать новый grub.cfg, либо прописать в файле /etc/modprobe.conf.

Пример записи в /etc/modprobe.conf:

shell
su -
cat << _EOF_ > /etc/modprobe.d/nouveau_nvboost.conf
options nouveau config=NvBoost=1
_EOF_
make-initrd

Управление скоростью вентиляторов (от Rankine до Maxwell)

Видеочипы Rankine, Curie, Tesla, Fermi, Kepler и Maxwell имеют поддержку управления вентиляторами.

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

shell
ls /sys/class/drm/card0/device | grep pwm1
Ожидаемый вид вывода
shell
pwm1
pwm1_enable
pwm1_max
pwm1_min
Файл управленияОписание
pwm1Управление постоянной скоростью.
pwm1_enableВключение режимов управления скоростью: 0 (выключить), 1 (вручную), 2 (автоматически)
pwm1_maxУстановка максимальной скорости.
pwm1_minУстановка минимальной скорости.

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

Пример
  • Включение ручного управление (если будет 0 или 2, указывать скорости нет необходимости)
shell
su -
echo 1 > /sys/class/drm/card0/device/pwm1_enable
  • Установка мощности вентилятора на 40%
shell
su -
echo 40 > /sys/class/drm/card0/device/pwm1

Один из вариантов управления — сделать изменения постоянными. Для этого нужно занести их в udev правила.

  • Пример ручного управления:
shell
su -
cat << _EOF_ > /etc/udev/rules.d/50-nouveau-hwmon.rules
ACTION=="add", SUBSYSTEM=="hwmon", DRIVERS=="nouveau", ATTR{pwm1_enable}="1", ATTR{pwm1_enable}="40"
_EOF_
  • Пример автоматического управления:
shell
su -
cat << _EOF_ > /etc/udev/rules.d/50-nouveau-hwmon.rules
ACTION=="add", SUBSYSTEM=="hwmon", DRIVERS=="nouveau", ATTR{pwm1_enable}="2"
_EOF_
  • Пример управления минимальными и максимальными значениями:
shell
su -
cat << _EOF_ > /etc/udev/rules.d/50-nouveau-hwmon.rules
ACTION=="add", SUBSYSTEM=="hwmon", DRIVERS=="nouveau", ATTR{pwm1_enable}="1", ATTR{pwm1_min}="10", ATTR{pwm1_min}="90"
_EOF_

Осторожно

При неправильном использовании есть шанс перегреть видеокарту. Соблюдайте осторожность

Список параметров Nouveau для ядра

Существует список параметров для ядра, про которые мало что можно написать или просто мало информации.

Файл управленияОписание
runpmПринудительное включение (1) или отключение (0), управление питанием во время работы. По умолчанию только для систем Optimus установлено значение -1
noaccelОтключение ускорение ядра / abi16 (1 — отключить ускорения, 0 — включить)
nofbaccelОтключение ускорения fbcon (1 — отключить ускорение, 0 — включить)
modesetДолжен ли быть включён драйвер. 0 для отключённого, 1 для включённого, 2 для "безголового?"
config.NvAGPРежим agp (0 для отключения, 1 для включения
config.NvBiosУказать источник VBIOS, как один из OpenFirmware / PRAMIN / PROM / ACPI / PCIROM / PLATFORM или имя файла, переданное в request_firmware
config.NvFanPWMВключить использование ШИМ для вентилятора, автоматическое определение по умолчанию
config.NvForcePostНужно ли принудительно выполнять POST устройства, по умолчанию отключено
config.NvMemExecПринудительное включение/отключение выполнения сценария синхронизации памяти.
config.NvGrUseFWИспользовать прерывания MSI, включённые по умолчанию на чипсетах, которые их поддерживают
config.NvMXMDCBОчистка выходов DCB из BIOS, включено по умолчанию
config.NvPCIEТолько семейство NV40, использовать ли PCI-E GART, включено по умолчанию.
config.NvPmEnableGatingВключает синхронизацию для графических процессоров Kepler
vram_pushbufСоздать push-буферы DMA во VRAM
duallinkРазрешить двухканальную TMDS (включено по умолчанию)
tv_normДефолтный ТВ норм. По умолчанию — PAL. Допустимые значения: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J, hd480i, hd480p, hd576i, hd576p, hd720p, hd1080i. Это применимо только к картам, у которых нет внешних кодировщиков
tv_disableОтключить обнаружение ТВ-выхода

Источники:

Авторы

История изменений