SDB:NVIDIA the hard way

跳转到:导航搜索


情况

希望安装 NVIDIA 的专有驱动程序,使用他们的安装程序 (.run)。

这被称为“困难的方法”,因为 通过 zypp 安装 更容易。

“困难的方法”安装可能是在您遇到异常情况时更好的选择。 例如,“困难的方法”会检查用于编译内核的 gcc 版本,如果存在不匹配,它将发出警告并解释如何指定 gcc 版本(如果使用锁定或长期内核,这将非常有用)。

流程

创建系统快照,以便在需要时回滚。

# snapper create

安装最低要求

以下模式包含 最低要求

# zypper in -t pattern devel_C_C++ devel_kernel 
# zypper in dkms

根据 官方安装指南第 4 章,需要 devel_kernel 中的 kernel-source 包 (548M);但是,您可能需要调查--add-this-kernel(在同一章节中)。

获取硬件信息

在终端中

# lspci | grep VGA
$ lscpu | grep Arch

或者

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

还有 YaST2 -> 硬件信息


下载驱动安装程序

这些似乎都是官方来源

直接链接可以在

内核、Mesa 和 Xorg 的更改可能会破坏驱动兼容性,即在升级之前下载最新的驱动程序。


在没有 nouveau 的情况下启动

重新启动并按EGRUB2 (GRUB 屏幕应该如下所示:UEFI,和 BIOS) 时,然后附加nomodeset3到类似于这样的行

 linux /boot/vmlinuz-5.14.21-150400.20-default ... splash=silent ... quiet ...

请注意,“...”表示会有其他参数。

因此,例如,前一行应该如下所示

linux /boot/vmlinuz-5.14.21-150400.20-default ... splash=silent ... quiet ... nomodeset 3
  • nomodeset确保 Nouveau 驱动程序 不会被加载,因为 Nouveau 需要内核模式设置 (KMS)。
  • 3确保系统启动到虚拟控制台 (3,带有文本的著名黑屏) 而不是启动到显示管理器 / Wayland 或 X 会话,换句话说:不加载图形环境。

这些选项不会在下次启动时保存。 有关使用 YaST2 或直接编辑 /etc/default/grub 作为 root 的更多信息。

或者,您可以尝试从 BIOSIGFX (集成显卡) 模式启动。 对于台式机,这需要将显示器连接到主板视频输出端口。

阻止 nouveau

专有驱动程序安装程序将阻止 Nouveau;因此,通常可以跳过此部分,但检查一下也没有坏处。

安装程序会创建文件/etc/modprobe.d/nvidia.conf其中包含

blacklist nouveau

其他版本也可能会添加

options nouveau.modeset=0

要双重检查文件的存在及其内容,请使用

$ cat /etc/modprobe.d/nvidia.conf

安装驱动

首先,以 root 用户身份登录。

要查看所有选项的列表

# sh /home/<username>/Downloads/<NVIDIA*.run> -A

正常安装

# sh /home/<username>/Downloads/<NVIDIA*.run>

当安装程序指示 nouveau 可能已被阻止时,您可以继续而无需重新启动(如果您按照建议启动)。

允许安装程序配置/etc/X11/xorg.conf会创建一个副本 (/etc/X11/xorg.conf.nvidia-xconfig-original) 当前版本,它将在卸载时恢复。

安装完成后,您可能需要通过运行重新创建 initrd

# dracut -f

这将添加/etc/modprobe.d/nvidia.conf初始 ramdisk。 要进行验证,请运行

# lsinitrd | grep nvidia

重新启动计算机

# shutdown -r now

要检查驱动程序的状态

 # hwinfo --gfxcard
 ...
 Driver Info #0:
   Driver Status: nouveau is not active
   Driver Activation Cmd: "modprobe nouveau"
 Driver Info #1:
   Driver Status: nvidia_drm is active
   Driver Activation Cmd: "modprobe nvidia_drm"
 Driver Info #2:
   Driver Status: nvidia is active
   Driver Activation Cmd: "modprobe nvidia"
