Linux远程桌面组件
tip
远程桌面服务组件仅支持基于X Display Server的桌面系统, 对于Wayland, 目前尚不支持.
此外, 目前仅支持VNC远程桌面协议.
组件类别
一个完整的且带有远程桌面的Linux Desktop由如下几类组件构成.
| 类别 | 面向的目标 | 提供的功能 | 出现问题造成的影响 | 常见组件 |
|---|---|---|---|---|
| 远程桌面 | 终端用户 | 远程桌面交互及会话管理 | 用户无法通过远程桌面功能 | VNC Server, Xrdp |
| 终端应用 | 终端用户 | 通过界面交互完成应用的特定功能 | 用户无法使用终端应用 | Firefox, Chromium, Thunderbird |
| 桌面环境/窗口管理器 | 终端用户 | 管理终端图形应用 | 无法使用, Window Management(窗口管理): , 例如: 拖拽, 最小化, 最大化. Dock栏, App Indicator(应用程序角标), App Launcher(应用启动器) | 常见的Window Manager有 i3wm dwm, 常见的Desktop Environment有Xfce KDE Plasma GNOME Cinnamon |
| Display Backend | 上层图形应用程序 | 提供了一系列接口用于支撑上层图形应用程序完成图形的渲染以及输入设备(键盘, 鼠标)事件的接受及响应 | 此类组件的问题会导致上层图形应用程序无法正常工作 | Xorg Wayland XWayland |
| 硬件访问 | 上层Display Server | 提供了一组接口用于抽象和硬件之间的交互 | 物理设备无法按照预期工作 | Input Drivers framebuffer (fbdev) Direct Rendering Manager(DRM) |
VNC定制化
通过vncserver服务提供 的vncserver命令, 启动一个远程桌面会话.
平台对于vncserver进行了一些定制化的扩展, 例如
- 会话隔离: 默认情况下,
VNC会话文件在用户的HOME目录下, 如果用户的HOME目录是在共享存储中, 这样会导致多个节点之间共享同一个VNC会话并导致会话冲突.
为了确保每个节点的vnc会话是隔离的, 平台对vncserver进行了定制化扩展 - 高分辨率支持: 默认情况下,
VNC会话分辨率较低, 为了能够支持更高的分辨率要求, 平台对vncserver进行了定制化扩展
VNC初始化流程
通过
vncserver完成远程桌面会话的初始化流程.
一个完整的远程桌面会话包含:
X ServerVNC ServerX Client
X server初始化
通过
Xtigervnc实现X server的初始化.
Xtigervnc是一个X server, 它虚拟出了物理屏幕, 这意味着在没有物理屏幕的情况下也能够输出. 图形应用作为其客户端其图形输出都将显示在这个虚拟屏幕上.
此外, 它也是一个VNC Server, 负责和VNC Client之间进行通信VNC Client来完成会话的访问以及图形界面的渲染.