SDB:NVIDIA 故障排除

跳转到:导航搜索



本文将帮助您排查 NVIDIA 显卡驱动程序的问题。
其中详细介绍了一系列常见情况,并提供了解决问题的指导,但有些可能只提供变通方法。
Icon-cleanup.png
这篇文章需要关注,因为它不符合我们的维基指南
如果您想贡献,请阅读此维基的规则,如果您有任何问题,请随时联系维基团队,我们非常乐意帮助您!:-)
Icon-warning.png
警告:某些信息被认为已过时,但为了支持参考而保留。

nvidia-settings 错误:无法从任何可用的系统加载信息

如果您通过软件包管理系统安装了 nvidia-driver,并且出现此错误,那是因为您的系统正在运行另一个图形卡驱动程序(通常是 Intel),而不是 Nvidia。当您的 PC 上有多个 GPU 时,可能会发生这种情况,并可能在 GPU 密集型任务期间(例如玩游戏)表现为崩溃。

安装 opensuse-primesuse-prime 软件包,并将 nvidia 选为默认图形卡驱动程序。

# zypper in opensuse-prime suse-prime

然后重新启动并使用 prime-select 切换图形卡驱动程序。

# prime-select nvidia

此外,重新生成 /etc/X11/xorg.conf 可能会有所帮助。

# rm -v /etc/X11/xorg.conf
# nvidia-xconfig

然后重新启动,您应该看到 nvidia 驱动程序正在运行。

未能应用原子模式设置。错误代码:-22

您可能会在启动过程或玩游戏时看到如下消息

kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] ERROR [nvidia-drm] [GPU ID 0x00000100] Failed to apply atomic modeset. Error code: -22

在这种情况下,请确保您拥有最新的 NVidia 驱动程序(根本原因似乎已在 545.29.02 驱动程序中修复)。如果问题仍然存在,使用 initcall_blacklist=simpledrm_platform_driver_init 内核参数可能会有所帮助。

要应用该参数

1) 编辑 /etc/default/grub 文件。

2) 将该参数添加到 GRUB_CMDLINE_LINUX_DEFAULT 变量,例如

 GRUB_CMDLINE_LINUX_DEFAULT="splash=silent initcall_blacklist=simpledrm_platform_driver_init mitigations=auto quiet security=apparmor"

3) 保存文件。

4) 执行 update-bootloader --refresh 并重新启动计算机。

另请参阅 https://forums.developer.nvidia.com/t/failed-to-apply-atomic-modeset-display-hang-on-fullscreen-game-launch-with-530-41-03-1070-gtx-wayland-gnome-43-4-manjaro/248638/30

某些 AGP 显卡存在问题

使用某些主板上的 AGP 显卡,您可能需要手动添加 [Option "NvAGP" "2"],如下所示。这是 Gigabyte GA-K8NS AMD64 主板和 AGP Nvidia FX5200 显卡的情况。如果没有此命令,X 将无法启动。

 Section "Device"
   BoardName    "GeForce FX 5200 (0x0322)"
   BusID        "1:0:0"
   Driver       "nvidia"
   Identifier   "Device[0]"
   VendorName   "NVidia"
   Option       "NvAGP" "2"
 EndSection

启用合成/3D 效果时应用程序冻结或崩溃

您在 /etc/X11/xorg.conf 中设置了 Option "Composite" "Enable" 以享受您的炫酷效果或 3D 桌面,但您看到某些应用程序崩溃或冻结?

尝试使用 Option "Composite" "Disable" 暂时禁用合成,然后重新启动 X 服务器(请说明如何操作)。

这些应用程序现在不再崩溃或冻结了吗?如果是,则您的合成不稳定。

有一个解决方案。NVidia 驱动程序 169.xx 之后引入了一个名为 UseCompositeWrapper 的新选项。将其放在 xorg.conf 的 Device 部分: Option "UseCompositeWrapper" "true" 然后再次启用合成。重新启动 X 服务器。您的应用程序现在不应该冻结或崩溃了。

TwinView 分辨率问题

有时,在使用 nvidia-settings 配置双显示器时,没有选项可以选择第二个显示器的分辨率高于 640x480。这是由 /etc/X11/xorg.conf 中显示器设置的默认 HorizSync 引起的。

