NVIDIA (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи NVIDIA. Дата последней синхронизации: 8 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Данная статья описывает процесс установки и настройки проприетарного драйвера графических карт NVIDIA. Для получения информации о драйверах с открытым исходным кодом обратитесь к статье Nouveau (Русский). Также есть отдельная статья для обладателей ноутбуков с гибридной графикой Intel и NVIDIA, см. NVIDIA Optimus (Русский).

Установка

Важно: Избегайте установки драйвера с сайта NVIDIA. Установка через pacman позволяет обновлять драйвер вместе с остальными компонентами системы.

Данные инструкции предназначены для предоставляемых в дистрибутиве пакетов ядра linux и linux-lts. Пользователи других пакетов ядра могут сразу перейти к следующему подразделу.

1. Если вы не знаете модель установленной графической карты, воспользуйтесь следующей командой:

$ lspci -k | grep -A 2 -E "(VGA|3D)"

2. Определите версию драйвера, необходимую для вашей видеокарты:

3. Установите подходящий драйвер для своей карты:

  • Если эти пакеты не работают, в nvidia-betaAUR может быть более новый драйвер с поддержкой вашего оборудования.

4. Для поддержки 32-разрядных приложений также необходимо установить соответствующий пакет nvidia lib32 из репозитория multilib (например, lib32-nvidia-utils или lib32-nvidia-390xx-utilsAUR).

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

После установки драйвера можно перейти к разделу #Настройка Xorg или #Wayland.

Неподдерживаемые драйвера

Если у вас установлена видеокарта серии GeForce 300 или старее (выпущенная в 2010 или раньше), Nvidia больше не поддерживает драйвера для данной карты. Это означает, что указанные драйвера не поддерживают текущую версию Xorg. В таком случае проще использовать драйвер Nouveau, который поддерживает старые видеокарты с текущей версией Xorg.

Однако устаревшие драйверы Nvidia ещё доступны и могут предоставлять лучшую стабильность или 3D-производительность, если вы готовы откатить версию Xorg:

  • Для карт серий GeForce 8/9, ION и 100-300 [NV5x, NV8x, NV9x and NVAx], установите пакет nvidia-340xx-dkmsAUR. Последняя поддерживаемая версия Xorg 1.20.
  • Карты GeForce 7 series и более старые [NV6x, NV4x и ниже] не имеют пакетов для Arch Linux.

Собственное ядро

Если вы используете собственное ядро, то сборка модулей Nvidia может быть автоматизированна при помощи DKMS. Установите пакет nvidia-dkms (или специфичную ветку, например, nvidia-340xx-dkmsAUR).

Убедитесь, что ядро собрано с опцией CONFIG_DRM_SIMPLEDRM=y, а при использовании CONFIG_DEBUG_INFO_BTF в PKGBUILD должно быть это (начиная с ядра 5.16):

install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids

Модуль будет пересобираться после каждого обновления драйвера или ядра благодаря DKMS Pacman Hook.

DRM kernel mode setting

Для включения DRM (Direct Rendering Manager) kernel mode setting добавьте параметр ядра nvidia-drm.modeset=1.

Примечание:
  • Драйвер Nvidia не предоставляет драйвер fbdev для высокого разрешения в консоли для скомпилированного модуля ядра vesafb. Тем не менее, скомпилированный в ядро модуль efifb поддерживает высокое разрешение в консоли на EFI системах. Этот метод требует GRUB или rEFInd и описан в разделе NVIDIA (Русский)/Tips and tricks (Русский)#Исправление разрешения терминала.[2][3][4].
  • Драйвера Nvidia до версии 470 (например nvidia-390xx-dkmsAUR) не поддерживают аппаратное ускорение в XWayland, так что у приложений, не являющихся родными для Wayland, может быть плохая производительность в Wayland-сеансах.

Ранняя загрузка

Для базовой функциональности достаточно добавить параметр ядра. Если вы хотите, чтобы он загружался как можно раньше, или замечаете проблемы с запуском (например, модуль ядра nvidia загружается после экранного менеджера), вы можете добавить nvidia, nvidia_modeset, nvidia_uvm и nvidia_drm в initramfs.

mkinitcpio

Если вы используете mkinitcpio, добавьте модули как описано в разделе mkinitcpio (Русский)#MODULES.

После добавления не забывайте запускать mkinitcpio каждый раз после обновления пакета nvidia. Можно использовать #pacman hook для автоматизации этого действия.

Booster

Если вы используете Booster, смотрите Booster#Early module loading.

pacman hook

Для того, чтобы не забывать обновлять initramfs после обновления nvidia, вы можете использовать pacman hook следующим образом:

/etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
Target=linux
# Измените "linux" в строках Target и Exec, если вы используете другое ядро

[Action]
Description=Update Nvidia module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'

Пропишите в Target тот пакет, который вы установили в шагах выше (то есть nvidia, nvidia-dkms, nvidia-lts или nvidia-ck-что-нибудь).

Примечание: Усложнение в строке Exec сделано для того, чтобы избежать многократного запуска mkinitcpio в случае одновременного обновления пакетов nvidia и linux. Если вас это не беспокоит, строки Target=linux и NeedsTargets можно убрать, а строку Exec сократить до простого Exec=/usr/bin/mkinitcpio -P.

Аппаратное декодирование видео

Аппаратное декодирование видео с помощью VDPAU поддерживается на картах серии GeForce 8 и новее. Аппаратное декодирование видео с помощью NVDEC поддерживается на картах Fermi (~400 серии) и новее. Подробности смотрите в статье Аппаратное ускорение видео.

Аппаратное кодирование видео с помощью NVENC

Для NVENC нужен модуль nvidia_uvm и файлы устройств в /dev.

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

Если у вас старый драйвер (например, nvidia-340xx-dkmsAUR), вам нужно создать файлы устройств самостоятельно. Вызов утилиты nvidia-modprobe создаст их. Вы можете создать /etc/udev/rules.d/70-nvidia.rules для автоматического её запуска:

/etc/udev/rules.d/70-nvidia.rules
ACTION=="add", DEVPATH=="/bus/pci/drivers/nvidia", RUN+="/usr/bin/nvidia-modprobe -c0 -u"

Настройка Xorg

Проприетарный драйвер видеокарты NVIDIA не нуждается в файле конфигурации сервера Xorg. Вы можете запустить X для проверки корректной работы сервера Xorg без файла конфигурации. Однако может потребоваться создать файл (предпочтительнее /etc/X11/xorg.conf.d/20-nvidia.conf, чем /etc/X11/xorg.conf) для тонкой настройки некоторых параметров. Эта конфигурация может быть сгенерирована инструментом конфигурации NVIDIA Xorg или создана вручную. Если она создаётся вручную, она может быть минимальной (в том смысле, что она будет содержать только базовые настройки сервера Xorg), или она может включать в себя ряд настроек, которые могут обходить автоматически найденные или предварительно заданные настройки.

Совет: Больше информации о настройках можно прочитать в статье NVIDIA/Решение проблем.

Автоматическая настройка

Пакет NVIDIA, включает в себя автоматический инструмент для создания файла конфигурации сервера Xorg (xorg.conf) и может быть запущен путем выполнения:

# nvidia-xconfig

Данная команда автоматически обнаруживает и создаёт (или изменяет существующую) конфигурацию /etc/X11/xorg.conf в соответствии с текущим аппаратным обеспечением.

Если есть строка с указанием загрузки DRI, убедитесь, что она закомментирована:

#    Load        "dri"

Проверьте ещё раз /etc/X11/xorg.conf, убедитесь, что глубина по умолчанию, горизонтальная синхронизация, частота кадров и разрешение допустимы.

nvidia-settings

Пакет nvidia-settings позволяет редактировать большинство опций через консоль или графическую оболочку. Запуск nvidia-settings без параметров запустит графический интерфейс; опции командной строки можно узнать в nvidia-settings(1).

Также, вы можете запустить настройки от обычного пользователя и сохранить в ~/.nvidia-settings-rc или сохранить их в xorg.conf с помощью Save to X configuration File.

Чтобы загрузить настройки из ~/.nvidia-settings-rc для текущего пользователя:

$ nvidia-settings --load-config-only

Можно добавить эту команду в автозапуск.

Примечание: X-сервер может перестать запускаться после сохранения изменений в nvidia-settings. Изменение или удаление сгенерированных файлов ~/.nvidia-settings-rc и/или Xorg поможет восстановить работоспособность.
Примечание: Cinnamon может переопределять настройки, сделанные в nvidia-settings. Вы можете настроить запуск Cinnamon, чтобы предотвратить это.

Ручная настройка

Некоторые настройки (которые не могут быть включены автоматически или с помощью nvidia-settings) можно изменить через файл конфигурации. Для применения изменений нужно будет перезапустить сервер Xorg.

Подробности и доступные опции описаны в NVIDIA Accelerated Linux Graphics Driver README and Installation Guide.

Минимальная настройка

Минимальный блок настроек 20-nvidia.conf может выглядеть так:

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
        Identifier "Nvidia Card"
        Driver "nvidia"
        VendorName "NVIDIA Corporation"
        BoardName "GeForce GTX 1050 Ti"
EndSection

Отключение лого при запуске

Добавьте "NoLogo" в секцию Device:

Option "NoLogo" "1"

Переопределение обнаружения монитора

Опция "ConnectedMonitor" в секции Device позволяет переопределить обнаружение монитора при запуске X-сервера, что может сэкономить значительное количество времени при запуске. Доступными опциями являются: "CRT" для аналоговых подключений, "DFP" для цифровых мониторов и "TV" для телевизоров.

Следующая опция заставит драйвер NVIDIA обойти проверки при запуске и распознать монитор как DFP:

Option "ConnectedMonitor" "DFP"
Примечание: Используйте "CRT" для всех аналоговых 15-контактных VGA-подключений, даже если дисплей является плоской панелью. "DFP" предназначен только для цифровых соединений DVI, HDMI или DisplayPort.

Включение SLI

Важно: Начиная с серии GTX 10xx (1080, 1070, 1060 и т.д.) поддерживается только 2-way SLI. 3-way и 4-way SLI могут работать для приложений CUDA/OpenCL, но скорее всего сломают все приложения OpenGL.

Взято из NVIDIA driver's README Appendix B: This option controls the configuration of SLI rendering in supported configurations. "Supported configuration" — это компьютер с материнской платой, имеющей сертификацию SLI и 2 или 3 GPU GeForce с сертификацией SLI.

Найдите идентификатор PCI-шины первого GPU с помощью lspci:

# lspci | grep "VGA|3D controller"
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)
03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
04:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)