# lsmod | grep nvidia
nvidia_drm             49152  1 
nvidia_modeset       1097728  4 nvidia_drm
nvidia              14344192  223 nvidia_modeset
ipmi_msghandler        53248  1 nvidia
drm_kms_helper        155648  2 i915,nvidia_drm
drm                   397312  6 i915,drm_kms_helper,nvidia_drm

专家模式

或者,有一个带有更多问题的“专家”安装模式

# sh /home/<username>/Downloads/<NVIDIA*.run> -e

内核更新和驱动兼容性

请注意:每当您更新内核时,都必须重复这些步骤。 这是必要的,因为与 NVIDIA 存储库中的 NVIDIA 驱动程序不同,此驱动程序未复制到在内核更新中仍然有效的 KMP 目录。

使用安全启动安装 NVIDIA

如果您正在双引导或只是懒得禁用计算机上的安全启动,实际上可以使用启用安全启动的情况下安装 NVIDIA。 步骤与上述类似,但有一些修改。 我们将使用openssl创建密钥对和mokutil将这些密钥/签名注册到我们的 MOK 列表中。 确保在执行以下步骤之前创建快照

步骤 1。

 openssl req -new -x509 -newkey rsa:2048 -keyout PATH_TO_PRIVATE_KEY -outform DER -out PATH_TO_PUBLIC_KEY -nodes -days 36500 -subj "/CN=Graphics Drivers"]

步骤 2。

 sudo mokutil --import PATH_TO_PUBLIC_KEY

然后

 sudo mokutil --enable-validation

步骤 3。

 sudo sh ./NVIDIA-Linux-x86_64-<NVIDIA version>.run -s --module-signing-secret-key=<PATH TO YOUR PRIVATE KEY FILE e.g. Nvidia.key> --module-signing-public-key=<PATH TO YOUR PUBLIC KEY FILE e.g. Nvidia.der> --module-signing-script=/usr/src/linux-obj/x86_64/default/scripts/sign-file

步骤 4。

 sudo dracut -f

然后重新启动。

对于版本 520.56.06 及更高版本

如果您有.run文件并仅使用--module-signing-script=/usr/src/linux-obj/x86_64/default/scripts/sign-file标志,NVIDIA 会自动为您生成密钥对并将公钥存储在/usr/share/nvidia/nvidia-modsign-crt-<一些乱码>.der因此,您可以跳过第一步并继续到第二步。


配置

安装程序提供了两个命令行实用程序

# man nvidia-settings
# man nvidia-xconfig

nvidia-settings 运行不带任何参数将打开图形用户界面。


多显示器

多显示器可能无需配置即可工作。 如果没有,请参阅 官方文档 的第 12-14 章。


撕裂

一种解决持续撕裂的方法是

nvidia-settings -> x server display configuration -> advanced -> force composition pipeline

警告:将其保存到/etc/X11/xorg.conf通过 nvidia-settings GUI 可能会对加载桌面产生不利影响。

或者,可以使用一个简单的脚本从命令行启用它。 例如

创建/home/<用户名>/bin/fcp

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline = $1 }"
xrefresh

使其可执行

chmod +x /home/<username>/bin/fcp

启用它

fcp 1

禁用它

fcp 0

可以通过 zypper 安装 xrefresh。 避免出现空白屏幕可能需要它。

Ctrl+Alt+F1然后Ctrl+Alt+F7也可以在这种情况下提供帮助。


GRUB2 和虚拟终端分辨率

与 nouveau 不同,虚拟终端的分辨率会很低

一种解决方法是使用 GRUB2 设置,这也会增加 GRUB2 的分辨率。

yast2 > 启动加载程序 > 内核参数 > 控制台分辨率

或者,要手动实现相同效果