要增加低分辨率显示器,您需要增加 HorizSync,以便在特定显示器上启用更高的分辨率。为此,请执行以下操作

1. 在 nvidia-settings 中,将该显示器的分辨率设置为最高可用分辨率。例如:640x480。确保不要更改为自动。这将帮助您在编辑 /etc/X11/xorg.conf 文件时识别正确的显示器。保存到 xorg.conf 并退出。

2. 打开 /etc/X11/xorg.conf 并找到以下部分(具体细节可能会略有不同)

 Section "Screen"
   Monitor "Monitor0"
   Option  "metamode" "CRT: 640x680 +1280+0, DFP: 1280x1024 +0+0"
 EndSection

3. 将分辨率更改为所需的分辨率。

4. 找到相应的显示器部分(具体细节可能会略有不同)

 Section "Monitor"
   Identifier "Monitor0"
   HorizSync   28.0 - 33.0
 EndSection

5. 将 HorizSync 右侧的值增加到 65.0(如果重新启动 X 后显示器仍然无法工作,则增加到更高)。

6. 保存文件并重新启动 X 服务器。

7. 如果第二个显示器仍然无法显示,请重复步骤 4 到 7,将 HorizSync 增加到高于 65.0。

不支持 SSE 的 CPU 上无法运行 OpenGL 应用程序

如果您在尝试运行 OpenGL 应用程序时看到此消息,那么您可能拥有一颗不支持 SSE 的 CPU(例如 Athlon Thunderbird)

NVIDIA OpenGL Driver requires CPUs with SSE to run.

The current CPU does not support SSE.

NVidia 发布了 beta 驱动程序 173.14.15,该驱动程序支持没有 SSE 的 CPU。请参阅 http://www.nvnews.net/vbulletin/showthread.php?t=122423 获取公告。可用于 Linux/x86Linux/x86-64 的下载。

屏幕旋转

如果您的显示器具有“纵向模式”功能,您应该编辑 /etc/X11/xorg.conf 以使用此功能。在 Device 部分添加 Option "RandRRotation" "true" 字符串。然后重新启动 X。现在您可以旋转屏幕了。

Device 部分示例

Section "Device"
  BoardName    "GeForce 6800 (0x00C1)"
  Driver       "nvidia"
  Identifier   "Device[0]"
  VendorName   "NVidia"
  Option       "RandRRotation" "true"
EndSection

旋转示例

$ xrandr -o left

您可以将屏幕设置为 leftrightinvertednormal 位置。

您还可以使用 GUI 工具,例如 KRandRTray

内核更新后 NVIDIA 驱动程序不再工作

如果 NVIDIA 驱动程序在 openSUSE 13.2 升级到 3.16.7-13-desktop 内核之前安装,则驱动程序可能不再工作。原因已知并记录在 boo#925437 中。

解决方案是重新安装使用的内核模块。

 zypper in --force `rpm -qa "nvidia-gfx*kmp*"`
 
 Loading repository data...
 Reading installed packages...
 Forcing installation of 'nvidia-gfxG03-kmp-desktop-340.76_k3.16.6_2-36.1.x86_64' from repository 'nVidia Graphics Drivers'.
 Resolving package dependencies...
 
 The following package is going to be reinstalled:
   nvidia-gfxG03-kmp-desktop-340.76_k3.16.6_2-36.1 
 
 1 package to reinstall.
 Overall download size: 3.6 MiB. Already cached: 0 B  No additional space will be used or freed after the operation.
 Continue? [y/n/? shows all options] (y): y
 Retrieving package nvidia-gfxG03-kmp-desktop-340.76_k3.16.6_2-36.1.x86_64     (1/1),   3.6 MiB ( 32.7 MiB unpacked)
 Retrieving: nvidia-gfxG03-kmp-desktop-340.76_k3.16.6_2-36.1.x86_64.rpm ......................................[done]
 Checking for file conflicts: ................................................................................[done]
 (1/1) Installing: nvidia-gfxG03-kmp-desktop-340.76_k3.16.6_2-36.1 ..........................................<100%>[/]