Добавьте BusID (в данном примере 3) в секцию Device:

BusID "PCI:3:0:0"
Примечание: Формат значения BusID должен быть таким: "PCI:<BusID>:0:0"

Добавьте нужное значение режима рендеринга SLI в секции Screen:

Option "SLI" "AA"

Таблица доступных режимов рендеринга:

Значение Поведение
0, no, off, false, Single Использовать только один GPU при рендеринге.
1, yes, on, true, Auto Включить SLI и позволить драйверу автоматически выбрать подходящий режим рендеринга.
AFR Включить SLI и использовать режим рендеринга чередующихся кадров (alternate frame rendering mode).
SFR Включить SLI и использовать режим рендеринга с разделением кадров (split frame rendering mode).
AA Включить SLI и использовать сглаживание SLI. Используйте это в сочетании с полным сглаживанием сцены для улучшения качества изображения.

Также можно использовать nvidia-xconfig для внесения этих изменений в xorg.conf одной командой:

# nvidia-xconfig --busid=PCI:3:0:0 --sli=AA

Проверка режима SLI:

$ nvidia-settings -q all | grep SLIMode
  Attribute 'SLIMode' (arch:0.0): AA 
    'SLIMode' is a string attribute.
    'SLIMode' is a read-only attribute.
    'SLIMode' can use the following target types: X Screen.
