安装NVIDIA私有驱动后GNOME无法使用Wayland会话

笔记

在安装NVIDIA的专有驱动并重启后,发现GNOME登录后进入的会话为X11,因为刚一登录的时候鼠标指针是一个X,以及触控板的三指操作和在Firefox里的操作失效了,再加上我用的Qt程序的外观自己与我系统主题统一了。按照我的配置文件,它应该要使用Wayland会话登录,而这个应该是X11的表现。

这是我在 Debian 上遇到的问题记录,不适用于所有发行版和显卡驱动版本。Debian Wiki 说明,GDM 在使用 NVIDIA 专有驱动时可能因稳定性原因回退到 X11;Debian 12 的 GDM 规则还提供了禁用 Wayland 的规则。强制启用 Wayland 有风险,请先确认发行版、GDM 版本和当前规则,再决定是否继续。

在Debian的Wiki中,我们可以看到在Wayland页面上有这样一句话:

GDM (GNOME Display Manager) will automatically use Wayland when supported, except when using the proprietary NVIDIA driver, in which case it will fall back to X11 due to instability. 

也就是说,GDM确实是默认支持Wayland的,但是如果使用NVIDIA的专有驱动,它就会变回X11。所以登录界面右下角的齿轮里只有使用X11的GNOME和GNOME Classic。

如果需要在安装NVIDIA专有驱动后为GDM启用Wayland,需要如此操作:

设置DRM内核模式

参考:https://wiki.archlinux.org/title/NVIDIA#DRM_kernel_mode_setting

流程:

请在终端中执行以下命令以检查 nvidia_drm 的状态

cat /sys/module/nvidia_drm/parameters/modeset

如果输出的是Y,则不需要进行此操作。如果是N,则需要进行如下操作。

编辑 /etc/default/grub ,在 GRUB_CMDLINE_LINUX_DEFAULT 这一项参数的末尾加上一个空格,然后加上这个参数:

nvidia_drm.modeset=1

然后执行以下命令以跟更新启动的配置文件

sudo update-grub

之后,重启电脑,检查nvidia_drm的状态,如果输出为Y则可以进行下一步操作

禁用规则

参考:https://wiki.archlinux.org/title/GDM#Wayland_and_the_proprietary_NVIDIA_driver

只有在确认 GDM 的规则阻止 Wayland、并愿意承担不稳定风险时,才考虑此覆盖。Debian 文档明确将这种做法标为“自行承担风险”。先确认 /etc/udev/rules.d/61-gdm.rules 不存在;该命令会让本地规则覆盖系统规则:

sudo ln -s /dev/null /etc/udev/rules.d/61-gdm.rules

这个链接会覆盖系统中的 GDM udev 规则。只在你主动选择后执行;不要删除或修改系统自带规则。

如果需要撤销,只删除自己创建的这个链接,然后重启:

sudo rm /etc/udev/rules.d/61-gdm.rules

完成之后重启并检查结果。如果遇到黑屏或登录问题,使用 TTY 恢复设置。更多背景见 Debian GDM 文档 和 Debian Wayland 文档。

验证

打开终端,执行

echo $XDG_SESSION_TYPE

将会输出当前的会话类型。