首页>教程>FreeBSD 教程> 使用 Wayland >FreeBSD 安装配置 Wayland

FreeBSD 安装配置 Wayland

Wayland 是一套通信协议,可以替代 Xorg 显示服务器,它只负责在客户端(应用程序)和合成器之间通信,与 Xorg 存在多方面的差异:

  • 架构简化:Wayland 仅作为客户端与合成器之间的通信中介,不包含窗口管理器(对应 X 服务器);而 Xorg 包含 X11 显示协议,以及用于接收连接、渲染窗口的 X 服务器。
  • 协议独立性:在 Wayland 架构中,显示服务由合成器或窗口管理器独立提供,不再需要 X 服务器。
  • 远程访问差异:Wayland 无远程连接方式,需通过 VNC、RDP 等协议实现远程桌面。

Wayland 技术相对较新,部分软件尚未完成适配,这样就需要使用 Xwayland 兼容层运行 X11的应用。

FreeBSD 硬件兼容说明

  • NVIDIA 显卡:当前版本的 NVIDIA 专有驱动已可适配多数基于 wlroots 的合成器,但部分功能稳定性仍待优化,部分高级特性暂不支持。
  • 开源驱动:基于 graphics/drm-kmod 的开源显卡驱动,可完美兼容本章提及的所有 Wayland 合成器。
  • 软件兼容性:多数主流软件(如 Firefox 浏览器)可在 Wayland 环境下稳定运行;同时已有多款成熟的 Wayland 合成器可供选择。
  • Plasma 桌面:自 2021 年 5 月起,plasma5-kwin 已支持在 FreeBSD 上运行 Wayland 会话。启动命令为:dbus-launch --exit-with-x11 ck-launch-session startplasma-wayland

安装配置 Wayland

在如下的内容中将讲述 Wayland 的运行要求,以及如何安装 Wayland,以及如何配置 Wayland。

内核驱动要求

Wayland 合成器的绑定功能,均依赖内核中的 evdev 驱动。FreeBSD 的 GENERIC 内核默认内置了该驱动,所以无需额外的配置。如果你使用的自定义内核模块中移除了对 evdev 驱动的支持,则需要手动加载 evdev 内核模块,才能使 Wayland 正常运行。

配置用户组权限

运行 Wayland 的用户必须加入 video 用户组中,才能够访问显卡。

使用如下命令把用户添加到 video 组中:

sudo pw groupmod video -m [你的用户名]

注:在配置显卡时,很有可能你已经做了该配置。

安装 Wayland

Wayland 安装起来非常的简单,只需安装 wayland 软件包。

但是该软件包依赖 seatd 服务,seatd 服务的作用为非 root 用户提供共享设备(如显卡、输入设备)的访问权限,因此最好提前安装 seatd 软件包,避免后续出现问题。

使用如下命令安装软件包:

sudo pkg install wayland seatd

配置运行时目录

Wayland 的合成器需要依赖 XDG_RUNTIME_DIR 环境变量指定运行时目录。自从 FreeBSD 14.1 开始,系统会自动创建该目录,无需手动创建;如果你使用的是之前的版本,则需要手动配置。

运行如下命令手动配置运行时目录:

export XDG_RUNTIME_DIR=/var/run/user/`id -u`

注意:多数的合成器会优先读取 XDG_RUNTIME_DIR 中的配置文件,因此建议在文件中定义一个变量指向 ~/.config 目录下的配置文件,以实现临时文件与配置文件的分离。同时建议为每个合成器定义一个别名,可以为合成器指定不同的配置文件。

ZFS 用户特殊处理

部分 ZFS 文件系统的用户可能遇到 Wayland 客户端无法正常运行的问题,原因是部分客户端需要调用 posix_fallocate() 函数。将 /var/run 目录挂载为 tmpfs 文件系统可以规避此风险。

永久挂载文件系统

编辑文件 /etc/fstab

sudo vi /etc/fstab

在文件尾部的单独一行内添加如下内容:

tmpfs /var/run tmpfs rw 0 0

临时挂载文件系统

使用 mount 命令临时挂载文件系统:

sudo mount -t tmpfs tmpfs /var/run

注:同时也要确保 XDG_RUNTIME_DIR 指向 /var/run/user/$UID 目录。

启用 seatd 服务

seatd 守护进程的功能是为非 root 用户提供共享设备访问权限,是 Wayland 合成器的必须使用的服务,因此需要开机自启动该服务。

使用如下命令使 seatd 服务开机自启动:

sudo sysrc seatd_enable="YES"

使用如下命令启动 seatd 服务:

sudo service seatd start

完成了以上的配置后,就可以安装具体的 Wayland 合成器,以及相应的卓面环境,就可以使用图形用户界面啦。

Gnome 的 Wayland 合成器是 Mutter,在安装 gnome 时作为依赖被自动安装。

KDE Plasma 的 Wayland 合成器是 KWin,在安装 Plasma 时作为依赖被自动安装。