NVIDIA (Русский)/Troubleshooting (Русский)
Проблемы запуска
Система не включается после установки драйвера
Если после установки драйвера NVIDIA система зависает, не доходя до экранного менеджера, попробуйте отключить kernel mode setting.
Не удаётся запустить Xorg, или красный экран смерти
Если вы получаете красный экран и используете GRUB, отключите фреймбуфер GRUB, раскомментировав строку GRUB_TERMINAL_OUTPUT=console
в файле /etc/default/grub
. Подробнее: GRUB/Tips and tricks#Disable framebuffer.
Чёрный экран при запуске X / Выключение компьютера при остановке X
Если вы установили обновление NVIDIA и ваш экран остаётся чёрным после запуска Xorg, или если остановка Xorg приводит к выключению компьютера, попробуйте следующие обходные пути:
- Добавьте "xrandr --auto" в xinitrc
- Используйте параметр ядра
rcutree.gp_init_delay=1
- Вы также можете попробовать добавить модуль
nvidia
в mkinitcpio.conf - Если экран всё равно чёрный после выполнения двух предыдущих пунктов, попробуйте переустановить nvidia и nvidia-utils именно в таком порядке, и, наконец, перезагрузить драйвер:
# modprobe nvidia
Экран(ы) найден(ы), но ни один из них не имеет пригодной для использования конфигурации
Иногда у NVIDIA и X возникают проблемы с поиском активного экрана. Если ваша видеокарта имеет несколько выходов, попробуйте подключить монитор к другим выходам. На ноутбуке это может быть связано с тем, что ваша видеокарта имеет VGA/TV выход. Xorg.0.log предоставит больше информации.
Ещё можно попробовать добавить некорректную опцию Option "ConnectedMonitor"
в секцию Section "Device"
, чтобы Xorg выкинул ошибку и показал, как её исправить. Здесь подробнее о настройке ConnectedMonitor.
После повторного запуска X посмотрите Xorg.0.log, чтобы узнать правильные значения CRT-x, DFP-x, TV-x.
nvidia-xconfig --query-gpu-info
может быть полезен.
X выдаёт ошибку "Failing initialization of X screen"
Если в /var/log/Xorg.0.log
есть такое:
(EE) NVIDIA(G0): GPU screens are not yet supported by the NVIDIA driver (EE) NVIDIA(G0): Failing initialization of X screen
и nvidia-smi пишет No running processes found
Решение заключается в том, чтобы сначала переустановить последнюю версию nvidia-utils, скопировать /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
в /etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
, а затем отредактировать /etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
, добавить туда Option "PrimaryGPU" "yes"
и перезагрузиться.
Xorg не запускается при включении системы, но в остальном работает нормально
На очень быстро загружающихся системах systemd может попытаться запустить экранный менеджер до того, как драйвер NVIDIA полностью инициализируется. Вы можете увидеть такое сообщение в журнале Xorg, который запускается при включении компьютера:
/var/log/Xorg.0.log
[ 1.807] (EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module. Please see the [ 1.807] (EE) NVIDIA(0): system's kernel log for additional error messages and [ 1.808] (EE) NVIDIA(0): consult the NVIDIA README for details. [ 1.808] (EE) NVIDIA(0): *** Aborting ***
В таком случае нужно будет установить зависимость экранного менеджера от устройства DRI. Сначала создайте файлы для устройств DRI, создав новое правило udev.
/etc/udev/rules.d/99-systemd-dri-devices.rules
ACTION=="add", KERNEL=="card*", SUBSYSTEM=="drm", TAG+="systemd"
Затем добавьте вашему экранному менеджеру зависимость от этого устройства.
/etc/systemd/system/display-manager.service.d/10-wait-for-dri-devices.conf
[Unit] Wants=dev-dri-card0.device After=dev-dri-card0.device
Если у вас есть ещё видеокарты, нужные рабочему столу, перечислите их в Wants и After через пробел.
Чёрный экран на системах со встроенным GPU
Если у вас система с интегрированным графическим процессором (например, Intel HD 4000, VIA VX820 Chrome 9 или AMD Cezanne) и установлен пакет nvidia, вы можете столкнуться с чёрным экраном при загрузке, при смене виртуального терминала или при выходе из X-сессии. Это может быть вызвано конфликтом между графическими модулями и решается внесением соответствующих модулей в чёрный список. Создайте файл /etc/modprobe.d/blacklist.conf
и пропишите в нём запрет загрузки модулей:
/etc/modprobe.d/blacklist.conf
install i915 /usr/bin/false install intel_agp /usr/bin/false install viafb /usr/bin/false install radeon /usr/bin/false install amdgpu /usr/bin/false
Ошибка "no screens found" при использовании нескольких видеокарт
Если есть несколько видеокарт и X не запускается с ошибкой:
[ 76.633] (EE) No devices detected. [ 76.633] Fatal server error: [ 76.633] no screens found
то вам нужно добавить BusID дискретной карты в конфигурацию X. Это может произойти в системах с процессором Intel и встроенном GPU или при подключении нескольких карт NVIDIA. Найдите свой BusID:
# lspci | grep -E "VGA|3D controller"
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09) 01: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)
Затем исправьте это, добавив его в раздел "Device"
карты в конфигурации X. В данном случае:
/etc/X11/xorg.conf.d/10-nvidia.conf
Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BusID "PCI:1:0:0" EndSection
В этом примере 01:00.0
становится 1:0:0
, однако некоторые преобразования могут быть более сложными. lspci
использует шестнадцатеричный формат для вывода, но в конфигурационных файлах BusID должен быть десятичным.
То есть, к примеру, 5e:00.0
из lspci нужно будет преобразовать в PCI:94:0:0
.
Ошибка modprobe: "Could not insert 'nvidia': No such device" на linux >=4.8
На linux 4.8 при попытке использовать видеокарту можно получить следующие ошибки:
$ modprobe nvidia -vv
modprobe: INFO: custom logging function 0x409c10 registered modprobe: INFO: Failed to insert module '/lib/modules/4.8.6-1-ARCH/extramodules/nvidia.ko.gz': No such device modprobe: ERROR: could not insert 'nvidia': No such device modprobe: INFO: context 0x24481e0 released insmod /lib/modules/4.8.6-1-ARCH/extramodules/nvidia.ko.gz
# dmesg
... NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:139b) NVRM: installed in this system is not supported by the 370.28 NVRM: NVIDIA Linux driver release. Please see 'Appendix NVRM: A - Supported NVIDIA GPU Products' in this release's NVRM: README, available on the Linux driver download page NVRM: at www.nvidia.com. ...
Проблема вызвана плохими коммитами, относящимися к управлению питанием PCIe в ядре Linux (как описано в этой ветке на NVIDIA DevTalk).
Обходным решением является добавление pcie_port_pm=off
в параметры ядра. Обратите внимание, что это отключает управление питанием PCIe для всех устройств.
Система не возвращается из ждущего режима
Если в журнале вы видите:
kernel: nvidia-modeset: ERROR: GPU:0: Failed detecting connected display devices kernel: nvidia-modeset: ERROR: GPU:0: Failed detecting connected display devices kernel: nvidia-modeset: WARNING: GPU:0: Failure processing EDID for display device DELL U2412M (DP-0). kernel: nvidia-modeset: WARNING: GPU:0: Unable to read EDID for display device DELL U2412M (DP-0) kernel: nvidia-modeset: ERROR: GPU:0: Failure reading maximum pixel clock value for display device DELL U2412M (DP-0).
Возможное решение [1]:
Выполните эту команду, чтобы получить строку version
:
# strings /sys/firmware/acpi/tables/DSDT | grep -i 'windows ' | sort | tail -1
И добавьте параметр ядра acpi_osi=! "acpi_osi=version"
.
Также причиной проблемы может быть использование nvidia-open, как описано здесь:
- https://bbs.archlinux.org/viewtopic.php?pid=2047692
- https://github.com/NVIDIA/open-gpu-kernel-modules/issues/450
- https://github.com/NVIDIA/open-gpu-kernel-modules/issues/223
- https://github.com/NVIDIA/open-gpu-kernel-modules/issues/94
Чёрный экран при возвращении из ждущего режима
Если в журнале ядра есть такие строки:
archlinux kernel: NVRM: GPU at PCI:0000:08:00: GPU-926ecdb0-adb1-6ee9-2fad-52e7214c5011 archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi> archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi> archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi> archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi> archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi>
Вам нужно выполнить шаги, описанные в разделе NVIDIA/Советы и рекомендации#Сохранение видеопамяти в ждущем режиме.
Сбои и зависания
Сбои в целом
- Попробуйте отключить
RenderAccel
в xorg.conf. - Если Xorg пишет ошибки про
"conflicting memory type"
или"failed to allocate primary buffer: out of memory"
или падает с сигналом 11, добавьтеnopat
в параметры ядра. - Если компилятор NVIDIA жалуется на разные версии GCC между текущей и той, которая использовалась для компиляции ядра, добавьте в
/etc/profile
:
export IGNORE_CC_MISMATCH=1
- Если полноэкранные приложения зависают или вылетают, попробуйте включить опции
Display Compositing
иDirect fullscreen rendering
в настройках среды рабочего стола.
Визуальные глюки, зависания и ошибки в приложениях OpenGL
Если у вас новый процессор (Intel Sandy Bridge (2011), AMD Zen (2017) или новее), в нём есть кэш микроопераций, использование которого может привести к проблемам с драйвером NVIDIA в OpenGL из-за Cache Aliasing [2]. Обычно вы можете отключить этот кэш в настройках BIOS, но это снижает производительность [3]. Отключение также помогает справиться с серьёзными графическими глюками в приложениях Xwayland, хотя и не решает проблему полностью [4].
Паника ядра после обновления и/или перезагрузки системы
Это известный баг в драйвере 550. [5] Причина ещё не известна, но он проявляется только на ноутбуках. Подробнее на форуме: BBS#293400
В качестве обходного пути можно перейти на nvidia-open-dkms (если видеокарта совместима с открытыми модулями ядра) или откатиться на более старую версию драйвера, например nvidia-535xx-dkmsAUR.
Проблемы с изображением
Избавление от разрывов
- Сообщалось, что это снижает производительность некоторых приложений OpenGL и может вызвать проблемы в WebGL (тема на форуме NVIDIA).
- Известно, что
ForceFullCompositionPipeline
ломает некоторые игры, использующие Vulkan и работающие через Proton, с драйвером версии 535.
Разрывы (тиринг) можно избежать принудительным включением цепочки полного композитинга (full composition pipeline), независимо от используемого вами композитора. Для проверки работоспособности опции выполните:
$ nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
Или нажмите кнопку Advanced в меню X Server Display Configuration. Выберите Force Composition Pipeline или Force Full Composition Pipeline и нажмите Apply.
Чтобы сделать изменения постоянными, нужно прописать их в секцию "Screen"
в настройках Xorg. При изменении TripleBuffering
должен быть включен, а AllowIndirectGLXProtocol
— отключен.
/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device" Identifier "NVIDIA Card" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GTX 1050 Ti" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" Option "ForceFullCompositionPipeline" "on" Option "AllowIndirectGLXProtocol" "off" Option "TripleBuffer" "on" EndSection
Если у вас нет файла настроек Xorg, вы можете создать его для текущей видеокарты командой nvidia-xconfig
(смотрите раздел NVIDIA (Русский)#Автоматическая настройка) и переместить его из /etc/X11/xorg.conf
в предпочтительное место /etc/X11/xorg.conf.d/20-nvidia.conf
.
nvidia-xconfig
, устанавливаются драйвером автоматически и на самом деле не нужны. Для включения полного композитинга нужна только секция "Screen"
, содержащая строки со значениями Identifier
и Option
. Остальные секции могут быть удалены из этого файла.Несколько мониторов
В случае нескольких мониторов нужно указать ForceCompositionPipeline=On
для каждого. Например:
$ nvidia-settings --assign CurrentMetaMode="DP-2: nvidia-auto-select +0+0 {ForceCompositionPipeline=On}, DP-4: nvidia-auto-select +3840+0 {ForceCompositionPipeline=On}"
Без этого nvidia-settings
отключит второй монитор.
Узнать информацию о текущем состоянии экранов можно с помощью --query
:
$ nvidia-settings --query CurrentMetaMode
Строка из примера выше предназначена для двух мониторов 3840x2160, подключенных к DP-2 и DP-4. Вам нужно будет прочитать правильный CurrentMetaMode
путём экспорта xorg.conf
и добавить ForceCompositionPipeline
для каждого из ваших мониторов. Установка ForceCompositionPipeline
влияет только на целевой монитор.
~/.nvidia-settings-rc
как 0/XVideoSyncToDisplayID=
или установив nvidia-settings и используя графические настройки.Повреждение экрана после сна
Это также относится к случаям, когда внешний монитор не пробуждается после сна.
Драйвер NVIDIA обычно сохраняет только основные распределения видеопамяти в ждущем и спящем режимах. В результате потеря содержимого видеопамяти может привести к повреждению рендеринга и сбоям приложений.
Можно включить сохранение всей видеопамяти, как описано в разделе NVIDIA/Советы и рекомендации#Сохранение видеопамяти в ждущем режиме.
Баг, связанный с повреждением при использовании GDM, был исправлен в драйвере версии 515.43.04 [6].
Повреждённый экран: проблема "шести экранов"
У некоторых пользователей с GeForce GT 100M после запуска X экран оказывается повреждённым, разделённым на 6 секций с ограниченным разрешением 640x480. Сообщалось о такой же проблеме с Quadro 2000 и мониторами высокого разрешения.
Чтобы решить эту проблему, пропишите NoTotalSizeCheck
в секции Device
:
Section "Device" ... Option "ModeValidation" "NoTotalSizeCheck" ... EndSection
Текст и значки не видны на драйвере 470
После обновления GTK4 у пользователей старых видеокарт с драйвером 470 начали появляться проблемы: текст и иконки случайным образом исчезают и появляются вновь только после наведения мыши на окно.[7]
Обходные пути описаны на форуме.
Проблемы с производительностью
Плохая производительность после обновления драйвера
Если FPS упал относительно старых драйверов, проверьте, работает ли direct rendering (с помощью команды glxinfo
из пакета mesa-utils):
$ glxinfo | grep direct
Если эта команда выведет:
direct rendering: No
Возможным решением может быть откат к старой версии драйвера и последующая перезагрузка.
Сильные лаги в Xorg
Например, некоторые пользователи Mutter сообщали о сильных лагах при воспроизведении видео, проигрывании анимаций или в играх.
Смотрите NVIDIA/Советы и рекомендации#Сохранение видеопамяти в ждущем режиме.
Это должно решить проблему, однако если нет, то вам, скорее всего, не повезло. Попробуйте добавить такие переменные окружения:
/etc/environment
CLUTTER_DEFAULT_FPS=ЧАСТОТА_ОБНОВЛЕНИЯ_ОСНОВНОГО_ДИСПЛЕЯ __GL_SYNC_DISPLAY_DEVICE=НАЗВАНИЕ_ВЫВОДА_ОСНОВНОГО_ДИСПЛЕЯ
Через NVIDIA Settings отключите Sync to VBlank
и Allow flipping
и настройте его запуск при загрузке с флагом --load-config-only
.
Это не устранит подтормаживания полностью, особенно на возможном втором (или третьем) мониторе, но должно улучшить ситуацию.
Скачки нагрузки процессора при использовании карт серии 400
Это может быть вызвано тем, что PowerMizer постоянно изменяет тактовую частоту GPU. Переключив настройки PowerMizer с Adaptive на Performance, добавьте следующее в секцию Device
настроек Xorg:
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"
Другие проблемы
Ошибка при запуске Vulkan-приложений
Если при запуске приложений, требующих Vulkan, вы видите такую ошибку
Vulkan call failed: -4
Попробуйте удалить каталог ~/.nv
или ~/.cache/nvidia
.
Нет звука через HDMI
Иногда аудиоустройства NVIDIA HDMI не отображаются в выводе команды
$ aplay -l
На некоторых новых компьютерах аудиочип на графическом процессоре NVIDIA отключается при загрузке. Подробности на сайте NVIDIA и на форуме.
Вам нужно перезагрузить устройство NVIDIA с включенным звуком. Для этого убедитесь, что ваш GPU включен (в случае ноутбуков/Bumblebee) и на нём нет работающего X, потому что он перезагрузится:
# setpci -s 01:00.0 0x488.l=0x2000000:0x2000000 # rmmod nvidia-drm nvidia-modeset nvidia # echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove # echo 1 > /sys/bus/pci/devices/0000:00:01.0/rescan # modprobe nvidia-drm # xinit -- -retro
Если ваш терминал работает через NVIDIA, поместите эти строки в скрипт, чтобы не остаться без работающего экрана.
Подсветка не выключается в некоторых случаях
По умолчанию DPMS должен отключать подсветку при установленных таймаутах или при запуске xset. Однако, вероятно, из-за ошибки в проприетарных драйверах NVIDIA в результате получается пустой экран без какого-либо отключения подсветки. Чтобы обойти это, пока ошибка не будет исправлена, можно использовать vbetool от имени root.
Следующая команда выключит экран, а затем нажатие случайной клавиши включит подсветку снова:
vbetool dpms off && read -n1; vbetool dpms on
Или можно попробовать xrandr, который не требует root:
xrandr --output DP-1 --off; read -n1; xrandr --output DP-1 --auto
HardDPMS
С версии 415 в драйвере появилась новая функция под названием HardDPMS. По сообщениям некоторых пользователей, она решает проблемы с приостановкой мониторов, подключенных через DisplayPort.
С версии 440.26 она включена по умолчанию, а если у вас старый драйвер, то HardDPMS
можно установить в секциях Device
или Screen
. Например:
/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device" ... Option "HardDPMS" "true" ... EndSection Section "Screen" ... Option "HardDPMS" "true" ... EndSection
HardDPMS
будет срабатывать от настроек хранителя экрана, таких как BlankTime
. Следующие ServerFlags
настроят монитор(ы) на приостановку после 10 минут бездействия:
/etc/X11/xorg.conf.d/20-nvidia.conf
Section "ServerFlags" Option "BlankTime" "10" EndSection
xrandr BadMatch
Если вы пытаетесь настроить WQHD монитор, например DELL U2515H, используя xrandr, и xrandr --addmode
выдаёт ошибку X Error of failed request: BadMatch
, это может быть связано с тем, что проприетарный драйвер NVIDIA обрезает максимальную частоту пиксельной синхронизации HDMI выхода до 225 МГц или ниже. Чтобы настроить монитор на максимальное разрешение, необходимо установить драйверы nouveau. Вы можете заставить nouveau использовать определённую частоту, прописав nouveau.hdmimhz=297
(или 330
) в параметры ядра.
Другой причиной может быть неправильный EDID вашего монитора. Смотрите #Переопределение EDID.
Ещё причиной может быть то, что по умолчанию текущие драйверы NVIDIA разрешают только режимы, явно указанные в EDID; но иногда требуются частоты обновления и/или разрешения, о которых монитор не сообщает (хотя информация EDID верна; просто текущие драйверы NVIDIA слишком строгие).
В этом случае вы можете добавить опцию в xorg.conf
, чтобы разрешить режимы, не указанные в EDID:
Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" ... Option "ModeValidation" "AllowNonEdidModes" ... EndSection
Этот параметр может быть установлен для каждого выхода. Подробности можно узнать в README - Appendix B. X Config Options.
Переопределение EDID
Смотрите Kernel mode setting (Русский)#Принудительный режим и EDID, Xrandr#Troubleshooting и Qnix QX2710#Fixing X11 with Nvidia.
Попытка разгона выдаёт Unknown Error
Если вы запускаете Xorg без прав root и пытаетесь разогнать видеокарту, вы получите ошибку вроде такой:
$ nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[3]=10"
ERROR: Error assigning value 10 to attribute 'GPUGraphicsClockOffset' (trinity-zero:1[gpu:0]) as specified in assignment '[gpu:0]/GPUGraphicsClockOffset[3]=10' (Unknown Error).
Для разгона необходимо запускать Xorg от имени root. Смотрите Xorg (Русский)#Использование Xorg без прав суперпользователя для подробностей.
Проверка программного GL
Проприетарный драйвер NVIDIA игнорирует переменную окружения Mesa LIBGL_ALWAYS_SOFTWARE=1
, но можно настроить libglvnd и EGL на использование Mesa с помощью следующих переменных окружения:
__GLX_VENDOR_LIBRARY_NAME=mesa __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json
что приведёт к использованию Mesa libgl для GLX и EGL и таким образом позволит использовать программный GL для проверки, связана ли какая-то проблема с реализацией GL от NVIDIA или нет.