您会看到一些消息

 depmod: WARNING: //lib/modules/3.16.7-7-desktop/weak-updates/updates/nvidia.ko disagrees about version of symbol XXXXXX
 Warning: /lib/modules/3.16.7-7-desktop is inconsistent
 Warning: weak-updates symlinks might not be created

然后驱动程序应该可以再次工作。

NVIDIA 的安装程序抱怨 libglvnd

如果您升级到 Tumbleweed 20170407 或更高版本,您需要先卸载 NVIDIA 驱动程序,然后删除一次由 NVIDIA 的安装程序恢复的两个孤立的 libGL.so.1.2* 文件,然后重新安装 libglvnd0 软件包

# nvidia-installer --uninstall
# rm -f /usr/lib*/libGL.so.1.2*
# zypper in --force libglvnd0

否则,安装程序会抱怨损坏的 libglvnd 安装(boo#1034343),并留下会阻止 RPM 安装驱动程序正常工作的 libGL.so 文件(boo#1053115)。

NVIDIA HDMI 没有音频或完全禁用

NVIDIA 软件包在 /usr/lib/udev/rules.d/90-nvidia-udev-pm-G05.rules 中包含一个 udev 规则,由于以下行,它会以某种方式禁用 HDMI 音频

 # Remove NVIDIA Audio devices, if present
 ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{remove}="1"

要修复此问题,只需运行以下命令

# touch /etc/udev/rules.d/90-nvidia-udev-pm-G05.rules


NVIDIA 电源管理(较新型号笔记本电脑的功耗过大)

为了在您的 Nvidia GPU 未使用时将功耗降至最低,您可以将以下配置添加到 /etc/modprobe.d/nvidia-power.conf

options nvidia NVreg_DynamicPowerManagement=0x02

https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/dynamicpowermanagement.html


笔记本电脑:黑屏的可能原因

许多原因可能导致带有 NVIDIA 卡的笔记本电脑黑屏。以下是用于故障排除的可能原因列表。

症状:没有 HDMI 输出

理由

取决于笔记本电脑的硬件设计,CPU 集成显卡可能无法输出到 HDMI。如果您的 NVIDIA 卡太新,Nouveau 可能不支持此功能。

解决方案

  • 安装专有 NVIDIA 驱动程序。(尽管内部屏幕可能无法调整亮度,具体取决于您的内核和 BIOS 版本)

症状:安装专有 NVIDIA 驱动程序并重新启动后,屏幕完全变黑,或者 SDDM 只显示带有鼠标光标的黑屏

理由

在这种情况下,您仍然应该能够通过 Ctrl+Alt+F3 进入 TTY。这可能是 Optimus 的问题。

解决方案

  • 在 BIOS 中禁用 Optimus。
  • 等待 Linux 内核升级直到修复。

症状:升级专有 NVIDIA 驱动程序后,屏幕在 GRUB 菜单之后立即变黑

理由

如果您升级了整个系统(例如 zypper dup/zypper up),其中包括 NVIDIA 驱动程序,然后重新启动,屏幕在 GRUB 菜单之后立即完全变黑(不打印任何内容)。原因不明。

解决方案

  • 通过 snapper rollback 回滚到运行良好的 ID。
  • 使用 zypper addlock nvidia-{compute,gl,video}-G06{,-32bit} nvidia-driver-G06-kmp-default nvidia{,-compute}-utils-G06 nvidia-drivers-G06 锁定 NVIDIA 驱动程序的版本(将“G06”替换为您的 NVIDIA 型号)。
  • zypper dup/zypper up 再次。

症状:在未更改或更新任何设置的情况下,启动在 GRUB 菜单之后立即卡住。

理由

原因是交流适配器。当交流适配器插入时,启动正常。但仅使用电池时,启动在 GRUB 之后卡住(完全黑屏,或者有时会显示带有密码输入 UI 的 LUKS,但在输入密码后没有响应)。

实际上这不是显卡的问题,而是电源管理的问题。但很容易被误解,因此也在此处描述。

相同的交流适配器问题可能不会发生在相同型号的另一台笔记本电脑上。一个可能的原因是 BIOS 版本。

可能的解决方案

  • 启动时插入交流适配器。
  • 等待 Linux 内核升级直到修复。