从 GRUB2 您可以按 C,然后使用 vbeinfo 检查受支持的分辨率

启动后,您可以编辑/etc/default/grub

更改

GRUB_GFXMODE="auto"

GRUB_GFXMODE=1920x1080x32
GRUB_GFXPAYLOAD_LINUX=keep

使用您使用 vbeinfo 找到的分辨率。 (有关 gfxmode 的更多信息)

然后运行

# grub2-mkconfig -o /boot/grub2/grub.cfg

启用 NVIDIA 模式设置

为了使 PRIME 正常工作,您需要将内核参数nvidia-drm.modeset设置为 1。

您可以通过将其添加到 modprobe 配置或GRUB_CMDLINE_LINUX_DEFAULT:

  • nouveau.modeset=0
  • modprobe.blacklist=nouveau
  • rd.driver.blacklist=nouveau
  • nvidia-drm.modeset=1

前三个确保完全禁用 nouveau。 您可以选择一个或复制全部三个。 第四个是启用 NVIDIA 模式设置所需的内核参数。 您可以通过运行来检查它是否正常工作

 cat /sys/module/nvidia_drm/parameters/modeset

这应该输出“Y”。


Plymouth

Plymouth(GRUB2 和显示管理器之间的加载屏幕)可能不会显示。

要查看启动消息,请卸载 plymouth(或将 plymouth.enable=0 添加到 内核参数)并删除内核参数

splash=silent quiet

为了减少消息,设置日志级别

loglevel=5

卸载并使用模式设置或 nouveau DDX

使用“nomodeset”和“3”启动,就像安装时一样。

安装程序也用于卸载

# sh <NVIDIA*.run> --uninstall

/etc/modprobe.d/nvidia.conf将被删除。

/etc/X11/xorg.conf将被替换为/etc/X11/xorg.conf.nvidia-xconfig-original(预安装副本)。

您可能需要运行dracut -f卸载后 (更多)。

默认 DDXmodesetting自 2015 年以来,服务器包的版本为 1.17.0 起,一直提供。 当安装包xf86-video-nouveau时,应自动使用nouveauDDX。


Optimus 设置的 Xorg 配置

摘自 Arch Wiki,只需添加一个名为10-nvidia-drm-outputclass.conf/etc/X11/xorg.conf.d/包含

 Section "OutputClass"
   Identifier "intel"
   MatchDriver "i915"
   Driver "modesetting"
 EndSection
 Section "OutputClass"
   Identifier "nvidia"
   MatchDriver "nvidia-drm"
   Driver "nvidia"
   Option "AllowEmptyInitialConfiguration"
   Option "PrimaryGPU" "yes"
   ModulePath "/usr/lib/nvidia/xorg"
   ModulePath "/usr/lib/xorg/modules"
 EndSection

确保nvidia-drm.modeset设置为 1。

故障排除

有时,使用 NVIDIA 安装程序会删除内核模块和源,因此,运行

 sudo zypper info kernel-default 

安装后,结果显示“已安装”为“未安装”,如下所示

 Information for package kernel-default:
 ---------------------------------------
 Repository     : Main Repository (OSS)
 Name           : kernel-default
 Version        : 6.2.1-1.1
 Arch           : x86_64
 Vendor         : openSUSE
 Installed Size : 299.3 MiB
 Installed      : No
 Status         : up-to-date
 Source package : kernel-default-6.2.1-1.1.nosrc
 Upstream URL   : https://linuxkernel.org.cn/
 Summary        : The Standard Kernel
 Description    : 
     The standard kernel for both uniprocessor and multiprocessor systems.
 
 
     Source Timestamp: 2023-02-27 11:39:51 +0000
     GIT Revision: 69e0e95118afe307ac9da57c2cc7f80673a41423
     GIT Branch: stable

要解决此问题,您需要重新安装kernel-default再次运行

 sudo zypper install -f kernel-default 

否则,您将没有内核可启动

参见

相关文章

外部链接