欢迎,来自IP地址为:18.97.14.90 的朋友
与 Linux 相关的文章、新闻以及讨论中,经常会出现 Display Server (显示服务器)、Xorg 和 Wayland 等字眼,本文将仔细讲一讲 Linux 的显示服务器。
什么是 Display Server
Display Server 实际上是一种应用程序,可以响应客户端的输入并将相应的输出结果返回给客户端,这种请求与响应往返于不同操作系统和硬之间。得益于 Display Server,用户才可以方便的使用 GUI 界面,否则 Linux 用户将不得不停留在命令行界面。
显示服务器同客户端使用 display server 协议通信,比如 X11。同时,显示服务器是所有图形用户界面的关键组件,特别是视窗类环境时更为明显。
注意不要把显示服务器同桌面环境(desktop environment)混为一谈,因为桌面环境只是应用显示服务器的一种方式。
感觉好像明白了,但是又不是很清楚,让我们仔细的讲解一下。
Linux 的显示服务器通信协议
目前 Linux 系统常用的显示服务器通信协议有三种,分别是 X11、Wayland 和 Mir,下将对这些协议进行简要说明。
X11
X11 是最为经典的显示服务器协议,已经产生多年,是众多 Linux 发行版常用的显示服务器。
图.1 X11 架构
X11 通信协议使用 X.org Server 协议,它从设备驱动程序接收输入事件,并使它们可以显示到客户端之一。
显示服务器还可以从其客户端接收数据,由它完成处理数据并进行合成。在 Linux 系统,显示服务器将数据传递到三个内核组件之一:DRM、gem 或 KMS 驱动程序。
X.Org 服务器是一种显示服务器,它依赖于另一个程序(合成窗口管理器)来进行合成。典型的合成管理器包括Mutter 或 KWin。而最为流行的 GNOME 就使用了Mutter。
Wayland
根据其网站介绍,Wayland 被宣传成”旨在作为X的更简单替代品,易于开发和维护”的产品。
事实也正是如此,Wayland 是一种现代的显示服务器,可以代替传统的 X 显示服务器。
但是 Wayland 的推广正在进行中,Ubuntu 尝试切换到 Wayland 作为17.10 版的默认显示服务器,但这次尝试得到了负面反馈,因为许多 GUI 应用程序及其框架都依赖于X服务器,这些应用程序在 Wayland 上无法正常工作。这迫使Ubuntu 将 X 保留为默认显示服务器。虽然仍然提供使用 Wayland 的选项,但不再是默认设置。
即使在今天,绝大多数发行版仍默认使用 X 显示服务器。
图.2 Wayland 架构
实现 Wayland 显示服务器协议的显示服务器称为 Wayland 合成器。与 X11 一样,Wayland合成器不仅负责为其客户处理输入和输出,不同之处在于,Wayland 还负责窗口合成。
Wayland 的一些合成器包括 Weston、Mutter、KWin 以及 Enlightenment。
Mir
Mir 显示服务器带有自己的 Mir 显示服务器协议,该协议不同于 X11 和 Wayland 使用的协议。它由Canonical开发,是Unity开发的一部分,旨在成为Ubuntu的首选显示服务器。
截至2017年,尽管 Mir 对物联网(IoT)应用程序的开发仍在继续,但已被用于桌面版 Ubuntu 的 Wayland 显示服务器所取代。
为何还在使用 Xorg
与 Xorg 相比,Wayland 相对较新,而且还不是很稳定。为了与显示服务器进行通信,充当客户端的程序必须知道如何执行此操作,因此,使用 Wayland 时许多程序可能无法运行。
Ubuntu 的默认切换为 Wayland 实验证实了这一点。