Важно: После включения SLI система может зависнуть/не реагировать при запуске xorg. Рекомендуется отключить экранный менеджер перед перезагрузкой.

Если эта конфигурация не работает, может понадобиться использовать PCI Bus ID, который выдаст nvidia-settings,

$ nvidia-settings -q all | grep -i pcibus
Attribute 'PCIBus' (host:0[gpu:0]): 101.
  'PCIBus' is an integer attribute.
  'PCIBus' is a read-only attribute.
  'PCIBus' can use the following target types: GPU, SDI Input Device.
Attribute 'PCIBus' (host:0[gpu:1]): 23.
  'PCIBus' is an integer attribute.
  'PCIBus' is a read-only attribute.
  'PCIBus' can use the following target types: GPU, SDI Input Device.

и закомментировать опцию Primary GPU в настройках xorg,

/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
...

Section "OutputClass"
...
    # Option "PrimaryGPU" "yes"
...

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

Несколько мониторов

Смотрите Multihead для получения основной информации.

Использование nvidia-settings

Можно использовать nvidia-settings для настройки нескольких мониторов.

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

$ nvidia-settings -q CurrentMetaMode
Attribute 'CurrentMetaMode' (hostnmae:0.0): id=50, switchable=no, source=nv-control :: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}

Сохраните всё после символов :: и до конца атрибута (в данном примере DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}) и используйте для перенастройки мониторов с помощью nvidia-settings --assign "CurrentMetaMode=your_meta_mode".

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

