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
Выбор правильного драйвера
При выборе драйвера для графического чипа следует учесть три основных аспекта:
- Развитие драйверов: Как Nouveau, так и драйвер от NVIDIA постоянно обновляются и развиваются. Невозможно точно предсказать, какие функции будут добавлены или изменены в будущем. Если однажды услышали, что чего-то нет в каких-то драйверах, через полгода это может поменяться.
- Архитектура графического чипа: Важно учитывать, что старые модели графических чипов, как правило, лучше работают с драйвером Nouveau, чем с последними, где предпочтительнее использовать драйвер NVIDIA. Однако всё индивидуально, и проверка требуется для каждой архитектуры видеочипов отдельно. Для проверки уровня поддержки различных архитектур можно обратиться к Feature Matrix для Nouveau и к блоку настройки драйвера в случае с NVIDIA.
- Происхождение драйверов: Проприетарный драйвер 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 и решение проблемы с неизвестным монитором, но только для нового драйвера.
Выполните следующую команду в терминале:
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:
На сайте NVIDIA НАЙДИТЕ последний подходящий драйвер, выбрав модель карты и операционную систему Linux 64-bit (драйверы Linux Aarch64 ставится аналогично), и скачайте этот драйвер;
Под пользователем
root
переместите скачанный файл в папку/opt
;ОБЯЗАТЕЛЬНО обновите систему:
su -
apt-get update
apt-get dist-upgrade
update-kernel # установит последнее ядро
После обновления понадобится перезагрузка для активации установленного ядра.
- Установите дополнительные зависимости:
su -
apt-get install gcc kernel-headers-modules-$kflavor dkms libglvnd-devel # где $kflavor - версия флейвора вашего запущенного ядра
reboot
::: alert
Нужно перезагрузиться ещё раз, чтобы DKMS начал работать.
:::
- Переход в TTY:
Нажмите сочетание клавиш Ctrl + Alt + F3 (или другие сочетания). Будет осуществлён переход в TTY (чёрный экран и строка ожидания ввода логина)
Войдите под суперпользователем root
и отключите дисплейный менеджер (в случае с ALT Regular Gnome — GDM):
systemctl stop gdm
- Установка драйвера (на примере версии 560.35.03):
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
.
- Последняя настройка до перезагрузки машины:
- В файле
/etc/sysconfig/grub2
добавьте в параметрGRUB_CMDLINE_LINUX_DEFAULT
строчкуnvidia-drm.modeset=1
и пересоздайте файл настройки загрузчика GRUB2, выполнив:
grub-mkconfig -o /boot/grub/grub.cfg
- Создайте файл
/etc/modprobe.d/nvidia.conf
с следующим содержимым:
blacklist nouveau
options nvidia_drm fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
Если установщик предложил вам отключить запуск Nouveau, вместо создания отдельного файла достаточно отредактировать созданный драйвером файл. Он будет находиться в /etc/modprobe.d/
и называться nvidia-installer-*
. Добавьте в него следующие строки:
options nvidia_drm fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
- Пересоберите initrd с помощью команды:
make-initrd -k $(uname -r)
- Удаление установщика:
cd /opt
rm NVIDIA-Linux-x86_64-560.35.03.run
Способ 3. Вручную
Для перехода с Nouveau на NVIDIA рекомендуется сначала обновить ядро:
su -
update-kernel
Для дальнейшей установки проприетарного драйвера NVIDIA необходимо перезагрузить операционную систему.
Установка проприетарного драйвера и добавление Nouveau в чёрный список:
- Перейдите в режим root:
su -
- Установите
nvidia_glx_common
:
apt-get install nvidia_glx_common
epm -i nvidia_glx_common
- Добавьте Nouveau в чёрный список:
echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nvidia-x11.conf
- Запустите скрипт установки драйверов:
nvidia-install-driver
Настройка драйвера
Существует 4 версии драйвера NVIDIA, устанавливающиеся в зависимости от поколения видеокарты.
Далее будет описана важная информация и настройка каждой из этих версий.
Подсказка
Чтобы узнать версию установленного драйвера, необходимо ввести:
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
:
su -
mcedit /etc/sysconfig/grub2
grub-mkconfig -o /boot/grub/grub.cfg
Внимание
Эта функция безопасности отвечает за защиту от ряда методов эксплойта.
Сессия Wayland
Для работы Wayland необходимо сделать 2 вещи:
- Активировать метод Kernel Mode Setting
- Настроить сохранение выделенных ресурсов видеопамяти
Внимание
У драйвера 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 вещи:
- Активировать метод Kernel Mode Setting
- Настроить сохранение выделенных ресурсов видеопамяти
Внимание
У драйвера 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 доступны в обоих окружениях, но некоторые дополнительные возможности могут быть ограничены.
su -
apt-get update
apt-get install nvidia-settings
epm -i nvidia-settings
NVIDIA System Management Interface
NVIDIA System Management Interface (NVSMI), или nvidia-smi — предоставляет возможности мониторинга и управления для NVIDIA Tesla, Quadro, GRID и GeForce, начиная с семейства Fermi.
su -
apt-get update
apt-get install nvidia-smi
epm -i nvidia-smi
switcheroo-control
switcheroo-control — утилита для выбора графического устройства при запуске приложения на устройствах с несколькими графическими процессорами
Информация
Для устройств, имеющих как встроенный, так и выделенный графический процессор, switcheroo-control по умолчанию использует встроенный графический процессор для экономии энергии.
su -
apt-get update
apt-get install switcheroo-control
systemctl enable --now switcheroo-control.service
epm -i switcheroo-control
systemctl enable --now switcheroo-control.service
После установки приложения switcheroo-control, в меню появится пункт «Запустить с помощью выделенной видеокарты»
EnvyControl
EnvyControl — CLI-утилита, которая позволяет выбирать режим работы гибридной графики:
Гибридный режим
- Позволяет драйверу самому решать, какой графический процессор использовать. Обычно используется интегрированная графика, а дискретная графика работает только если она нужна, например, в играх или программах для монтажа
- Позволяет использовать RTD3
- Работает только на видеокартах Turing и выше
- Возможны проблемы с HDMI
Интегрированный режим
- Использует только интегрированную графику (Intel или AMD) отключая NVIDIA
- Мониторы подключённые к NVIDIA работать не будут
Режим NVIDIA
- Используется исключительно видеокарта от NVIDIA
Примеры
Установить интегрированный режим:
su -
envycontrol -s integrated
Установить гибридный режим и включить RTD3 (если не указывать режим, то будет выбран второй):
su -
envycontrol -s hybrid --rtd3
Установить гибридный режим, включить ForceCompositionPipeline
, а так же установить coolbits
на 28, разрешая разгон видеокарты:
su -
envycontrol -s nvidia --force-comp --coolbits 28
su -
apt-get update
apt-get install envycontrol
epm -i envycontrol
После установки рекомендуется ввести команду envycontrol --help
, чтобы ознакомиться со всеми возможностями утилиты. Также доступно расширение для GNOME
Vulkan Information
Vulkan Information — отображает информацию о поддерживаемых возможностях Vulkan для пользователей графических устройств NVIDIA. Необходимо установить пакет vulkan-tools
:
su -
apt-get update
apt-get install vulkan-tools
epm -i vulkan-tools
Для вывода общей информации в терминале:
vulkaninfo --summary
nvidia-vaapi-driver
nvidia-vaapi-driver — реализация VA-API, использующая NVDEC в качестве бэкенда. Эта реализация специально разработана для использования в Firefox для ускоренного декодирования веб-содержимого и может работать некорректно в других приложениях. Дополнительную информацию можно посмотреть на странице проекта
su -
apt-get update
apt-get install nvidia-vaapi-driver
epm -i nvidia-vaapi-driver
nvidia-modprobe
nvidia-modprobe — используется компонентами драйвера NVIDIA в пользовательском пространстве для проверки загрузки модуля ядра NVIDIA и наличия файлов устройств NVIDIA. Эти возможности обычно предоставлялись системами конфигурации дистрибутива GNU/Linux, такими как udev
.
Подсказка
По возможности рекомендуется использовать встроенные механизмы вашего дистрибутива GNU/Linux для управления загрузкой модулей ядра и созданием файлов устройств. Эта утилита предоставляется в качестве запасного варианта для работы независимо от дистрибутива.
su -
apt-get update
apt-get install nvidia-modprobe
epm -i nvidia-modprobe
nvidia-cuda-toolkit
nvidia-cuda-toolkit — пакет, содержащий библиотеки и сопутствующие файлы, необходимые для запуска программ, использующих CUDA.
su -
apt-get update
apt-get install nvidia-cuda-toolkit
epm -i nvidia-cuda-toolkit
nvidia-xconfig
nvidia-xconfig — инструмент, предназначенный для обеспечения базового управления по параметрам конфигурации, доступным в драйвере NVIDIA X11.
su -
apt-get update
apt-get install nvidia-xconfig
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 - NVIDIA (proprietary)
После выбора нажмите
ОК
,Применить
и перезагрузите систему
Детальная настройка драйвера
Активация Kernel Mode Setting.
Необходимо прописать в параметр GRUB_CMDLINE_LINUX_DEFAULT
значение nvidia-drm.modeset=1
и сгенерировать новых grub.cfg
:
su -
mcedit /etc/sysconfig/grub2
grub-mkconfig -o /boot/grub/grub.cfg
Подсказка
Чтобы проверить, работает ли KMS, выполните:
su -
cat /sys/module/nvidia_drm/parameters/modeset
Если команда вернула Y
, то KMS работает. В ином случае можете попробовать включить его через параметры ядра
В драйверах 550.54.14 и выше настройка KMS не нужна
Начиная с октября 2023 года, в ручной активации KMS нет необходимости. Правильная опция будет прописана вместе с установкой драйвера и будет находиться в /etc/modprobe.d/nvidia_common.conf
.
Настройка сохранения выделенных ресурсов видеопамяти
Способ 1. Сохранение в безымянных временных файлах
Такой способ позволяет использовать глубокий уровень сна (S4
и S5
) и не требует дополнительной поддержки S0ix
.
Внимание
Существуют проблемы на некоторых устройствах с PRIME. Этот способ направлен в основном на настольные ПК
- Активируйте интерфейсы управления питания NVIDIA:
su -
systemctl enable nvidia-suspend.service nvidia-resume.service nvidia-hibernate.service
Подсказка
Эти интерфейсы заменяют стандартные sleep
, hibernate
и resume
, давая возможность записать ресурсы видеопамяти перед отключением питания у видеокарты.
Информация
Если вы устанавливали проприетарный драйвер NVIDIA при помощи epm, то данная команда уже была выполнена автоматически.
- В опциях драйвера NVIDIA измените способ сохранения ресурсов видеопамяти:
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% сверху, будет вполне достаточно для сохранения.
Узнать количество видеопамяти можно командой:
nvidia-smi -q -d MEMORY | grep 'FB Memory Usage' -A1
Также во избежание нехватки места, не следует указывать директории с tmpfs
(например, /tmp
или /run
) в опции NVreg_TemporaryFilePath
.
NVIDIA не даёт каких-то конкретных рекомендаций, какую директорию использовать, но на форумах зачастую рекомендуется /var/tmp
, что соответствует описанию раздела.
Способ 2. Режим сохранения питания S0ix
.
Этот способ позволяет не выгружать видеопамять. Режим S0ix
создан для переносных устройств.
- Проверьте, поддерживает ли система
s2idle
:
cat /sys/power/mem_sleep
Подсказка
Если в выводе есть s2idle
, значит он поддерживается. В ином случае используйте Способ 1.
- Проверьте, поддерживает ли видеочип
S0ix
:
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
:
su -
modprobe nvidia NVreg_EnableS0ixPowerManagement=1
- Если при выводе
cat /sys/power/mem_sleep
,s2idle
не был в квадратных скобках ([s2idle]
), выполните:
su -
echo "s2idle" > /sys/power/mem_sleep
- После указания опции и режима переведите устройство в режим ожидания и проверьте, корректно ли всё загрузилось. Если всё хорошо, добавьте настройки для постоянной загрузки:
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
:
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
:
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
:
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
:
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
:
su -
cat << _EOF_ > /etc/modprobe.d/nvidia_PAT.conf
# This options activate PAT
options nvidia NVreg_UsePageAttributeTable=1
_EOF_
make-initrd
Внимание
Удостоверьтесь, что ваша система поддерживает PAT, иначе у вас могут возникнуть проблемы с системой:
su -
cat /proc/cpuinfo | grep pat
GSP прошивка
Некоторые видеокарты имеют GPU System Processor (GSP), который может использоваться для разгрузки задач и управления графическим процессором. По умолчанию он включён для ограниченного числа видеокарт.
Начиная с архитектуры Turing, GSP присутствует во всех видеокартах и его можно принудительно включить:
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
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:
su -
mcedit /etc/sysconfig/grub2
Добавьте в параметр
GRUB_CMDLINE_LINUX_DEFAULT
значениеinitcall_blacklist=simpledrm_platform_driver_init
Сгенерируйте
grub.cfg
:
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:
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:
su -
nvidia-smi -pl 160.30
Вывести в терминале поддерживаемые частоты:
su -
nvidia-smi -q -d SUPPORTED_CLOCKS
Установить пороги частоты GPU:
su -
nvidia-smi --lock-gpu-clocks=0,1695 --mode=1
Установить пороги частоты видеопамяти:
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:
nvidia-xconfig --cool-bits=2
Пример ручной записи в xorg.conf
:
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 секунд |
Указываются они для каждого типа работы питания следующим образом:
PerfLevelSrc=0x[стратегия для работы от батареи][стратегия для работы от сети]
PerfLevelSrc=0x2233
3. Режимы производительности
Режимы производительности применяются только при стратегии с фиксированной частотой (22
). Для адаптивной стратегии 33
указание режима не требуется.
Существует 3 режима производительности:
Режим | Описание |
---|---|
0x1 | Максимальная производительность — уровень с самым высоким уровнем производительности |
0x2 | Сбалансированный — один из средних уровней производительности |
0x3 | Максимальное энергосбережение — минимальный уровень производительности |
Значения указываются в параметрах PowerMizerDefault
и PowerMizerDefaultAC
.
PowerMizerDefaultAC=0x3; PowerMizerDefault=0x1
Параметр | Описание |
---|---|
PowerMizerDefault | Содержит значение режима PowerMizer, которое будет использоваться для режима питания от батареи |
PowerMizerDefaultAC | Содержит значение режима PowerMizer, которое будет использоваться для режима питания от сети |
Если доступен только один тип работы питания (обычно от сети - AC, проверьте текущий параметр GPUPowerSource
), используйте только тот параметр, который определяется в системе.
Есть 2 способа записи настроек
Информация
В примере использован вариант, когда для работы от сети и от батареи выбран режим с фиксированной частотой (PerfLevelSrc=0x2222
); для питания от батареи выбрано максимальное энергосбережение (PowerMizerDefaultAC=0x3
), а для питания от сети — максимальная производительность (PowerMizerDefaultAC=0x3
)
Способ 1. Запись в /etc/modprobe.conf
:
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):
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:
su -
- Удалите
nvidia_glx_common
:
apt-get remove nvidia_glx_common
epm -e nvidia_glx_common
- Удалите
initcall_blacklist
иnvidia-drm.modeset
, если они есть:
mcedit /etc/sysconfig/grub2
- Сгенерируйте
grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
- Удалите ссылку на
61-gdm.rules
, если она есть
rm /etc/udev/rules.d/61-gdm.rules
- Удалите правила, запрещающие Nouveau, если они есть:
rm /etc/modprobe.d/blacklist-nvidia-x11.conf
- Удалите изменение размещения видеопамяти, если оно есть:
rm /etc/modprobe.d/nvidia_videomemory_allocation.conf
- Установите драйвер (пример для ядра
un-def
):
apt-get install kernel-modules-drm-nouveau-un-def
epm -i kernel-modules-drm-nouveau-un-def
- Если у Вас видеокарта Curie или старше, удостоверьтесь, что у вас установлен пакет xorg-drv-nouveau с DDX-драйвером Xf86-video-nouveau:
apt-get install xorg-drv-nouveau
epm -i xorg-drv-nouveau
Информация
Xf86-video-nouveau — это DDX-драйвер для Xorg, необходимый для поддержки 2D и 3D-ускорения на старых видеокартах.
Для новых видеокарт существует универсальный modesetting-драйвер Xf86-video-modesetting, который уже входит в пакет Mesa и не нуждается в установке.
- Перезагрузите систему
su -
reboot
Как только система загрузилась можно убедиться в том, что Nouveau заработало (в выводе сборки initrd
должен присутствовать Nouveau):
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:
mcedit ~/.bashrc
Внимание
Zink, как говорилось выше, нестабильный, и может ухудшить опыт работы с системой. Если наблюдаются вылеты приложений или иные проблемы, рекомендуется убрать параметр.
Оптимизация ввода-вывода Zink
Дополнительная оптимизация для Zink, в некоторых случаях позволяющая улучшить отзывчивость. В частности, убирает лаг курсора мыши при использовании Zink.
На момент лета 2024 года она всё ещё не внедрена в систему по умолчанию, т.к. ждёт изменения CTS тестов, тем не менее её можно запустить, добавив в переменные окружения ZINK_DEBUG=ioopt
.
Как один из вариантов, можно добавить строку export ZINK_DEBUG=ioopt
в конец ~/.bashrc:
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 для их нормальной загрузки требуют обязательное внедрение прошивки. Если при первой установке или запуске системы на устройстве наблюдаются проблемы, можно временно перейти на другой видеорежим
- Установка прошивки:
apt-get install firmware-nouveau
epm -i firmware-nouveau
Ручная установка прошивки
- Распакуйте прошивку:
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
- Установите прошивку:
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.:
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 и видеопамяти.
- Проверьте доступные состояния питания:
su -
cat /sys/kernel/debug/dri/0/pstate
Ожидаемый вид вывода
07: core 405 MHz memory 810 MHz
0f: core 653-954 MHz memory 1600 MHz
AC: core 953 MHz memory 1600 MHz
- Проверьте интересующее состояние на работоспособность:
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:
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:
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 имеют поддержку управления вентиляторами.
Чтобы узнать точно, есть ли поддержка, нужно проверить, есть ли файлы управления:
ls /sys/class/drm/card0/device | grep pwm1
Ожидаемый вид вывода
pwm1
pwm1_enable
pwm1_max
pwm1_min
Файл управления | Описание |
---|---|
pwm1 | Управление постоянной скоростью. |
pwm1_enable | Включение режимов управления скоростью: 0 (выключить), 1 (вручную), 2 (автоматически) |
pwm1_max | Установка максимальной скорости. |
pwm1_min | Установка минимальной скорости. |
Путём добавления процентных значений скоростей в эти файлы (кроме pwm1_enable
, где выбираются режимы), ими можно управлять
Пример
- Включение ручного управление (если будет
0
или2
, указывать скорости нет необходимости)
su -
echo 1 > /sys/class/drm/card0/device/pwm1_enable
- Установка мощности вентилятора на 40%
su -
echo 40 > /sys/class/drm/card0/device/pwm1
Один из вариантов управления — сделать изменения постоянными. Для этого нужно занести их в udev
правила.
- Пример ручного управления:
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_
- Пример автоматического управления:
su -
cat << _EOF_ > /etc/udev/rules.d/50-nouveau-hwmon.rules
ACTION=="add", SUBSYSTEM=="hwmon", DRIVERS=="nouveau", ATTR{pwm1_enable}="2"
_EOF_
- Пример управления минимальными и максимальными значениями:
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 | Отключить обнаружение ТВ-выхода |