网站搜索

如何让 Wayland 在 Nvidia 显卡上工作


尽管 Nvidia 理论上自 2021 年底发布驱动程序以来一直对 Wayland 给予全力支持,但道路并不一定一帆风顺。关于它如何与大多数人使用的组件(例如 XWayland)交互,还有很多工作要做。它需要在用户环境和内核中设置变量来导航系统并正确单击内容。

这并不是说一旦你让 Wayland 在 Nvidia 显卡上工作,这种体验就不值得了。如果您遵循本指南,您在 Nvidia 中的体验将几乎与在 X 中一样流畅。

也有帮助:如果您的 GPU 存在其他问题,请尝试这些常见的显卡修复方法。

内容

  • 不要卸载 Xorg
  • 1. 设置您的环境
  • 2. (Arch Linux) 构建您的 Init Ramdisk
  • 3.启用直接渲染管理器
  • 您的发行版上的 Wayland 支持
  • 经常问的问题

不要卸载 Xorg

首先,不要卸载 Xorg 或任何使用它的桌面环境!为了让您的体验更轻松、减少挫败感,最好有一个安全的选择可以依靠。现在将 X 视为您的“安全模式”,以防在此过程中出现任何问题。我们在本指南中所做的操作不会影响 Xorg。

1. 设置您的环境

有一些环境变量可以让 Wayland 在 Nvidia 显卡上工作。由于这里没有统一的标准,我们将非常通用地进行设置,以确保 Nvidia 不会对您怒目而视。

请按照以下步骤设置环境:

  1. 将您的环境备份到您的主目录:
sudo cp /etc/environment ~/environment.bak
  1. 打开您的通用环境文件:
sudo nano /etc/environment
  1. 如果您计划使用 Qt 应用程序(通常会有一些),请将此行添加到文件中的任意位置:
QT_QPA_PLATFORMTHEME="wayland;xcb"
  1. 添加以下环境变量,以便 Nvidia 可以强制使用 GBM 后端(与绝大多数 Linux 环境兼容)并启用您可能需要的其他一些功能,即使它们可能尚未安装:
GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia
ENABLE_VKBASALT=1
LIBVA_DRIVER_NAME=nvidia
  1. 由于硬件光标渲染在某些环境中可能会失败,因此还有一个可选变量。仅当您最终测试 Wayland 时,您在屏幕上看不到光标,才需要执行此操作。

然而,添加这个并稍后删除它来测试没有它的东西并没有什么问题:

WLR_NO_HARDWARE_CURSORS=1

须知:您可以使用我们的指南修复 Fedora 中的 Wayland GDM 问题。

2. (Arch Linux) 构建您的 Init Ramdisk

大多数流行的发行版都会使用“初始 ramdisk”(initramfs) 启动,它将临时文件系统加载到 RAM 中(因此称为“ramdisk”),以初始化启动过程并准备内核发挥其魔力,让您启动并启动跑步。

在这个初始 ramdisk 中,我们必须加载 Nvidia 的各种组件,包括在内核中加载显示分辨率的方法。这很重要,因为 Wayland 简化了帧缓冲区并更接近内核进行通信。

在 Ubuntu 和 Fedora 等流行发行版中,Nvidia 不应该遇到问题,因为系统的设置方式已经使 initramfs 不再区分它加载的模块。然而,Arch 的模块化结构将要求手动加载特定模块。

这个过程并不像听起来那么令人生畏。只需仔细执行以下步骤:

  1. 编辑您的初始 ramdisk 配置(确保首先创建备份):
sudo nano /etc/mkinitcpio.conf
  1. 在 MODULES=() 行下的括号之间添加以下内容:
nvidia nvidia_modeset nvidia_uvm nvidia_drm

如果括号之间已经包含此处未列出的其他模块,请将这些模块附加到末尾。如果您已经看到随附的一些 Nvidia 模块,请添加列表中缺少的内容。

  1. 为所有 initramfs 映像重新生成初始 ramdisk(这就是 -P 标志的用途):
sudo mkinitcpio -P

您应该会看到大量有关“缺少固件”的可怕警告。忽略那些。这种情况通常会发生,无需担心。这仅在您无法使用的硬件缺少固件包的特殊情况下才有用。