ConnectedMonitor

Если драйвер не определил второй монитор, вы можете принудительно указать его с помощью опции ConnectedMonitor

/etc/X11/xorg.conf

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Panasonic"
    ModelName      "Panasonic MICRON 2100Ex"
    HorizSync       30.0 - 121.0 # this monitor has incorrect EDID, hence Option "UseEDIDFreqs" "false"
    VertRefresh     50.0 - 160.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Gateway"
    ModelName      "GatewayVX1120"
    HorizSync       30.0 - 121.0
    VertRefresh     50.0 - 160.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    Option         "NoLogo"
    Option         "UseEDIDFreqs" "false"
    Option         "ConnectedMonitor" "CRT,CRT"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:3:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    Option         "NoLogo"
    Option         "UseEDIDFreqs" "false"
    Option         "ConnectedMonitor" "CRT,CRT"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:3:0:0"
    Screen          1
EndSection

Дублирование устройств с опцией Screen описывает использование сервером Xorg двух мониторов на одной карте без технологии TwinView. Учтите, что nvidia-settings будет вырезать любое упоминание опции ConnectedMonitor.

TwinView

Вы хотите только один большой экран вместо двух. Установите значение опции TwinView в 1. Эта опция должна использоваться если вы хотите композитинга. Технология TwinView работает только на базе одной карты, когда все мониторы подключены к одной карте.

Option "TwinView" "1"

Пример конфигурации:

/etc/X11/xorg.conf.d/10-monitor.conf
Section "ServerLayout"
    Identifier     "TwinLayout"
    Screen         0 "metaScreen" 0 0
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option         "Enable" "true"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option         "Enable" "true"
EndSection

Section "Device"
    Identifier     "Card0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"

    #refer to the link below for more information on each of the following options.
    Option         "HorizSync"          "DFP-0: 28-33; DFP-1: 28-33"
    Option         "VertRefresh"        "DFP-0: 43-73; DFP-1: 43-73"
    Option         "MetaModes"          "1920x1080, 1920x1080"
    Option         "ConnectedMonitor"   "DFP-0, DFP-1"
    Option         "MetaModeOrientation" "DFP-1 LeftOf DFP-0"
EndSection

Section "Screen"
    Identifier     "metaScreen"
    Device         "Card0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "True"
    SubSection "Display"
        Modes          "1920x1080"
    EndSubSection
EndSection

Дополнительная информация о технологии TwinView (англ.).

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

/etc/X11/xorg.conf.d/10-monitor.conf
Section "Device"
        Identifier      "Card A"
        Driver          "nvidia"
        BusID           "PCI:1:00:0"
EndSection

Section "Device"
        Identifier      "Card B"
        Driver          "nvidia"
        BusID           "PCI:2:00:0"
