From 376b2035a88728e025b2643cb9a11ea8ed0d80b5 Mon Sep 17 00:00:00 2001 From: vlad196 Date: Wed, 10 Jul 2024 22:18:08 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D1=91=D1=81=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8?= =?UTF-8?q?=D0=B7=20Alt=20Gnome=20Wiki=20=D0=B8=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20@X1Z53?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/graphics/nvidia/index.md | 44 +- docs/graphics/nvidia/nvidia-drivers/index.md | 669 +++++++++++++------ docs/graphics/nvidia/nvidia-nouveau/index.md | 291 +++++++- 3 files changed, 758 insertions(+), 246 deletions(-) diff --git a/docs/graphics/nvidia/index.md b/docs/graphics/nvidia/index.md index 7520ec2..34db573 100644 --- a/docs/graphics/nvidia/index.md +++ b/docs/graphics/nvidia/index.md @@ -1,54 +1,50 @@ # NVIDIA -## На данный момент существует 2 различных драйвера: +На данный момент существуют 2 драйвера: -### 1. [Проприетарный драйвер от NVIDIA](./nvidia-drivers/#_1-проприетарныи-драивер-от-nvidia) +### 1. Проприетарный драйвер от NVIDIA -NVIDIA — это собственный драйвер самой компании [nvidia.com](https://www.nvidia.com). NVIDIA драйвер является [закрытым программным обеспечением](https://en.wikipedia.org/wiki/Proprietary_software) и поставляется отдельно от ядра Linux, требуя индивидуальной установки. +NVIDIA — это собственный драйвер от [NVIDIA](https://www.nvidia.com). Этот драйвер является [закрытым программным обеспечением](https://en.wikipedia.org/wiki/Proprietary_software) и поставляется отдельно от ядра GNU/Linux, требуя индивидуальной установки. -Важно отметить, что драйвер NVIDIA постоянно развивается и обновляется, и различные версии этого драйвера могут иметь свои особенности и ограничения, [поэтому критически важно знать версию установленного драйвера и информацию, связанную с ним.](./nvidia-drivers/#настроика-драиверов) +Важно отметить, что драйвер NVIDIA постоянно развивается и обновляется, и различные версии могут иметь особенности и ограничения, [поэтому критически важно знать версию установленного драйвера и информацию, связанную с ним.](#настроика-драивера) -При установке основного пакета [nvidia_glx_common](./nvidia-drivers/#способ-2-вручную), необходимая версия драйвера устанавливается автоматически, и не требуется никаких дополнительных действий со стороны пользователя. +При установке основного пакета [`nvidia_glx_common`](#способ-2-вручную), необходимая версия драйвера устанавливается автоматически, не требуя никаких дополнительных действий со стороны пользователя. Также существует скрипт установки через [EPM](#способ-1-через-epm), предлагающий собственные дополнительные настройки. -Также существует скрипт установки через [EPM](./nvidia-drivers/#способ-1-через-epm), предлагающий собственные дополнительные настройки. +### 2. Драйвер Nouveau -### 2. [Драйвер Nouveau](./nvidia-nouveau/#смена-проприетарных-драиверов-от-nvidia-на-nouveau) +Nouveau — это проект с [открытым исходным кодом](https://en.wikipedia.org/wiki/Open-source_software), созданный независимыми разработчиками с использованием методов реверс-инжиниринга. В настоящее время он разрабатывается под эгидой [X.Org Foundation](https://x.org/) и размещается на [freedesktop.org](https://nouveau.freedesktop.org/). Nouveau является частью проекта [Mesa 3D](https://www.mesa3d.org/) и систем на базе GNU/Linux. -Nouveau — это [open-source](https://en.wikipedia.org/wiki/Open-source_software) проект, созданный независимыми разработчиками с использованием методов реверс-инжиниринга. В настоящее время он разрабатывается под эгидой [X.Org Foundation](https://x.org/) и размещается на [freedesktop.org](https://nouveau.freedesktop.org/). Nouveau является частью проекта [MESA 3D](https://www.mesa3d.org/), и систем GNU Linux. +Из-за обратно-проектируемого метода разработки уровень поддержки различных архитектур GPU может варьироваться, поэтому важно знать, [насколько хорошо](https://nouveau.freedesktop.org/FeatureMatrix.html) Nouveau поддерживает целевую видеокарту. -Из-за обратно-проектируемого метода разработки, уровень поддержки различных архитектур GPU может варьироваться, [поэтому важно знать какая у Nouveau поддержка архитектуры вашей видеокарты](https://nouveau.freedesktop.org/FeatureMatrix.html). - -Драйвер Nouveau изначально присутствует в ядре системы, и настройка не требуется. +Драйвер Nouveau изначально присутствует в ядре системы и требует вмешательства в редких случаях, таких как [использование на Macbook](https://alt-gnome.wiki/macbook-with-nouveau.html). ::: info -У Nouveau есть страница с названиями видеокарт, их кодовыми наименованиями и их архитектурой. - -См. страницу [Code Names](https://nouveau.freedesktop.org/CodeNames.html) +Названия видеокарт, кодовые наименования и архитектуру можно посмотреть на отдельной странице [Code Names](https://nouveau.freedesktop.org/CodeNames.html) ::: -## Выбор правильного драйвера: +## Выбор правильного драйвера -При выборе драйвера для графического чипа, следует учесть три основных аспекта: +При выборе драйвера для графического чипа следует учесть три основных аспекта: -1. **Развитие драйверов:** Как Nouveau, так и NVIDIA постоянно обновляются и развиваются. Невозможно точно предсказать, какие функции будут добавлены или изменены в каждом из них в будущем. Если однажды услышали, что чего-то нет в каких-то драйверах, через полгода это может поменяться. +1. **Развитие драйверов:** Как Nouveau, так и драйвер от NVIDIA постоянно обновляются и развиваются. Невозможно точно предсказать, какие функции будут добавлены или изменены в будущем. Если однажды услышали, что чего-то нет в каких-то драйверах, через полгода это может поменяться. 2. **Архитектура графического чипа:** Важно учитывать, что старые модели графических чипов, как правило, лучше работают с драйвером Nouveau, чем с последними, где предпочтительнее использовать драйвер NVIDIA. Однако всё индивидуально, и проверка требуется для каждой архитектуры видеочипов отдельно. Для проверки уровня поддержки различных архитектур можно обратиться к [Feature Matrix](https://nouveau.freedesktop.org/FeatureMatrix.html) для Nouveau и к [блоку настройки драйвера](#настройка-драйвера) в случае с NVIDIA. 3. **Происхождение драйверов:** Проприетарный драйвер NVIDIA разрабатываются самой компанией NVIDIA и зачастую не контактирует с сообществом Linux. В то же время Nouveau является частью проекта Mesa (одной из основных частей графического стека GNU/Linux). Однако он разрабатывается с помощью реверс-инжиниринга, то есть проприетарный драйвер обычно обеспечивает более высокий уровень поддержки видеокарт, в то время как Nouveau обеспечивает более глубокую интеграцию с GNU/Linux системами. -### На данный момент, драйвера имеют следующие основные различия: +### Отличия в драйверах -Проприетарный драйвер NVIDIA обеспечивает управление питанием большего числа видеокарт, поддерживают работу CUDA, а также обеспечивают лучшую поддержку игр и графических программ. Это способствует более комфортной работе с операционной системой. +Проприетарный драйвер NVIDIA обеспечивает управление питанием большего числа видеокарт, поддерживает работу CUDA, а также лучше справляется с поддержкой игр и графических программ. -С другой стороны, Nouveau встроен в ядро Linux и обычно не требует дополнительных настроек. Он также поддерживает управление питанием, но на меньшем количестве видеокарт, не поддерживает CUDA и имеют плохую поддержку игр. В некоторых моментах обеспечивает лучшую поддержку там, [где NVIDIA имеет плохую](https://gitlab.freedesktop.org/xorg/xserver/-/issues/1317). +Открытый Nouveau встроен в ядро GNU/Linux и обычно не требует дополнительных настроек, также обеспечивает управление питанием, но на меньшем количестве видеокарт, не поддерживает CUDA и имеют плохую поддержку игр. [В некоторых моментах](https://gitlab.freedesktop.org/xorg/xserver/-/issues/1317) справляется лучше, чем NVIDIA. ::: info -Дополнительную информацию о поддержке управления питанием с использованием Nouveau можно найти здесь: [PowerManagement](https://nouveau.freedesktop.org/FeatureMatrix.html) +Дополнительную информацию о поддержке управления питанием с использованием Nouveau можно найти на странице [PowerManagement](https://nouveau.freedesktop.org/PowerManagement.html) ::: -### Рекомендации по выбору: +### Рекомендации по выбору -Если вам необходимы игры, CUDA и другие технологии NVIDIA, и при использовании Nouveau возникают проблемы с производительностью, рекомендуется установить драйвер NVIDIA. +Если драйвер выбирается для игр, CUDA и других технологий NVIDIA, а при использовании Nouveau возникают проблемы с производительностью, — рекомендуется установить драйвер NVIDIA. -Если вы не используете вышеупомянутые технологии, и ваша видеокарта работает стабильно на Nouveau, рекомендуется остаться на нём. +Если вышеупомянутые технологии не используете и видеокарта работает стабильно на Nouveau — рекомендуется выбирать его. ### Источники: diff --git a/docs/graphics/nvidia/nvidia-drivers/index.md b/docs/graphics/nvidia/nvidia-drivers/index.md index baba2e5..8010dda 100644 --- a/docs/graphics/nvidia/nvidia-drivers/index.md +++ b/docs/graphics/nvidia/nvidia-drivers/index.md @@ -4,20 +4,22 @@ ### Способ 1. Через EPM -Для упрощения процесса установки проприетарного драйвера для графических карт NVIDIA можно использовать [интерфейс EPM](/package-manager/epm/). -Данный скрипт включает в себя **наиболее полную первоначальную настройку**, включая [активацию wayland](#сессия-wayland) и решение проблемы с [неизвестным монитором](#«неизвестныи-монитор»-в-настроиках-дисплеев-в-сессии-wayland), **но только для нового драйвера**. +:: tip +Если необходима наиболее простая установка, используйте этот способ. +:: -**Если необходима наиболее простая установка, используйте этот способ.** +Для упрощения процесса установки проприетарного драйвера для графических карт NVIDIA, можно использовать скрипт из [EPM](/package-manager/epm/). +Данный скрипт включает в себя **наиболее полную первоначальную настройку**, затрагивая активацию Wayland и решение проблемы с [неизвестным монитором](#«неизвестныи-монитор»-в-настроиках-дисплеев-в-сессии-wayland), **но только для нового драйвера**. -Выполните следующую команду в терминале: +Выполните следующие команды в терминале: ```shell su - epm play switch-to-nvidia ``` -::: tip -Для корректной установки, во время выполнения скрипта следует внимательно читать появляющиеся сообщения и в точности следовать им. Возможно, потребуется несколько перезагрузок. Например, для автоматического обновления ядра. +::: warning +Для корректной установки во время выполнения скрипта следует внимательно читать появляющиеся сообщения и в точности следовать инструкциям. Возможно потребуется несколько перезагрузок, например, для автоматического обновления ядра. ::: После успешного завершения работы скрипта нужно перезагрузить операционную систему. @@ -31,16 +33,38 @@ su - update-kernel ``` -Для дальнейшей установки проприетарных драйвера NVIDIA, **необходимо перезагрузить операционную систему**. +Для дальнейшей установки проприетарного драйвера NVIDIA **необходимо перезагрузить операционную систему**. -Установим проприетарный драйвер NVIDIA: +Удаление Nouveau и установка проприетарного драйвера: +- Перейдите в режим root: ```shell su - -rpm -e $(rpm -qf `modinfo -F filename nouveau`) +``` + +- Установите `nvidia_glx_common`: +::: code-group + +```shell[apt-get] apt-get install nvidia_glx_common +``` + +```shell[epm] +epm -i nvidia_glx_common +``` + +::: + +- Добавьте Nouveau в чёрный список: + +```shell +echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nvidia-x11.conf +``` + +- Запустите скрипт установки драйверов: + +```shell nvidia-install-driver -make-initrd ``` ::: danger @@ -49,27 +73,46 @@ make-initrd ## Настройка драйвера -Существует 5 версий драйвера NVIDIA, устанавливающиеся в зависимости от возраста вашей видеокарты. +Существует 4 версии драйвера NVIDIA, устанавливающиеся в зависимости от поколения видеокарты. + Далее будет описана важная информация и настройка каждой из этих версий. -Чтобы узнать версию Ваших драйвера, необходимо ввести: +::: tip + +Чтобы узнать версию установленного драйвера, необходимо ввести: ```shell inxi -G ``` +::: + ### Драйвер 550.54.14 или новее -При установке драйвера через [EPM](#способ-1-через-epm) настройка под wayland уже будет произведена. Если Вы использовали этот способ, дальнейшая настройка не требуется. +При установке драйвера через [EPM](#способ-1-через-epm) настройка под Wayland производится автоматически. Если использован этот способ, дальнейшая настройка под Wayland не требуется. -Если установили вручную, смотрите дальнейшую настройку. +Если установка производилась вручную, следует выполнить дальнейшую настройку. #### Сессия Wayland -Для работы Wayland необходимо настроить [сохранение выделенных ресурсов видеопамяти](#настроика-сохранение-выделенных-ресурсов-видеопамяти) +Для работы Wayland необходимо настроить [сохранение выделенных ресурсов видеопамяти](#настроика-сохранения-выделенных-ресурсов-видеопамяти) ::: warning -У драйвера NVIDIA существуют [известные проблемы и несовместимости](#проблемы-c-wayland-протоколом), связанные с wayland. Вы можете ознакомится с ними для лучшего понимания дел на данный момент. +У драйвера NVIDIA существуют [известные проблемы и несовместимости](#проблемы-c-протоколом-wayland), связанные с Wayland. +::: + +#### Работа заставки (plymouth) + +Для работы заставки необходимо запустить модули драйвера как можно раньше, для этого необходимо [положить их в `initramfs`](#ранняя-загрузка-модулеи-nvidia) + +Также, если в параметрах ядра есть `initcall_blacklist=simpledrm_platform_driver_init`, его необходимо удалить и использовать другой способ из [решения проблем с «Неизвестным монитором»](#«неизвестныи-монитор»-в-настроиках-дисплеев-в-сессии-wayland) + +::: tip +Проверить, есть ли этот параметр, можно в файле `/etc/sysconfig/grub2` в строке с параметром `GRUB_CMDLINE_LINUX_DEFAULT`. +::: + +::: danger При установке через EPM и для пользователей **Ximper** +Этот параметр будет у Вас будет по умолчанию. ::: ### Драйвер 470.223.02 @@ -86,8 +129,9 @@ Kwin [удалила поддержку EGLStreams](https://invent.kde.org/plasm #### Проблема с Intel: -Драйвер 470.223.02 и более ранние версии, начиная с **Linux 5.18** могут работать неправильно в системах с процессорами Intel 11-го поколения и новее, из-за несовместимости с [Indirect Branch Tracking](https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/12th-generation-intel-core-processors-datasheet-volume-1-of-2/007/indirect-branch-tracking/). -Можно отключить его, добавив значение `ibt=off` в параметр `GRUB_CMDLINE_LINUX_DEFAULT`: +Драйвер версии 470.223.02 и старше, начиная с версии ядра Linux 5.18 может работать неправильно в системах с процессорами Intel 11-го поколения и новее из-за несовместимости с [Indirect Branch Tracking (IBT)](https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/12th-generation-intel-core-processors-datasheet-volume-1-of-2/007/indirect-branch-tracking/). + +Его можно отключить, добавив значение `ibt=off` в параметр `GRUB_CMDLINE_LINUX_DEFAULT`: ```shell su - @@ -96,7 +140,7 @@ grub-mkconfig -o /boot/grub/grub.cfg ``` ::: warning -Имейте в виду, что эта функция безопасности отвечает за [защиту от ряда методов эксплойта](https://lwn.net/Articles/889475/) . +Эта функция безопасности отвечает за [защиту от ряда методов эксплойта](https://lwn.net/Articles/889475/). ::: #### Сессия Wayland @@ -105,6 +149,20 @@ Kwin [удалила поддержку EGLStreams](https://invent.kde.org/plasm **Сессия Wayland на данном драйвере не поддерживается.** +#### Работа заставки (plymouth) + +Для работы заставки необходимо запустить модули драйвера как можно раньше, для этого необходимо [положить их в `initramfs`](#ранняя-загрузка-модулеи-nvidia) + +Также, если у вас в параметрах ядра есть `initcall_blacklist=simpledrm_platform_driver_init`, его необходимо удалить и использовать другой способ из [решения проблем с «Неизвестным монитором»](#«неизвестныи-монитор»-в-настроиках-дисплеев-в-сессии-wayland) + +::: tip +Проверить, есть ли этот параметр можно в файле `/etc/sysconfig/grub2` в строке с параметром `GRUB_CMDLINE_LINUX_DEFAULT`. +::: + +::: danger При установке через EPM и для пользователей **Ximper** +Этот параметр будет у Вас будет по умолчанию. +::: + ### Драйвер 390.157 ::: info @@ -124,12 +182,27 @@ Kwin [удалила поддержку EGLStreams](https://invent.kde.org/plasm #### Сессия Wayland Kwin [удалила поддержку EGLStreams](https://invent.kde.org/plasma/kwin/-/merge_requests/1638). + **Сессия Wayland на данном драйвере не поддерживается.** +#### Работа заставки (plymouth) + +Для работы заставки необходимо запустить модули драйвера как можно раньше, для этого необходимо [положить их в `initramfs`](#ранняя-загрузка-модулеи-nvidia) + +Также, если у вас в параметрах ядра есть `initcall_blacklist=simpledrm_platform_driver_init`, его необходимо удалить и использовать другой способ из [решения проблем с «Неизвестным монитором»](#«неизвестныи-монитор»-в-настроиках-дисплеев-в-сессии-wayland) + +::: tip +Проверить, есть ли этот параметр можно в файле `/etc/sysconfig/grub2` в строке с параметром `GRUB_CMDLINE_LINUX_DEFAULT`. +::: + +::: danger При установке через EPM и для пользователей **Ximper** +Этот параметр будет у Вас будет по умолчанию. +::: + ### Драйвер 340.108 ::: info -Для драйвера до версии ~400 ускоренное декодирование видео NVDEC **недоступен**. +Для драйвера до версии 400 ускоренное декодирование видео NVDEC **недоступно**. ::: #### Сессия Wayland @@ -155,22 +228,19 @@ Kwin [удалила поддержку EGLStreams](https://invent.kde.org/plasm ## Полезные программы: ::: info -При установке драйвера через **EPM**, многие программы, скорее всего уже будут установлены. -Группа устанавливаемых пакетов, может постоянно меняться, поэтому для уточнения рекомендовано проверить сам [EPM скрипт](https://gitlab.eterfund.ru/etersoft/eepm/blob/master/prescription.d/switch-to-nvidia.sh) -::: +При установке драйвера через **EPM**, многие программы, скорее всего, уже будут установлены. -### NVIDIA Settings +Группа устанавливаемых пакетов, может постоянно меняться, поэтому для уточнения следует посмотреть [EPM-скрипт](https://gitlab.eterfund.ru/etersoft/eepm/blob/master/prescription.d/switch-to-nvidia.sh) -Утилита для настройки и оптимизации графических параметров на компьютерах с видеокартами NVIDIA. Она позволяет пользователям настраивать качество изображения, разрешение экрана, а также различные параметры, связанные с производительностью видеокарты. С помощью Nvidia Settings можно также включить или отключить определенные функции, такие как вертикальная синхронизация или сглаживание. +::: -В зависимости от сессии Xorg или Wayland возможны различаться набор настроек в утилите NVIDIA Settings. Например, в Wayland нельзя настроить вертикальную синхронизацию и тройную буферизацию, так как они работа по-другому в этом окружении. Также в Wayland нет поддержки G-Sync, так как эта технология работает только с NVIDIA и требует специального оборудования. В целом, основные функции NVIDIA Settings доступны в обоих окружениях, но некоторые дополнительные возможности могут быть ограничены. +### NVIDIA Settings -#### Установка из репозитория +NVIDIA Settings — утилита для настройки и оптимизации графических параметров на компьютерах с видеокартами NVIDIA. Она позволяет пользователям настраивать качество изображения, разрешение экрана, а также различные параметры, связанные с производительностью видеокарты. С помощью NVIDIA Settings можно также включить или отключить определённые функции, такие как вертикальная синхронизация или сглаживание. -**NVIDIA Settings** можно установить любым привычным и удобным способом: +В зависимости от сессии (Xorg или Wayland) набор настроек в NVIDIA Settings может различаться. Например, в Wayland нельзя настроить вертикальную синхронизацию и тройную буферизацию, так как они работа по-другому в этом окружении. Также в Wayland нет поддержки G-Sync, так как эта технология работает только с NVIDIA и требует специального оборудования. В целом, основные функции NVIDIA Settings доступны в обоих окружениях, но некоторые дополнительные возможности могут быть ограничены. -**Установка через терминал** ::: code-group ```shell[apt-get] @@ -185,9 +255,11 @@ epm -i nvidia-settings ::: -### nvidia-smi +### NVIDIA System Management Interface -[nvidia-smi](https://developer.download.nvidia.com/compute/DCGM/docs/nvidia-smi-367.38.pdf) (также NVSMI) предоставляет возможности мониторинга и управления для NVIDIA Tesla, Quadro, GRID и GeForce начиная с семейства Fermi. +NVIDIA System Management Interface (NVSMI), или [nvidia-smi](https://developer.download.nvidia.com/compute/DCGM/docs/nvidia-smi-367.38.pdf) — предоставляет возможности мониторинга и управления для NVIDIA Tesla, Quadro, GRID и GeForce, начиная с семейства Fermi. + +::: code-group ```shell[apt-get] su - @@ -199,50 +271,77 @@ apt-get install nvidia-smi epm -i nvidia-smi ``` +::: + +### switcheroo-control + +switcheroo-control — утилита для выбора графического устройства при запуске приложения на устройствах с несколькими графическими процессорами + +::: info +Для устройств, имеющих как встроенный, так и выделенный графический процессор, switcheroo-control по умолчанию использует встроенный графический процессор для экономии энергии. +::: + +::: code-group + +```shell[apt-get] +su - +apt-get update +apt-get install switcheroo-control +systemctl enable --now switcheroo-control.service +``` + +```shell[epm] +epm -i switcheroo-control +systemctl enable --now switcheroo-control.service +``` + +::: + +После установки приложения switcheroo-control, в меню появится пункт «Запустить с помощью выделенной видеокарты» + ### EnvyControl -EnvyControl это утилита командной строки которая позволяет выбирать режим работы гибридной графики, на выбор представлено три режима +EnvyControl — CLI-утилита, которая позволяет выбирать режим работы гибридной графики: -#### Гибридный режим +1. **Гибридный режим** -- Позволяет драйверу самому решать какой графический процессор использовать, обычно большую часть времени используется интегрированная графика, а дискретная графика работает только если она нужна, например в играх или программах для монтажа -- Позволяет использовать RTD3, [подробнее](#управление-питанием-pci-express-runtime-d3-rtd3) -- Работает только на видеокартах Turing и выше -- Возможны проблемы с HDMI + - Позволяет драйверу самому решать, какой графический процессор использовать. Обычно используется интегрированная графика, а дискретная графика работает только если она нужна, например, в играх или программах для монтажа + - Позволяет использовать [RTD3](#управление-питанием-pci-express-runtime-d3-rtd3) + - Работает только на видеокартах Turing и выше + - Возможны проблемы с HDMI -#### Интегрированный режим +2. **Интегрированный режим** -- Использует только интегрированную графику (Intel или AMD) отключая Nvidia -- Мониторы подключенные к Nvidia работать не будут + - Использует только интегрированную графику (Intel или AMD) отключая NVIDIA + - Мониторы подключённые к NVIDIA работать не будут -#### Nvidia режим +3. **Режим NVIDIA** -- Используется исключительно видеокарта от Nvidia + - Используется исключительно видеокарта от NVIDIA -#### Пара примеров +##### Примеры Установить интегрированный режим: ```shell -su- +su - envycontrol -s integrated ``` -Установить гибридный режим и включить RTD3 (если ничего не указывать то значение будет равно двум): +Установить гибридный режим и включить RTD3 (если не указывать режим, то будет выбран второй): ```shell -su- +su - envycontrol -s hybrid --rtd3 ``` -Установить гибридный режим, включить ForceCompositionPipeline, а так же установить coolbits на 28 разрешая разгон видеокарты: +Установить гибридный режим, включить `ForceCompositionPipeline`, а так же установить `coolbits` на 28, разрешая разгон видеокарты: ```shell -su- -envycontrol -s nvidia --force-comp --coolbits 24 +su - +envycontrol -s nvidia --force-comp --coolbits 28 ``` -**Установка через терминал** ::: code-group ```shell[apt-get] @@ -257,11 +356,11 @@ epm -i envycontrol ::: -После установки рекомендуем ввести команду `envycontrol --help` что бы ознакомится со всеми возможностями утилиты, если вы желаете использовать графическую утилиту, доступен так же [апплет для KDE plasma](https://store.kde.org/p/2138365/) +После установки рекомендуется ввести команду `envycontrol --help`, чтобы ознакомиться со всеми возможностями утилиты. Также доступен [апплет для KDE plasma](https://store.kde.org/p/2138365/) -### vulkan-tools +### Vulkan Information -Программа vulkaninfo отображает информацию о поддерживаемых возможностях Vulkan для пользователей графических устройств NVIDIA. Необходимо установить пакет `vulkan-tools`: +Vulkan Information — отображает информацию о поддерживаемых возможностях Vulkan для пользователей графических устройств NVIDIA. Необходимо установить пакет `vulkan-tools`: ::: code-group @@ -277,7 +376,7 @@ epm -i vulkan-tools ::: -Для вывода информации `vulkaninfo` в терминале введите: +Для вывода общей информации в терминале: ```shell vulkaninfo --summary @@ -285,7 +384,9 @@ vulkaninfo --summary ### nvidia-vaapi-driver -Реализация VA-API, использующая NVDEC в качестве бэкенда. Эта реализация специально разработана для использования в Firefox для ускоренного декодирования веб-содержимого и может работать некорректно в других приложениях. Доп. информацию смотрите на [странице проекта](https://github.com/elFarto/nvidia-vaapi-driver) +nvidia-vaapi-driver — реализация VA-API, использующая NVDEC в качестве бэкенда. Эта реализация специально разработана для использования в Firefox для ускоренного декодирования веб-содержимого и может работать некорректно в других приложениях. Дополнительную информацию можно посмотреть на [странице проекта](https://github.com/elFarto/nvidia-vaapi-driver) + +::: code-group ```shell[apt-get] su - @@ -293,15 +394,21 @@ apt-get update apt-get install nvidia-vaapi-driver ``` +```shell[epm] +epm -i nvidia-vaapi-driver +``` + +::: + ### nvidia-modprobe -Утилита nvidia-modprobe используется компонентами драйвера NVIDIA в пользовательском пространстве -для проверки загрузки модуля ядра NVIDIA и наличия -файлов символьных устройств NVIDIA. Эти возможности обычно предоставлялись -системами конфигурации дистрибутива GNU/Linux, такими как udev. По возможности -рекомендуется использовать встроенные механизмы вашего дистрибутива GNU/Linux -для управления загрузкой модулей ядра и созданием файлов устройств. Эта утилита -предоставляется в качестве запасного варианта для работы независимо от дистрибутива. +nvidia-modprobe — используется компонентами драйвера NVIDIA в пользовательском пространстве для проверки загрузки модуля ядра NVIDIA и наличия файлов устройств NVIDIA. Эти возможности обычно предоставлялись системами конфигурации дистрибутива GNU/Linux, такими как `udev`. + +::: tip +По возможности рекомендуется использовать встроенные механизмы вашего дистрибутива GNU/Linux для управления загрузкой модулей ядра и созданием файлов устройств. Эта утилита предоставляется в качестве запасного варианта для работы независимо от дистрибутива. +::: + +::: code-group ```shell[apt-get] su - @@ -309,20 +416,36 @@ apt-get update apt-get install nvidia-modprobe ``` +```shell[epm] +epm -i nvidia-modprobe +``` + +::: + ### nvidia-cuda-toolkit -Этот пакет содержит библиотеки и сопутствующие файлы, необходимые для запуска +nvidia-cuda-toolkit — пакет, содержащий библиотеки и сопутствующие файлы, необходимые для запуска программ, использующих [CUDA](https://developer.nvidia.com/cuda-toolkit). +::: code-group + ```shell[apt-get] su - apt-get update apt-get install nvidia-cuda-toolkit ``` +```shell[epm] +epm -i nvidia-cuda-toolkit +``` + +::: + ### nvidia-xconfig -nvidia-xconfig - это инструмент, предназначенный для обеспечения базового управления по параметрам конфигурации, доступным в драйвере NVIDIA X11. +nvidia-xconfig — инструмент, предназначенный для обеспечения базового управления по параметрам конфигурации, доступным в драйвере NVIDIA X11. + +::: code-group ```shell[apt-get] su - @@ -330,11 +453,19 @@ apt-get update apt-get install nvidia-xconfig ``` +```shell[epm] +epm -i nvidia-xconfig +``` + +::: + + + ## Детальная настройка драйвера ### Активация [Kernel Mode Setting](https://www.kernel.org/doc/html/latest/gpu/drm-kms.html). -Необходимо прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `nvidia-drm.modeset=1` и сгенерировать новых grub.cfg: +Необходимо прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `nvidia-drm.modeset=1` и сгенерировать новых `grub.cfg`: ```shell su - @@ -343,33 +474,35 @@ grub-mkconfig -o /boot/grub/grub.cfg ``` ::: tip -Чтобы проверить, работает ли KMS, напишите в терминале от пользователя root (Администратора): -'cat /sys/module/nvidia_drm/parameters/modeset' +Чтобы проверить, работает ли KMS, выполните: -Если консоль выводит «Y» значит работает. +```shell +su - +cat /sys/module/nvidia_drm/parameters/modeset +``` + +Если команда вернула `Y`, то KMS работает. В ином случае можете попробовать включить его через [параметры ядра](#не-работает-kms) -Если не работает( показывает «N»), можете попробовать включить его через [параметры ядра](#не-работает-kms) ::: ::: details В драйверах 550.54.14 и выше настройка KMS не нужна -[Начиная с октября 2023 года](https://git.altlinux.org/tasks/archive/done/_324/332535/gears/100/git?p=git;a=commit;h=3bb30586e8c78e167a59f680370bad04fe50fadc), в ручной активации KMS нет необходимости. Правильная опция будет прописана вместе с установкой драйвера и будет находиться в /etc/modprobe.d/nvidia_common.conf. +[Начиная с октября 2023 года](https://git.altlinux.org/tasks/archive/done/_324/332535/gears/100/git?p=git;a=commit;h=3bb30586e8c78e167a59f680370bad04fe50fadc), в ручной активации KMS нет необходимости. Правильная опция будет прописана вместе с установкой драйвера и будет находиться в `/etc/modprobe.d/nvidia_common.conf`. ::: -### Настройка сохранение выделенных ресурсов видеопамяти +### Настройка сохранения выделенных ресурсов видеопамяти [NVIDIA предлагает 2 способа](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/powermanagement.html): -#### 1 способ. Через сохранение в безымянных временных файлах. +##### Способ 1. Сохранение в безымянных временных файлах + +Такой способ позволяет использовать глубокий уровень сна (`S4` и `S5`) и не требует дополнительной поддержки `S0ix`. -Такой способ позволяет использовать глубокий уровень сна (S4 и S5), и не требует дополнительной поддержки S0ix. ::: warning -Существу проблемы на некоторых устройствах с PRIME. Этот способ направлен больше на **настольные ПК** +Существуют проблемы на некоторых устройствах с PRIME. Этот способ направлен в основном на **настольные ПК** ::: -**Как включить:** - -Активируем интерфейсы управления питания NVIDIA: +- Активируйте интерфейсы управления питания NVIDIA: ```shell su - @@ -377,14 +510,14 @@ systemctl enable nvidia-suspend.service nvidia-resume.service nvidia-hibernate.s ``` ::: tip -Эти интерфейсы заменяют стандартные sleep hibernate и resume, давая возможность записать ресурсы видеопамяти перед отключением питания у видеокарты. +Эти интерфейсы заменяют стандартные `sleep`, `hibernate` и `resume`, давая возможность записать ресурсы видеопамяти перед отключением питания у видеокарты. ::: -:::info -Если вы устанавливали проприетарный драйвер NVIDIA при помощи epm, то данная команда уже была выполнена автоматически. +::: info +Если вы устанавливали проприетарный драйвер NVIDIA при помощи [epm](/package-manager/epm/), то данная команда уже была выполнена автоматически. ::: -В опциях драйвера NVIDIA указываем о смене способа сохранения ресурсов видеопамяти и указываем куда: +- В опциях драйвера NVIDIA измените способ сохранения ресурсов видеопамяти: ```shell su - @@ -396,56 +529,64 @@ make-initrd ``` ::: info -Для сохранения ресурсов видеопамяти важно, чтобы файловая система имела поддержку безымянных временных файлов и имела достаточный объём для сохранения видеопамяти. Объём, равный сумме всей видеопамяти + 5% от неё, будет вполне достаточно для её сохранения. -Узнать количество видеопамяти можно командой: `nvidia-smi -q -d MEMORY | grep 'FB Memory Usage' -A1` +Для сохранения ресурсов видеопамяти важно, чтобы файловая система имела поддержку безымянных временных файлов и имела достаточный объём для сохранения видеопамяти. Объёма, равного сумме всей видеопамяти и 5% сверху, будет вполне достаточно для сохранения. -NVIDIA не даёт каких-то конкретных рекомендаций, какую директорию использовать, но на форумах зачастую рекомендуют `/var/tmp`, и судя по её [описанию](https://www.pathname.com/fhs/pub/fhs-2.3.html#VARTMPTEMPORARYFILESPRESERVEDBETWEE), этоn вариант наиболее рационален. -::: +Узнать количество видеопамяти можно командой: -#### 2 способ. Через через режим сохранения питания [S0ix](https://ru.msi.com/blog/why-modern-standby-matters-for-business-laptop#:~:text=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%20Modern%20Standby%20%E2%80%93%20%D1%8D%D1%82%D0%BE,%D0%BE%D0%BD%D0%B0%20%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82%20%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D1%83%20%C2%AB%D0%BF%D1%80%D0%BE%D0%B1%D1%83%D0%B6%D0%B4%D0%B0%D1%82%D1%8C%D1%81%D1%8F%C2%BB%20%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE). +```shell +nvidia-smi -q -d MEMORY | grep 'FB Memory Usage' -A1 +``` + +Также во избежание нехватки места, не следует указывать директории с `tmpfs` (например, `/tmp` или `/run`) в опции `NVreg_TemporaryFilePath`. + +NVIDIA не даёт каких-то конкретных рекомендаций, какую директорию использовать, но на форумах зачастую рекомендуется `/var/tmp`, что соответствует [описанию раздела](https://www.pathname.com/fhs/pub/fhs-2.3.html#VARTMPTEMPORARYFILESPRESERVEDBETWEE). -Этот способ позволяет не выгружать видеопамять. -Режим S0ix, а следовательно и данный способ созданы **для переносных устройств**. +::: + +##### Способ 2. Режим сохранения питания [`S0ix`](https://ru.msi.com/blog/why-modern-standby-matters-for-business-laptop#:~:text=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%20Modern%20Standby%20%E2%80%93%20%D1%8D%D1%82%D0%BE,%D0%BE%D0%BD%D0%B0%20%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82%20%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D1%83%20%C2%AB%D0%BF%D1%80%D0%BE%D0%B1%D1%83%D0%B6%D0%B4%D0%B0%D1%82%D1%8C%D1%81%D1%8F%C2%BB%20%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE). -**Как включить:** +Этот способ позволяет не выгружать видеопамять. Режим `S0ix` создан **для переносных устройств**. -Проверяем, поддерживает ли система s2idle. Для этого выполните команду: +- Проверьте, поддерживает ли система `s2idle`: ```shell cat /sys/power/mem_sleep ``` ::: tip -Если в выводе есть s2idle, значит s2idle поддерживается и проверяем видеочип. Если в выводе нет s2idle, тогда используйте 1 способ. +Если в выводе есть `s2idle`, значит он поддерживается. В ином случае используйте [Способ 1](#способ-1-сохранение-в-безымянных-временных-фаилах). ::: -Проверяем, поддерживает ли s0ix видеочип. Для этого выполните команду, перед этим подставив расположение вашего устройства(Посмотрите по каталогам после `/proc/driver/nvidia/gpus`. У каждого устройства своё значение). -: +- Проверьте, поддерживает ли видеочип `S0ix`: ```shell grep 'Video Memory Self Refresh' /proc/driver/nvidia/gpus/::.0/power ``` +::: info +Посмотрите в директории после `/proc/driver/nvidia/gpus`, у каждого устройства своё значение ``, `` и `` +::: + ::: tip -Если ответ `Video Memory Self Refresh: is supported` значит s0ix поддерживает и можно проверять систему дальше. +Если ответ `Video Memory Self Refresh: is supported`, значит `S0ix` поддерживается и можно проверять систему дальше. ::: -Если система и видеочип поддерживает указанные режимы, добавляем параметр `NVreg_EnableS0ixPowerManagement=1`: +- Если система и видеочип поддерживают указанные режимы, добавьте параметр `NVreg_EnableS0ixPowerManagement=1`: ```shell su - modprobe nvidia NVreg_EnableS0ixPowerManagement=1 ``` -Если при выводе `cat /sys/power/mem_sleep` **s2idle** не был в скобках (Вот так: **\[s2idle\]**), выполняем в консоли: +- Если при выводе `cat /sys/power/mem_sleep`, `s2idle` не был в квадратных скобках (`[s2idle]`), выполните: ```shell su - echo "s2idle" > /sys/power/mem_sleep ``` -После указания опции и режима , тестируем сон и проверяем, всё ли корректно загрузилось. Если всё хорошо, добавляем настройки на постоянную загрузку: +- После указания опции и режима переведите устройство в режим ожидания и проверьте, корректно ли всё загрузилось. Если всё хорошо, добавьте настройки для постоянной загрузки: ```shell su - @@ -455,7 +596,7 @@ _EOF_ make-initrd ``` -Если ранее приходилось вручную указывать s2idle, прописываем в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `mem_sleep_default=s2idle` и генерируем новых grub.cfg: +- Если ранее приходилось указывать `s2idle` вручную, укажите в параметре `GRUB_CMDLINE_LINUX_DEFAULT` значение `mem_sleep_default=s2idle` и сгенерируйте новых `grub.cfg`: ```shell su - @@ -463,42 +604,67 @@ mcedit /etc/sysconfig/grub2 grub-mkconfig -o /boot/grub/grub.cfg ``` -::: info -При переходе видеокарты в спящий режим S0ix, будет выполнятся один из 2-х сценариев: +:: info -- Если использование памяти было меньше определённого порога, видеопамять с копируется в системную память и полностью отключится вместе с графическим процессором +При переходе видеокарты в спящий режим `S0ix` будет выполнятся один из 2-х сценариев: + +- Если использование памяти было меньше определённого порога, видеопамять будет скопирована в системную память и полностью отключится вместе с графическим процессором - Если использование памяти было больше определённого порога, видеопамять будет в режиме самообновления, в то время как остальная часть графического процессора будет отключена -По умолчанию, этот порог составляет 256 МБ, и его можно изменить с помощью параметра `NVreg_S0ixPowerManagementVideoMemoryThreshold`. Имейте ввиду, чем больше указан размер, тем выше вероятность, что часть видеопамяти не будет сохранена. +По умолчанию порог — 256 МБ. Его можно изменить с помощью параметра `NVreg_S0ixPowerManagementVideoMemoryThreshold`. Однако стоит учитывать, что чем выше порог, тем выше вероятность того, что часть видеопамяти не будет сохранена. + +::: + +### Ранняя загрузка модулей NVIDIA + +Для того, чтобы запустить модули NVIDIA на этапе `initramfs`, необходимо добавить их в `/etc/initrd.mk` и отключить [Features](https://github.com/osboot/make-initrd/wiki/Features), которые [запрещают их загрузку](https://git.altlinux.org/gears/n/nvidia_glx_common.git?p=nvidia_glx_common.git;a=blob;f=nvidia_glx_common.spec;h=9cb3c8612ca3fe49cca54876ab243b8cec0a61ca;hb=5177d158e5df98dc3dd4e9ded0f690a7ddfb5ad1#l276). + +- Добавьте в `/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 +``` + +::: warning +При добавлении модулей в `initramfs` не будет работать способ [Замены драйверов Nouveau / NVIDIA «на лету»](https://www.altlinux.org/NVIDIA#%D0%97%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0_%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%BE%D0%B2_nouveau/nvidia_%22%D0%BD%D0%B0_%D0%BB%D0%B5%D1%82%D1%83%22) ::: ### Управление питанием PCI-Express Runtime D3 (RTD3) -Драйвер NVIDIA имеет поддержку динамического управления питанием графического процессора NVIDIA ([PCI-Express Runtime D3 (RTD3) Power Management](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/dynamicpowermanagement.html). +Драйвер NVIDIA имеет поддержку динамического управления питанием графического процессора NVIDIA — [PCI-Express Runtime D3 (RTD3) Power Management](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/dynamicpowermanagement.html). -В это управление входит регулирование тактовой частоты, напряжение на разных участках микросхемы, а также, в некоторых случаях, полное отключение тактовой частоты или питания элементов чипа. +В это управление входит регулирование тактовой частоты и напряжения на разных участках микросхемы, а также, в некоторых случаях, полное отключение тактовой частоты или питания элементов чипа. -И всё это не влияя на функциональность, позволяя работать графическому процессору с меньшей производительностью, но с более низким потреблением энергии. +И всё это не влияя на функциональность позволит работать графическому процессору с меньшей производительностью при меньшем потреблением энергии. Для работы RTD3 необходимо следующее: - Ноутбук -- Процессор из серия чипсетов Coffeelake или новее +- Процессор из серия чипсетов Coffee Lake или новее - Видеокарта архитектуры Turing или новее -- Linux ядро версии 4.18 и новее -- Ядро Linux собрано с CONFIG_PM (CONFIG_PM=y). Как правило, если система поддерживает S3 (suspend-to-RAM), то и CONFIG_PM будет определён как надо +- Ядро Linux версии 4.18 и новее, собранное с `CONFIG_PM` (`CONFIG_PM=y`). Как правило, если система поддерживает `S3` (`suspend-to-RAM`), то и `CONFIG_PM` будет корректно определён ::: info -Для Ampere или более поздних версий видеокарт, **RTD3 включено по умолчанию. Настройка не нужна.** -Для видеокарт Turing настройка должна быть включена вручную: +Для видеокарт Turing и старше нужна дальнейшая настройка + +Для Ampere или более поздних версий видеокарт, **RTD3 включено по умолчанию.** + ::: -Для автоматизации управления надо добавить правила в '/lib/udev/rules.d': +- Для автоматизации управления добавьте правила в `/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" @@ -510,7 +676,7 @@ _EOF_ make-initrd ``` -В /etc/modprobe.d добавляем конфигурационный файл с параметром: +- Добавьте конфигурационный файл с параметром в `/etc/modprobe.d`: ```shell su - @@ -522,16 +688,16 @@ make-initrd ``` ::: info -Более подробное описание работы, а также решение возможных проблем смотрите в [документации NVIDIA](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/dynamicpowermanagement.html). +Более подробное описание работы, а также решение возможных проблем можно посмотреть в [документации NVIDIA](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/dynamicpowermanagement.html). ::: ### PAT -Драйвер NVIDIA позволяет сменить старый атрибут страничной организации памяти [MTRR на PAT](https://wiki.gentoo.org/wiki/MTRR_and_PAT). +[PAT](https://docs.kernel.org/arch/x86/pat.html) — более современная технология, чем [MTRR](https://docs.kernel.org/arch/x86/mtrr.html), является более гибким атрибутом, добавляя новые возможности для организации памяти. -[PAT](https://docs.kernel.org/arch/x86/pat.html) более современная технология и является более гибким атрибутом, добавляя новые возможности для организации памяти. +Драйвер NVIDIA позволяет сменить старый атрибут страничной организации памяти [MTRR на PAT](https://wiki.gentoo.org/wiki/MTRR_and_PAT). -Чтобы её включить, в /etc/modprobe.d добавляем конфигурационный файл с параметром: +Чтобы её включить, добавьте конфигурационный файл с параметром в `/etc/modprobe.d`: ```shell su - @@ -543,22 +709,21 @@ make-initrd ``` ::: warning -Удостоверьтесь, что ваша система поддерживает PAT, а в противном случае, у вас могут быть проблемы с системой. -::: -Проверка поддержки PAT: +Удостоверьтесь, что ваша система поддерживает PAT, иначе у вас могут возникнуть проблемы с системой: ```shell su - cat /proc/cpuinfo | grep pat ``` +::: + ### GSP прошивка -Некоторые видеокарты имеют GSP процессор, который может использоваться для разгрузки задач и управления графическим процессором. По умолчанию, он включён для ограниченного числа видеокарт. -Тем не менее, начиная с архитектуры Turing, этот процессор присутствует во всех видеокартах и его можно принудительно включить(Подробнее см. [GSP firmware](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/gsp.html)) +Некоторые видеокарты имеют [GPU System Processor (GSP)](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/gsp.html), который может использоваться для разгрузки задач и управления графическим процессором. По умолчанию он включён для ограниченного числа видеокарт. -В /etc/modprobe.d добавляем конфигурационный файл с параметром: +Начиная с архитектуры Turing, GSP присутствует во всех видеокартах и его можно принудительно включить: ```shell su - @@ -571,8 +736,15 @@ make-initrd ### Фреймбуфер от NVIDIA -Начиная с драйвера версии 545.29, можно включить фреймбуффер предусмотренный nvidia-drm. Он заменяет стандартные фреймбуферы, такие как efifb или vesafb. -Для работы, необходимо, чтобы работал [KMS](#активация-kernel-mode-setting) +::: danger +Это экспериментальная функция и она работает нестабильно. +::: + +Начиная с драйвера версии 545.29, можно включить фреймбуфер, предусмотренный `nvidia-drm`. Он заменяет стандартные фреймбуферы, такие как `efifb` или `vesafb`. + +::: warning +Для работы необходимо, чтобы работал [KMS](#активация-kernel-mode-setting) +::: ```shell su - @@ -582,47 +754,50 @@ options nvidia_drm fbdev=1 _EOF_ ``` -::: danger -Это экспериментальная функция и работает нестабильно. -::: - ## Решение известных проблем ### «Неизвестный монитор» в настройках дисплеев в сессии Wayland -:::info -Данная проблема может привести к не работе устройств ввода: мышка, тачпад. Особенно часто данные проблемы проявляются в играх. +::: info +Данная проблема может привести к некорректному поведению устройств ввода. Особенно часто данные проблемы проявляются в играх. ::: + На данный момент существует 3 способа устранения фантомного неизвестного монитора: -#### Способ 1. Использование собственного фреймбуфера от NVIDIA: +##### Способ 1. Использование собственного фреймбуфера от NVIDIA: + +Смотрите раздел [Фреймбуфер от NVIDIA](#фреимбуфер-от-nvidia) -Смотрите настройку [фреймбуфера от NVIDIA](#фреимбуфер-от-nvidia) +##### Способ 2. Отключение загрузки simpledrm: -#### Способ 2. Отключение загрузки simpledrm: +::: info +При использовании [epm](/package-manager/epm/) данный способ будет применён автоматически. +::: -Внесем изменение в конфигурацию **GRUB**: +- Внесите изменение в конфигурацию **GRUB**: ```shell su - mcedit /etc/sysconfig/grub2 ``` -Добавляем в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `initcall_blacklist=simpledrm_platform_driver_init` и генерируем grub.cfg. +- Добавьте в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `initcall_blacklist=simpledrm_platform_driver_init` + +- Сгенерируйте `grub.cfg`: ```shell su - grub-mkconfig -o /boot/grub/grub.cfg ``` -:::warning -Данное решение приводит к невозможности входа в tty, к отсутствию вывода логов во время загрузки (Если не включён Plymouth с заставкой, закрывающий эту загрузку), и к чёрному экрану, если система, по какой-то причине не запустилась вовсе. +::: warning -Если у вас после загрузки чёрный экран, либо необходимо проинспектировать запуск, **уберите это значение из параметров ядра на этапе загрузки GRUB**. Также, для решения проблем, Вам, возможно, будет полезно убрать параметр **quiet** для вывода более подробных логов, и **splash** для отключения заставки во время вывода логов. -::: +Данное решение приводит к невозможности входа в `tty`, отсутствию вывода логов во время загрузки (если не включён Plymouth) и чёрному экрану, если система по какой-то причине не запустилась вовсе. + +Если после загрузки возник чёрный экран, необходимо проинспектировать запуск: уберите это значение из параметров ядра на этапе загрузки GRUB. + +Также для решения проблем, может быть полезным удаление параметров `quiet` (для вывода более подробных логов) и `splash` (для отключения заставки во время вывода логов). -:::info -При использовании epm, данный способ будет применен автоматически. ::: #### Способ 3. Отключение монитора через настройки @@ -645,13 +820,11 @@ P.S: В KDE Plasma 6 данную проблему уже решили. ### Не работает KMS -Если при загрузке системы чёрный экран, либо при проверке 'cat /sys/module/nvidia_drm/parameters/modeset' выводит 'N', можно попробовать [включить KMS через командную строку ядра](#активация-kernel-mode-setting) +Если при загрузке KDE plasma возникает чёрный экран или при выполнении `cat /sys/module/nvidia_drm/parameters/modeset` возвращается `N`, можно попробовать [включить KMS через командную строку ядра](#активация-kernel-mode-setting). -### Чёрный экран при выборе сессии X11, либо ошибка в инициализации CUDA +### Чёрный экран при выборе сессии X11 или ошибка в инициализации CUDA -Драйвер NVIDIA для Linux по умолчанию использует Message Signaled Interrupts (MSI). Это обеспечивает лучшую совместимость и масштабируемость, из-за избегания совместного использования IRQ. - -Было замечено, что некоторые системы имели проблемы с поддержкой MSI. +Драйвер NVIDIA для Linux по умолчанию использует Message Signaled Interrupts (MSI), это обеспечивает лучшую совместимость и масштабируемость, из-за избегания совместного использования IRQ. Было замечено, что некоторые системы имели проблемы с поддержкой MSI. Все известные ошибки были исправлены, но если наблюдаете данные проблемы, попробуйте отключить MSI: @@ -666,19 +839,19 @@ make-initrd ### Если при установке или первом запуске чёрный экран, артефакты или другие проблемы -Если при первом же включении или установке появляются проблемы с отображением картинки, можно попробовать сменить режим вывода графики, чтобы в последующем иметь возможность взаимодействовать с системой и выяснить причины проблем с видеодрайверами. +Если при первом включении или установке появляются проблемы с отображением картинки, можно попробовать сменить режим вывода графики, чтобы в дальнейшем иметь возможность взаимодействовать с системой и выяснить причины проблем с видеодрайверами. -Для этого необходимо на этапе выбора вариантов загрузки в [GRUB](https://en.wikipedia.org/wiki/GNU_GRUB) нажать кнопку <<**e**>> и дописать одни из следующих параметров: +Для этого необходимо на этапе выбора вариантов загрузки в [GRUB](https://en.wikipedia.org/wiki/GNU_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 и т.д. +- `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, но особая, ядерная версия. Работает часто это ещё медленнее, но практически всегда. И современная тенденция такова, что пытаются увеличить возможности и быстродействие ядерного модуля. + - `vesa` — минимальный драйвер. Работает так же, как и любой другой, но ожидает не конкретной видеокарты, а пытается следовать стандартам VESA (многие видеокарты его поддерживают). Этот драйвер умеет только выводить изображение, без «излишеств». Работает довольно медленно. + - `fbdev` — ещё более простой драйвер. Передаёт команду связаться с ядром и пытается рисовать картинку через него. Под ним может быть несколько разных драйверов со стороны ядра, но чаще всего это ядерная версия `vesa`. Это работает ещё медленнее, но практически всегда работает. ::: info Всё описание взято отсюда: [ALT Linux Wiki: Первая помощь - Проблемы с драйвером видеокарты](https://www.altlinux.org/Первая_помощь#Проблемы_с_драйвером_видеокарты) @@ -686,36 +859,46 @@ make-initrd ### Прочие решения известных проблем -Также, другие проблемы и возможные их решения, вы можете найти в [главе 8 документации NVIDIA](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/commonproblems.html) +Также другие проблемы и возможные их решения, можно найти в [главе 8 документации NVIDIA](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/commonproblems.html) -## Известные нерешённые проблемы +### Прочие известные нерешённые проблемы В [главе 9 документации NVIDIA](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/knownissues.html) можно ознакомиться с известными нерешёнными проблемами у драйвера NVIDIA -### Проблемы c Wayland протоколом +### Проблемы c протоколом Wayland -У NVIDIA c wayland существуют нерешённые проблемы. Вы можете ознакомится с ними в [приложении L документации NVIDIA](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/wayland-issues.html) +У NVIDIA c Wayland существуют нерешённые проблемы. Вы можете ознакомиться с ними в [приложении L документации NVIDIA](https://download.nvidia.com/XFree86/Linux-x86_64/550.40.07/README/wayland-issues.html) ## Способы управления частотами/лимитами видеокарты -### [nvidia-smi](#nvidia-smi) +::: danger +Все цифры указаны для примера, все решения и риски лежат на вас. +::: + +### [nvidia-smi](#nvidia-system-management-interface) -С его помощью можно установить порог TDP +Установить порога TDP: ```shell su - nvidia-smi -pl 160.30 ``` -Установить пороги часто GPU: +Вывести в терминале поддерживаемые частоты: ```shell su - nvidia-smi -q -d SUPPORTED_CLOCKS +``` + +Установить пороги частоты GPU: + +```shell +su - nvidia-smi --lock-gpu-clocks=0,1695 --mode=1 ``` -Установить пороги часто GPU: +Установить пороги частоты видеопамяти: ```shell su - @@ -725,57 +908,161 @@ nvidia-smi --lock-memory-clocks=0,5001 Для детальной настройки смотрите его [man-страницу](https://manpages.ubuntu.com/manpages/xenial/man1/alt-nvidia-340-smi.1.html) ::: tip -Описание одного из примеров применения управления лимитами через nvidia-smi можно посмотреть тут: -https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks#Lowering_GPU_Boost_Clocks +Описание примеров применения управления лимитами через nvidia-smi можно посмотреть [тут](https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks#Lowering_GPU_Boost_Clocks) и [тут](https://justin.palpant.us/monitor-and-maximize-nvidia-gpu-performance-on-linux/) +::: -Ещё одно описание применения: -https://justin.palpant.us/monitor-and-maximize-nvidia-gpu-performance-on-linux/ +::: warning +Изменение параметров не сохраняется при перезагрузке. Для сохранения параметров используйте `bashrc`, `udev` ([пример](https://nathanlabadie.com/proxmox-nvidia-and)) или `systemd` ([пример](https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks#Custom_TDP_Limit)). ::: -### [Coolbits](https://en.wikipedia.org/wiki/Coolbits) (Только для X11) +### [Coolbits](https://en.wikipedia.org/wiki/Coolbits) (только для X11) -Для сессии x11 (через [X Config Options](https://us.download.nvidia.com/XFree86/Linux-x86_64/364.19/README/xconfigoptions.html)) существует возможность активировать не поддерживаемые NVIDIA функции через [NV-CONTROL X](https://www.nvidia.com/en-us/drivers/IO-10753/) расширение. Активация функций происходит через указание битовой макси: +Для сессии X11 (через [X Config Options](https://us.download.nvidia.com/XFree86/Linux-x86_64/364.19/README/xconfigoptions.html)) существует возможность активировать не поддерживаемые функции NVIDIA через расширение [NV-CONTROL X](https://www.nvidia.com/en-us/drivers/IO-10753/). Активация функций происходит через указание битовой макси: ::: danger -Для работы необходима сессия под X11 и отключённый режим `nvidia_drm_modeset=0`, поэтому, на сегодняшний день эта возможность является устаревшей. +Для работы необходима сессия под X11 и отключённый режим `nvidia_drm_modeset=0`, поэтому данная возможность является устаревшей. -Также, для разных версий драйвера в документации заявлено разное кол-во функций. в документации для 364.19 их описано 6, а в 550.54.14 их уже 2. +Также для разных версий драйвера в документации заявлено разное количество функций. К примеру, в документации для версии 364.19 их описано 6, а в версии 550.54.14 их уже 2. ::: -Установить битовую маску можно либо в конфигурационном файле xorg.conf в разделе Device, либо через такие программы, как [nvidia-xconfig](#nvidia-xconfig) и [EnvyControl](#envycontrol) +| Бит | Описание | +| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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), все неподдерживаемые функции будут отключены. | -Пример работы с nvidia-xconfig: +Установить битовую маску можно либо вручную в конфигурационном файле `xorg.conf` в разделе `Device`, либо через такие программы, как [nvidia-xconfig](#nvidia-xconfig) и [EnvyControl](#envycontrol) + +::: details Пример работы с nvidia-xconfig: ```shell nvidia-xconfig --cool-bits=2 ``` -| Бит | Описание | -| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | Если установлено значение "1" (бит 1), позволяет разгонять старые (до Fermi) ядра на странице "Тактовые частоты" в разделе "Настройки nvidia". | -| 2 | Если установлено значение "2" (бит 1), драйвер NVIDIA попытается инициализировать SLI при использовании графических процессоров с разным объемом видеопамяти. | -| 4 | Если установлено значение "4" (бит 2), на странице nvidia-настройки термомонитора будет доступна настройка скорости вращения вентилятора графического процессора на графических платах с программируемыми возможностями вентилятора. | -| 8 | Если установлено значение "8" (бит 3), на странице PowerMizer в панели управления nvidia-настройки отобразится таблица, которая позволяет устанавливать смещения для каждого тактового домена и уровня производительности для применения к тактовым значениям. Это разрешено на некоторых графических процессорах GeForce. Не все тактовые диапазоны или уровни производительности могут быть изменены.(для Fermi и выше) | -| 16 | Если установлено значение "16" (бит 4), интерфейс командной строки nvidia-settings позволяет настроить перенапряжение графического процессора. Это разрешено на некоторых графических процессорах GeForce.(для Fermi и выше) | -| 0 | Если установлено значение "0" (бит 0), все неподдерживаемые функции отключены. | +::: + +::: details Пример ручной записи в `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 -При перезагрузке все изменения в nvidia-settings сбрасываются. Для сохранения разгона необходимо Использование таких утилит, как [nvclock](https://packages.altlinux.org/ru/sisyphus/srpms/nvclock/) или [gwe](https://packages.altlinux.org/ru/sisyphus/srpms/gwe/) +PowerMizer — технология, созданная NVIDIA и предназначенная для экономии энергии. -Либо же установить автозапуск команд через CLI [nvidia-settings](#nvidia-settings), например через `~/.bashrc`. -Пример: +::: warning +Начиная с драйвера версии 530.xx, данная технология была отключена и [рекомендуется](https://forums.developer.nvidia.com/t/kernel-module-option-nvreg-registrydwords-for-powermizerenable-doesnt-work-on-530-41-03/247610) использовать [nvidia-smi](#nvidia-system-management-interface). На старых драйверах данная технология работает в штатном режиме. +::: + +::: info +Поскольку мир сталкивается с постоянно растущей потребностью в своих ресурсах, любая возможность устранить растрату энергии может помочь. Технология NVIDIA® PowerMizer® — это интеллектуальное решение для управления питанием, доступное на всех графических процессорах (GPU) NVIDIA, которое может эффективно продлить срок службы батареи и сократить потери энергии — и всё это при обеспечении производительности по требованию даже при подключении к сети. +::: + +PowerMizer разрешает изменить политику работы энергосбережения видеокарты. + +Изменение политики складывается из [включения/выключения технологии](#_1-включение-powermizer), [стратегии](#_2-стратегии) и [режима производительности](#_3-режимы-производительности) для каждого типа работы питания (от сети и от батареи). + +##### 1. Включение PowerMizer + +Включение/выключение технологии происходит через указание в параметре `PowerMizerEnable` значений `0x0` (выключен) и `0x1` (включён): + +``` +PowerMizerEnable=0x1 +``` + +##### 2. Стратегии + +Они позволяют выбирать логику подбора частот. + +Существуют следующие стратегии: + +| Стратегия | Описание | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `22` | Стратегия с фиксированной тактовой частотой — карта работает с фиксированной частотой вне зависимости от использования графического процессора | +| `33` | Адаптивная стратегия тактовой частоты — карта работает на максимальном уровне энергосбережения, пока приложения не начинают интенсивно использовать ресурсы карты. Проверяет необходимость смены режима производительности каждые 15 секунд | + +Указываются они для каждого типа работы питания следующим образом: ```shell -cat << _EOF_ >> ~/.bashrc -# GPU Graphics Clock Offset -nvidia-settings -a "GPUGraphicsClockOffset[performance_level]=offset" -# GPU Memory Offset -nvidia-settings -a "GPUMemoryTransferRateOffset[performance_level]=offset" +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 способа записи настроек + +::: info +В примере использован вариант, когда для работы от сети и от батареи выбран режим с фиксированной частотой (`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 ``` -## Данные об оборудовании и ПО пользователей за 2024 год. +##### Способ 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_ +``` + +::: tip +Для вступления настроек в силу необходима перезагрузка. +::: -Ознакомиться с таблицей вы можете перейдя [по ссылке](https://cloud.alt-gnome.ru/index.php/s/JSCj9gxB7j5boPg) +[Данные об оборудовании и ПО](https://cloud.alt-gnome.ru/index.php/s/JSCj9gxB7j5boPg) пользователей за 2024 год. ### Источники: diff --git a/docs/graphics/nvidia/nvidia-nouveau/index.md b/docs/graphics/nvidia/nvidia-nouveau/index.md index ad39e0b..3f86c36 100644 --- a/docs/graphics/nvidia/nvidia-nouveau/index.md +++ b/docs/graphics/nvidia/nvidia-nouveau/index.md @@ -2,71 +2,298 @@ ## Смена проприетарного драйвера от NVIDIA на Nouveau -Для установки открытого драйвера NOUVEAU, необходимо следующее: +- Перейдите в режим root: + +```shell +su - +``` + +- Удалите `nvidia_glx_common`: ::: code-group ```shell[apt-get] -su - apt-get remove nvidia_glx_common -# удаляем initcall_blacklist и nvidia-drm.modeset если они есть -mcedit /etc/sysconfig/grub2 # тут может быть и nano, и vi, и другой редактор -# сохраняем и выходим +``` + +```shell[epm] +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 -# Удаляем правила запрещающие Nouveau, если они есть +``` + +- Удалите правила, запрещающие Nouveau, если они есть: + +```shell rm /etc/modprobe.d/blacklist-nvidia-x11.conf -# Удаляем изменение размещения видеопамяти, если оно есть +``` + +- Удалите изменение размещения видеопамяти, если оно есть: + +```shell rm /etc/modprobe.d/nvidia_videomemory_allocation.conf -# ставим драйвер (в нашем случае для ядра un-def) +``` + +- Установите драйвер (пример для ядра `un-def`): + +::: code-group + +```shell[apt-get] apt-get install kernel-modules-drm-nouveau-un-def -# (опционально) переустановить xorg обвязку +``` + +```shell[epm] +epm -i kernel-modules-drm-nouveau-un-def +``` + +::: + +- Опционально можно переустановить обвязку Xorg: + +::: code-group + +```shell[apt-get] apt-get install --reinstall xorg-dri-nouveau xorg-drv-nouveau -# перезагрузиться -reboot ``` ```shell[epm] -su - -epm -e nvidia_glx_common -# удаляем initcall_blacklist и nvidia-drm.modeset если они есть -mcedit /etc/sysconfig/grub2 # тут может быть и nano, и vi, и другой редактор -# сохраняем и выходим -grub-mkconfig -o /boot/grub/grub.cfg -# Удаляем правила запрещающие Nouveau, если они есть -rm /etc/modprobe.d/blacklist-nvidia-x11.conf -# Удаляем изменение размещения видеопамяти, если оно есть -rm /etc/modprobe.d/nvidia_videomemory_allocation.conf -# (опционально) переустановить xorg обвязку epm reinstall xorg-dri-nouveau xorg-drv-nouveau -# перезагрузиться -reboot ``` ::: -Как только все загрузилось и мы убедились, что NOUVEAU заработало: +- Перезагрузите систему + +```shell +su - +reboot +``` + +Как только система загрузилась можно убедиться в том, что Nouveau заработало (в выводе сборки `initrd` должен присутствовать Nouveau): ```shell su - make-initrd -# подождать пока соберется initrd -# посмотреть что в выводе сборки initrd присутствует Nouveau reboot ``` -## Управление питанием на Nouveau +::: danger +Для видеокарт Kepler и Maxwell потребуется обязательное [внедрение прошивки NVIDIA](#внедрение-прошивки-nvidia). +::: + +## Управление питанием (Turing и новее) -Nouveau, драйвер с открытым исходным кодом для графических процессоров Nvidia, развивается посредством реверс-инжиниринга. В области управления питанием были как прогрессы, так и регрессы (см. страницу [PowerManagement](https://nouveau.freedesktop.org/PowerManagement.html)). +Nouveau — драйвер с открытым исходным кодом для графических процессоров NVIDIA, развивается посредством реверс-инжиниринга. До архитектуры Turing, в управлении питанием возникали проблемы, о чём можно посмотреть на странице [Power Management](https://nouveau.freedesktop.org/PowerManagement.html). -Однако, начиная с архитектуры Turing, видеокарты получили полную поддержку управления питанием благодаря GSP прошивкам от Nvidia. Видеокарты на базе архитектур **Ampere** и **Ada Lovelace** имеют эту поддержку **по умолчанию**. Для видеокарт на базе архитектуры **Turing необходимо указать специальный параметр в ядре**. +Начиная с архитектуры Turing, видеокарты получили полную поддержку управления питанием благодаря GSP-прошивкам от NVIDIA. Видеокарты на базе архитектур Ampere и Ada Lovelace имеют эту поддержку по умолчанию. Для видеокарт на базе архитектуры Turing **необходимо указать специальный параметр ядра**. -Для того, чтобы на видеокартах **Turing** заработало управление питанием, необходимо прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `nouveau.config=NvGspRm=1` и cгенерировать новых grub.cfg: +Для того, чтобы на видеокартах Turing заработало управление питанием, необходимо прописать в параметр `GRUB_CMDLINE_LINUX_DEFAULT` значение `nouveau.config=NvGspRm=1` и сгенерировать новый `grub.cfg`: ```shell su - mcedit /etc/sysconfig/grub2 grub-mkconfig -o /boot/grub/grub.cfg ``` +## Внедрение прошивки NVIDIA + +Большинство видеочипов NVIDIA имеют встроенный аппаратный декодер, и некоторые видеочипы для его работы отдельно требуют извлечённую из драйвера прошивку NVIDIA. Прошивка NVIDIA требуется для видеокарт с аппаратным декодером: VP1, VP2, VP3, VP4.0, VP4.2, VP5 или VP6+. Список видеокарт с данными декодерами можно посмотреть на странице [Video Acceleration](https://nouveau.freedesktop.org/VideoAcceleration.html) в блоке `Which card has what engine` + +::: info +Хоть вышеупомянутые аппаратные декодеры и требуют прошивку NVIDIA, не во всех реализована её поддержка. Статус поддержки для конкретного декодера смотрите на сайте [Video Acceleration](https://nouveau.freedesktop.org/VideoAcceleration.html) в блоке `Video engine support status` +::: + +::: danger +Видеочипы Kepler и Maxwell для их нормальной загрузки обязательно требуют внедрение прошивки. Если при первой установке или запуске системы на устройствах с видеочипом одной из этих архитектур наблюдаются проблемы, можно временно перейти на [другой видеорежим](/graphics/nvidia/nvidia-drivers/#черныи-экран-при-выборе-сессии-x11-или-ошибка-в-инициализации-cuda) +::: + +- Распакуйте прошивку: + +```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/ +``` + +### Reclocking (от Celsius до Fermi) + +Видеочипы до архитектуры Turing не имеют поддержку управления питания на Nouveau, из-за чего остаются в режиме пониженного энергопотребления и пониженными частотами. Но на некоторых архитектурах есть возможность менять частоты GPU и видеопамяти через уже заготовленные пресеты состояния питания. Видеочипы от Celsius до Tesla имеют возможность изменять частоты видеопамяти, а видеокарты от Rankine до Fermi имеют возможность изменять частоты GPU. Все, кто входят и в 1-ый и 2-ой диапазоны имеют управление частот и GPU, и видеопамяти, что будет отображено в описании пресетов. + +- Проверьте доступные состояния питания: + +```shell +su - +cat /sys/kernel/debug/dri/0/pstate +``` + +::: details Ожидаемый вид вывода + +```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`: + +```shell +su - +mcedit /etc/sysconfig/grub2 +grub-mkconfig -o /boot/grub/grub.cfg +``` + +::: danger +Хоть эта поддержка и существует давно, она имеет статус `MOSTLY` (всё основное сделано, но имеется ряд нерешённых проблем) и, скорее всего, останется таким навсегда. + +Некоторые состояния могут перегреть устройство и навредить. Делая это, пожалуйста, следите за состоянием видеочипа. +::: + +### Управление скоростью вентиляторов (от Rankine до Maxwell) + +Видеочипы от Rankine до Maxwell имеют поддержку управления вентиляторами. + +Чтобы узнать точно, есть ли поддержка, нужно проверить, есть ли файлы управления: + +```shell +ls /sys/class/drm/card0/device | grep pwm1 +``` + +::: details Ожидаемый вид вывода + +```shell +pwm1 +pwm1_enable +pwm1_max +pwm1_min +``` + +::: + +| Файл управления | Описание | +| --------------- | ------------------------------------------------------------------------------------------- | +| `pwm1` | Управление постоянной скоростью. | +| `pwm1_enable` | Включение режимов управления скоростью: `0` (выключить), `1` (вручную), `2` (автоматически) | +| `pwm1_max` | Установка максимальной скорости. | +| `pwm1_min` | Установка минимальной скорости. | + +Путём добавления процентных значений скоростей в эти файлы (кроме `pwm1_enable`, где выбираются режимы), ими можно управлять + +::: details Пример + +- Включение ручного управление (если будет `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_ +``` + +::: danger +При неправильном использовании есть шанс перегреть видеокарту. Соблюдайте осторожность +::: + +### Список параметров 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.NvBoost` | Указать режим `Boost` для Fermi и новее. (`0` — базовые тактовые частоты (по умолчанию), `1` — тактовые частоты в режиме `Boost`, `2` — максимальные тактовые частоты) | +| `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` | Отключить обнаружение ТВ-выхода | ### Источники: @@ -75,3 +302,5 @@ https://nouveau.freedesktop.org/ https://wiki.archlinux.org/title/Nouveau https://wiki.gentoo.org/wiki/Nouveau + +https://web.archive.org/web/20141031191559/https://kalgan.cc/blog/posts/Controlling_nVidia_cards_fans_with_nouveau_in_Debian/ \ No newline at end of file