提示:某些游戏可能会使您的处理器超负荷,但您可以快速修复 Linux 中的高 CPU 使用率。

3.启用直接渲染管理器

Linux 的直接渲染管理器 (DRM) 允许内核与 GPU 一起工作。为了让 Nvidia 和 Wayland 和谐相处,我们必须确保内核在引导加载程序的内核参数中使用 Nvidia 的 DRM 模式设置:

  1. 编辑默认的 GRUB 配置(再次强调,始终确保存在备份):
sudo nano /etc/default/grub
  1. 查找以 GRUB_CMDLINE_LINUX_DEFAULT 开头的行。如果它不存在(例如,Fedora 中不存在),请创建它,如下所示:GRUB_CMDLINE_LINUX_DEFAULT=""。
  2. 在引号内添加以下内容:
nvidia-drm.modeset=1

  1. 更新 Grub 的配置:

在基于 Ubuntu/Debian/Mint 的所有内容中:

sudo update-grub

在 Fedora/RHEL 中:

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

一切都基于 Arch:

sudo grub-mkconfig -o /boot/grub/grub.cfg

一切完成后,您的系统将更轻松地在 Nvidia 硬件上运行 Wayland!

后续步骤: 现在 Wayland 可以工作了,您可以对显卡进行压力测试。

您的发行版上的 Wayland 支持

在 Ubuntu、Fedora 和其他一些精选发行版中,一旦升级到最新版本的软件,您就可以让 Wayland 在 Nvidia 显卡上工作。自 22.04 版本以来,Ubuntu 一直将 Wayland 作为其修改后的 GNOME 桌面的默认会话,而 Fedora 这样做的时间比这要长得多。考虑确保您运行的是最新版本的发行版。

其他的,比如 Linux Mint,在运行 Wayland 时会遇到麻烦,因为检修它们附带的桌面环境并不是优先考虑的事情。但是,这并不能阻止您安装替代操作系统。 GNOME 提供开箱即用的支持,而 KDE Plasma 可能需要额外的软件包。

基于 Debian/基于 Ubuntu 的系统

如果您的系统运行的是 GNOME,那么只要您保持最新状态,它就已经支持 Wayland。如果您没有 GNOME,请安装它:

sudo apt install gnome

对于 KDE Plasma,您必须分别安装桌面环境和 Wayland 合成器:

sudo apt install kde-standard plasma-workspace-wayland

就是这样!重新启动后,您就可以在显示管理器中使用 Wayland。

基于 Arch 的系统

与提供 GNOME 桌面环境的任何其他发行版一样,将其安装在 Arch Linux 上将自动支持 Wayland:

sudo pacman -S gnome

安装 KDE Plasma 也相当简单:

sudo pacman -S plasma-meta plasma-wayland-session

这些命令中的任何一个都会将 Wayland 包含在您的显示管理器中(更熟悉的是登录屏幕)。

请务必安装 XWayland:

sudo pacman -S xorg-xwayland

安装完所有内容后,重新启动,然后使用登录屏幕选择所安装的桌面环境的 Wayland 支持版本。

经常问的问题

韦兰真的值得吗?

您可能会注意到,即使进行了所有这些更改,有些功能也无法正常工作。尽管 Nvidia 的许多问题已得到解决,但许多应用程序仍然存在与 Wayland 相关的小而烦人的兼容性问题。值得注意的是,Wayland 和您熟悉的许多应用程序都在持续积极开发中。大多数(如果不是全部)这些问题最终都会消失。

如果您对 Wayland 感到太沮丧,请切换回 X。不过,我建议不要卸载您的 Wayland 软件包,因为 X 正被越来越多的应用程序开发人员视为废弃软件。千载难逢,检查一下您的问题是否已经开始消失。

如果我的显示管理器不显示 Wayland 选项,我该怎么办?

尽管大多数显示管理器应该显示您最喜欢的桌面环境的 Wayland 协议实现,但这并不总是发生。解决此问题的方法是尝试另一个显示管理器。 KDE Plasma (SDDM) 和 GNOME (GDM) 附带的版本可以毫无问题地运行。 LightDM 也以工作完美而闻名。

图片来源:Pixabay。所有屏幕截图均由 Miguel Gomez 制作。

相关文章