EndSection

Section "Monitor"
        Identifier      "Right Monitor"
EndSection

Section "Monitor"
        Identifier      "Left Monitor"
EndSection

Section "Screen"
        Identifier      "Right Screen"
        Device          "Card A"
        Monitor         "Right Monitor"
        DefaultDepth    24
        Option          "SLI" "Mosaic"
        Option          "Stereo" "0"
        Option          "BaseMosaic" "True"
        Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
        SubSection      "Display"
                        Depth           24
        EndSubSection
EndSection

Section "Screen"
        Identifier      "Left Screen"
        Device          "Card B"
        Monitor         "Left Monitor"
        DefaultDepth    24
        Option          "SLI" "Mosaic"
        Option          "Stereo" "0"
        Option          "BaseMosaic" "True"
        Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
        SubSection      "Display"
                        Depth           24
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default"
        Screen 0        "Right Screen" 0 0
        Option          "Xinerama" "0"
EndSection
Vsync при использовании TwinView

Если вы используете TwinView и вертикальную синхронизацию (опция "Sync to VBlank" в nvidia-settings), вы заметите, что только один экран корректно использует синхронизацию, если у вас нет двух одинаковых мониторов. Несмотря на то, что nvidia-settings имеет необходимую опцию для выбора, какой именно экран синхронизировать (опция "Sync to this display device"), это не всегда работает. Решением будет добавить следующие переменные окружения при запуске, например в /etc/profile:

export __GL_SYNC_TO_VBLANK=1
export __GL_SYNC_DISPLAY_DEVICE=DFP-0
export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0

Вы можете изменить DFP-0 на ваш используемый монитор (DFP-0 это DVI порт, а CRT-0 - VGA порт). Идентификатор для вашего монитора можно найти с помощью nvidia-settings в секции "X Server XVideoSettings".

Gaming using TwinView

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

Чтобы исправить это для SDL, попробуйте:

export SDL_VIDEO_FULLSCREEN_HEAD=1

Для OpenGL, добавьте Metamodes в свой xorg.conf в секции Device и перезапустите X:

Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;"

Еще один метод, который может работать самостоятельно, или в сочетании с упомянутыми выше: starting games in a separate X server.

Режим Mosaic

Режим Mosaic единственный способ использовать более чем два монитора через несколько видеокарт с использованием композитинга. Ваш оконный менджер может распознать, а может и не распознать различия между мониторами. Режим Mosaic требует правильной конфигурации SLI. Даже если используется режим Base без SLI, видеокарты должны быть совместимы с SLI.

Base Mosaic

Режим Base Mosaic работает с картами Geforce 8000 series или выше. Его нельзя включить через графический интерфейс nvidia-setting. Вы должны использовать команду nvidia-xconfig, либо отредактировать xorg.conf самостоятельно. Опция Metamodes должна быть указана. Следующий пример для четырёх DFP мониторов в конфигурации 2х2, каждый запущен в разрешении 1920x1024, по два подключенных DFP монитора на две карты:

$ nvidia-xconfig --base-mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"
Примечание: Хотя в документации и указана конфигурация мониторов 2х2, карты GeForce имеют искусственное ограничение в 3 монитора. Большее количество мониторов доступно в картах серии Quadro. С сентября 2014, Windows не имеет ограничение на количество мониторов с той же самой версией драйвера. Это не ошибка, так задумано по дизайну архитектуры.
SLI Mosaic

Если вы имеете конфигурацию SLI и все графические ускорители серии Quadro FX 5800, Quadro Fermi или новее, тогда вы можете использовать режим SLI Mosaic. он можеть быть включен из графического интерфейса nvidia-settings или из командной строки:

$ nvidia-xconfig --sli=Mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"

Wayland

Смотрите Wayland (Русский)#Требования.

Дополнительные параметры конфигурации можно найти на страницах вики или в документации соответствующего композитора.

Информацию об XWayland смотрите в разделе Wayland (Русский)#XWayland.

Советы и рекомендации

Смотрите NVIDIA/Советы и рекомендации.

Смотрите также