SDB:NVIDIA 驱动

(重定向自SDB:NVIDIA drivers
跳转至: 导航, 搜索
由于许可证的原因,NVIDIA 驱动程序不能直接被整合到 openSUSE 中。但幸运的是,对于新用户来说,NVIDIA 和 openSUSE 提供了非常简便的方法来安装 NVIDIA 驱动程序:NVIDIA 为 openSUSE 专门制作了 RPM 并将他们放入了软件源里,这样它们就可以通过 YaST 来直接安装。
注意: 如果你想要更新你的显卡硬件设备,记得在更换升级硬件之前卸载你的 NVidia DDX 驱动(恢复到 modesetting DDX 驱动程序(较新;默认)或 nouveau DDX 驱动程序(较旧;可选))。

开源 GPU 内核模块与专有驱动程序

以下内容是关于安装 NVIDIA 专有驱动程序的。有关 NVIDIA 于 2022 年 5 月发布的 Open GPU 内核模块的更多信息,请阅读这篇 openSUSE 博客文章

情景

本文适合想要使用 zypper 从 NVIDIA 官方源安装驱动的用户。

有关 NVIDIA 官方 linux.run 文件的信息,请参阅 SDB:NVIDIA 不易之路页面(安装 linux.run 是不受推荐的做法)。

配置代理网络

如果你身处中国,大概率会遇到 NVIDIA 软件源下载速度缓慢甚至间歇性中断的情况,请阅读 SDB:配置代理 以改善下载体验。

安装流程

使用 YaST 或 Zypper 安装需要 root 权限。

请注意,YaST 在 openSUSE Aeon 或 Kalpa 中不可用。你必须使用 transactional-updatezypper 安装驱动。

特殊要求

你需要启用内核的多版本功能(该功能默认启用)。你可以查看 /etc/zypp/zypp.conf 文件是否含有以下条目来确定该功能是否启用:

multiversion = provides:multiversion(kernel)

更新系统

在安装驱动之前,请先将你的系统更新至最新的版本。

sudo zypper dup #对于 tumbleweed 用户
sudo zypper up  #对于 Leap 用户

添加软件源

由于许可证原因,NVIDIA 驱动程序无法包含在 openSUSE 中。方便的是,NVIDIA 有一个可以添加和下载的 openSUSE 软件源。

你可以依照下文选取任意一种方法添加 NVIDIA 软件源。

openSUSE-repos

我们最近在新的 RIS 管理添加了 NVIDIA 存储库,该存储库已在 MicroOS 和 openSUSE Leap Micro 上默认使用。

当你第一次刷新 zypper 缓存时,zypper 会询问你是否导入来自 NVIDIA 的第三方 GPG 密钥。我们目前没有一个好的方法来“信任”第三方密钥并跳过这一步。因此,请使用 yes 确认密钥的导入。

对于 Leap 和 Tumbleweed 用户:

sudo zypper in openSUSE-repos-NVIDIA

对于 Aeon、Kalpa 和 Leap Micro 用户,请以 root 身份执行:

transactional-update -i pkg install openSUSE-repos-NVIDIA

zypper

对于 Leap 用户:

sudo zypper addrepo --refresh 'https://download.nvidia.com/opensuse/leap/$releasever' NVIDIA

对于 Tumbleweed 用户:

sudo zypper addrepo --refresh 'https://download.nvidia.com/opensuse/tumbleweed' NVIDIA

对于 Aeon 和 Kalpa 用户:

sudo zypper addrepo --refresh 'https://download.nvidia.com/opensuse/tumbleweed' NVIDIA

获取架构信息

打开终端,以 root 权限运行下列命令,来确定您的显卡型号:

# lspci | grep VGA
# lscpu | grep Arch

# hwinfo --gfxcard | grep Model
# hwinfo --arch

使用 inxi 实用程序:

# inxi -G
# inxi -Ga

安装

确定合适的驱动程序的一种方法是将你的硬件信息输入 NVIDIA 的驱动程序搜索引擎。请注意: NVIDIA 的网站可能会宣称,与桌面显卡相比,相同芯片的移动显卡支持周期更短。对于 Linux 驱动程序来说情况并非如此(更多信息请参见此处)。openSUSE 为所有版本提供统一的 Linux 驱动程序:包括 GeForce 和 Quadro、台式机和移动设备。驱动程序在启动期间决定是否支持该 GPU。

注意:特定显卡映射到下面列出的命名约定。当你准备通过命令行安装驱动时,你将需要此信息。

  • G03 = driver v340 = GT8xxx/9xxx 设备的旧版驱动程序(通过社区用户,见下文)
  • G04 = driver v390 = GTX4xx/5xx Fermi 设备的旧版驱动程序
  • G05 = driver v470 = GeForce 600 系列驱动程序
  • G06 = GeForce 700 系列(Kepler)及更高版本(Maxwell、Pascal……)的驱动程序

或者,你可以使用 YaST 软件或以下命令来检查可用的软件包:

# zypper se x11-video-nvidiaG0* nvidia-video-G06*
S | Name                | Summary                                                 | Type
--+---------------------+---------------------------------------------------------+--------
  | nvidia-video-G06    | NVIDIA graphics driver for GeForce 700 series and newer | package
  | x11-video-nvidiaG04 | NVIDIA graphics driver for GeForce 400 series and newer | package
  | x11-video-nvidiaG05 | NVIDIA graphics driver for GeForce 600 series and newer | package
# zypper se -s x11-video-nvidiaG0* nvidia-video-G06*
S | Name                | Type    | Version         | Arch   | Repository
--+---------------------+---------+-----------------+--------+------------------------
  | nvidia-video-G06    | package | 525.89.02-5.2   | x86_64 | nVidia Graphics Drivers
  | x11-video-nvidiaG04 | package | 390.157-19.1    | x86_64 | nVidia Graphics Drivers
  | x11-video-nvidiaG05 | package | 470.161.03-59.2 | x86_64 | nVidia Graphics Drivers

如上,请根据你的显卡设备选取合适的驱动,如果你不清楚你的显卡设备属于哪个系列,你可以打开 NVIDIA Official Drivers,在 Product Type 中,将类型选择为 GeForce,然后点击 Product Series 选择框,即可看到所有的 GeForce 显卡系列。

Nvidia-driver-list.png

例如,前几年发布的 NVIDIA RTX2070 独显属于 GeForce RTX 20 series,它要比 GeForce 700 series 新,所以可以选择安装 nvidia-video-G06:

# zypper install nvidia-video-G06

如果你打算稍后安装 CUDA,则必须使用 nvidiaG05 版本以实现兼容性(截至 2022 年 1 月 18 日)。

要利用 OpenGL 加速,您必须安装额外的软件包,选择与驱动程序对应的软件包:

# zypper se nvidia-gl*G0*
S | Name          | Summary                                         | Type
--+---------------+-------------------------------------------------+--------
  | nvidia-gl-G06 | NVIDIA OpenGL libraries for OpenGL acceleration | package
  | nvidia-glG04  | NVIDIA OpenGL libraries for OpenGL acceleration | package
  | nvidia-glG05  | NVIDIA OpenGL libraries for OpenGL acceleration | package

修补的 G03 驱动程序由社区用户提供: https://software.opensuse.org/search?baseproject=ALL&q=g03 。您可以在添加所需的存储库后安装它们。

使用 YaST Software 安装驱动

  1. 打开 YaST;
  2. 在 YaST 控制中心找到并打开 软件管理
  3. 点击搜索,输入 nvidia;
  4. 根据上文选择适当的驱动程序,例如 x11-video-nvidiaG04 或 x11-video-nvidiaG05 或 nvidia-video-G06
  5. 可选择对应的 OpenGL 加速库,如 nvidia-glG04、nvidia-glG05 或 nvidia-gl-G06。
  6. 点击右下方的接受按钮;
  7. 等待安装完成;
  8. 重启系统。

命令行

这是目前在 openSUSE Aeon 和 Kalpa 中安装显卡驱动程序的唯一方法。

在获知你的硬件属于哪个驱动程序命令映射(例如 G04 或 G05 或 G06)时,你可以使用命令行安装它们。

对于 Leap 和 Tumbleweed 用户

# zypper in <x11-video-nvidiaG04 或 x11-video-nvidiaG05 或 nvidia-video-G06>
# zypper in <nvidia-glG04 或 nvidia-glG05 或 nvidia-gl-G06>

然后重启电脑。

对于 openSUSE Aeon 和 Kalpa 用户

  • 对于 nvidia-video-G06 :
# transactional-update -i pkg in nvidia-driver-G06-kmp-default nvidia-video-G06 nvidia-gl-G06 nvidia-compute-G06
  • 对于 x11-video-nvidiaG05 :
# transactional-update -i pkg in nvidia-gfxG05-kmp-default x11-video-nvidiaG05 nvidia-glG05 nvidia-computeG05
  • 对于 x11-video-nvidiaG04 :
# transactional-update -i pkg in nvidia-gfxG04-kmp-default x11-video-nvidiaG04 nvidia-glG04 nvidia-computeG04

然后重启电脑。

安全启动

如果你在 BIOS 中关闭了安全启动,驱动安装完成后,重启系统会自动激活 N 卡驱动。你可以使用 suse-prime 进行切换显卡。

Leap 15.2 或更高版本的内核,默认情况下,会拒绝在启用安全启动的机器上加载任何未签名的内核模块。

在启用了安全启动的系统上安装 NVIDIA 驱动的过程中,会创建一个 MOK 密钥对,并使用创建的私钥对内核模块进行签名。所创建的证书(公钥)仍然保存在 /var/lib/nvidia-pubkeys 下面的存储器中,但它也需要被导入到待注册的 MOK pubkeys 列表中。

第一次重启后,这个证书可以很容易地注册到 MOK 数据库中。为此 EFI 工具(mokutil)会自动启动:在工具里面选择 "Enroll MOK",然后选择 "Continue",再选择 "Yes"。当提示输入密码时,使用你的 root 密码(需要美国键盘布局!)。现在证书已经被添加到 MOK 数据库中,并被认为是可信的,这将允许加载匹配签名的内核模块。要完成该过程,选择 "reboot"。

Nvidia-secureboot-enrollKey.jpg

如果你在第一次重启后错过了证书注册的超时时间,你可以通过运行以下命令轻松地重新导入证书。

对于 nvidia-driver-G0X (X >= 6):

# mokutil --import /var/lib/nvidia-pubkeys/MOK-nvidia-driver-G0<X>-<driver_version>-<kernel_flavor>.der --root-pw

对于 nvidia-gfxG0X (X < 6):

# mokutil --import /var/lib/nvidia-pubkeys/MOK-nvidia-gfxG0<X>-<driver_version>-<kernel_flavor>.der --root-pw

然后重新启动机器,并按照之前的方法注册证书。

最后,如果你在安全启动方面遇到问题,你可以自行承担风险,禁用内核模块的验证。

# mokutil --disable-validation

驱动升级

在驱动更新过程中,旧的不再使用的公钥将从 MOK 数据库中删除。所以在重启机器后,除了"Enroll MOK"菜单项外,EFI工具中还会出现一个"Delete MOK"项。为了最终将其从 MOK 数据库中删除,请选择 "Delete MOK",然后选择 "Continue",再选择 "Yes"。当提示输入密码时,再次使用你的 root 密码(需要美国键盘布局!)。选择 "View Key X"时可以显示公钥的证书/说明,以免删错密钥。按任意键从那里继续。

Nvidia-secureboot-deleteKey.jpg

卸载 Nvidia 驱动

YaST

  1. 打开 YaST ,点击 软件,进入 软件管理。
  2. 点击左上方的 视图 ,选择 软件源
  3. 选择 NVIDIA 的软件源
  4. 把所有已安装的软件包标记为 删除,然后点击 接受 。可能会提示你有冲突,请忽略任何冲突,选择解除依赖关系。
  5. 打开 YaST ,然后点击 软件源 。
  6. 选择 NVIDIA 的软件源,取消点击左下方的 已启用 。不要删除它,因为它将在下次与服务器同步时返回启用。

卸载专有驱动程序将恢复之前的X配置文件 /etc/X11/xorg.conf(如果有的话)。如果在此期间硬件发生了变化,可能需要手动编辑这个文件。

Zypper

# zypper rm <x11-video-nvidiaG04 or x11-video-nvidiaG05>

如果这样还不能删除所有的软件包,你可以用以下方法找到其他的名字

# zypper se -ir NVIDIA

# zypper lr
# zypper se -ir <the repo number>

另外,NVIDIA 驱动的安装程序可能将 nouveau 加入了黑名单;为了能够再次运行模式化 DDX 驱动或 nouveau DDX 驱动,请确保在 /etc/modprobe.d/ 中没有包含 blacklist nouveau 字样的文件,因为安装程序可能无法删除这些文件。

卸载软件包后,你可能需要运行:

# mkinitrd


故障排除

  • SDB:NVIDIA_troubleshooting(推荐阅读)
  • SDB:NVIDIA_故障排除
  • 如果你的电脑在安装完专有驱动程序后在登录屏幕前冻结,并且你使用的是 GDM(如果你使用的是 GNOME,通常会出现这种情况),请尝试在 /etc/gdm/custom.conf 中加入 WaylandEnable=false。这将在登录期间禁用 GNOME Wayland 会话作为选项。如果你希望 Wayland 仍处于启用状态,请运行以下命令并重新启动。
 # sudo ln -sfv /dev/null /etc/udev/rules.d/61-gdm.rules
  • KDE、NVIDIA 专有驱动程序与 Wayland 三者可能无法同时工作。
  • 你可以通过在终端运行 lsmod | grep nvidia 来验证驱动程序是否真的被加载。输出结果应该是这样的:
nvidia_drm             57344  2
nvidia_modeset       1187840  3 nvidia_drm
nvidia_uvm           1110016  0
nvidia              19771392  81 nvidia_uvm,nvidia_modeset
drm_kms_helper        229376  2 nvidia_drm,i915
drm                   544768  13 drm_kms_helper,nvidia_drm,i915

中间一栏的数字不需要相同。如果驱动程序被加载了,问题就出在其他地方,因为这意味着它被成功安装了。

  • 正如本指南之前所说,如果你使用安全启动,请确保你接受MOK,否则模块将无法加载。要知道安全启动是否会阻止模块,一个方法是查看 dmesg 的输出,搜索类似以下的警告:
Lockdown: modprobe: unsigned module loading is restricted; see man kernel_lockdown.7
modprobe: ERROR: could not insert 'nvidia': Required key not available

另见

Optimus (双显卡切换)

如果你的电脑支持 Nvdia Optimus (通常是笔记本电脑) 可以阅读SDB:NVIDIA_SUSE_Prime

CUDA

如果你想需要安装 CUDA 请直接参考官方文档 CUDA Toolkit Documentation 和 CUDA 的下载地址 NVIDIA CUDA Download

外部链接