跳到主要内容
版本:FCP 24.08

Linux远程桌面组件

提示

远程桌面服务组件仅支持基于X Display Server的桌面系统, 对于Wayland, 目前尚不支持.
此外, 目前仅支持VNC远程桌面协议.

组件类别

一个完整的且带有远程桌面的Linux Desktop由如下几类组件构成.

类别面向的目标提供的功能出现问题造成的影响常见组件
远程桌面终端用户远程桌面交互及会话管理用户无法通过远程桌面功能VNC Server, Xrdp
终端应用终端用户通过界面交互完成应用的特定功能用户无法使用终端应用Firefox, Chromium, Thunderbird
桌面环境/窗口管理器终端用户管理终端图形应用无法使用, Window Management(窗口管理): , 例如: 拖拽, 最小化, 最大化. Dock栏, App Indicator(应用程序角标), App Launcher(应用启动器)常见的Window Manageri3wm dwm, 常见的Desktop EnvironmentXfce 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 Server
  • VNC Server
  • X Client

X server初始化

通过Xtigervnc实现X server的初始化.

Xtigervnc是一个X server, 它虚拟出了物理屏幕, 这意味着在没有物理屏幕的情况下也能够输出. 图形应用作为其客户端其图形输出都将显示在这个虚拟屏幕上.
此外, 它也是一个VNC Server, 负责和VNC Client之间进行通信VNC Client来完成会话的访问以及图形界面的渲染.

X Client初始化

通过xstartup脚本负责X Client的初始化.

内部会调用xinit来启动X Client.

这里的要启动的X Client包括桌面管理组件, 因为它是面向最终用户的入口, 用户通过它启动终端应用组件.
xinit是一个脚本负责X Client的初始化.
不同的发行版启动的方式不同, 但入口是一致是/etc/X11/xinit/xinitrc

CentOS (6.9, 7.5)

对于CentOS, 其内部委托/etc/X11/xinit/Xclients进行初始化

其仅对GNOME KDE提供了支持.
这意味者在安装了这两个桌面后, 不需要修改配置文件即可使用VNC远程桌面.
如果需要使用其他桌面, 则需要手动配置此文件, 将PREFERRED变量修改为对应桌面的完整二进制文件的路径.

i3wm为例, 参考以下命令修改配置文件

sudo sed -i 's/^PREFERRED=.*$/PREFERRED=$(type -p i3)/' /etc/X11/xinit/Xclients

Ubuntu (18.04, 20.04, 22.04)

对于Ubuntu, 其内部委托/etc/X11/Xsession进行初始化, 并通过/etc/X11/Xsession.d/目录下的脚本进行初始化.

最终启动/etc/alternatives/x-session-manager来启动桌面, 此文件是一个软链接, 可以通过以下命令检查此软链接的指向

readlink /etc/alternatives/x-session-manager
# 例如 /usr/bin/gnome-session

在安装完桌面后, 请确保/etc/alternatives/x-session-manager指向了正确的桌面启动脚本.
如果发现启动的桌面不是期望的, 则需要手动修改此软链接.

xfce4为例, 参考以下命令修改配置文件

sudo rm /etc/alternatives/x-session-manager
sudo ln -s /usr/bin/startxfce4 /etc/alternatives/x-session-manager