如何在没有始终连接监视器的情况下实现对同一 X 会话的本地和远程访问?

如何在没有始终连接监视器的情况下实现对同一 X 会话的本地和远程访问?

在 Ubuntu 20.04 上,我有一个带有集成 GPU(带有 Radeon Vega 8 的 Ryzen 3 3200G)的 AMD 系统,并且希望能够通过以下方式访问现有的正在运行的 X 会话(无论用户是否登录):

  1. 有时需要通过 HDMI 连接显示器
  2. 通过 Windows 10 进行远程控制

Ubuntu 的内置远程桌面 ( vino) 在用户登录之前不会运行,因此不可行。因此我研究了如何在 Windows 上启用XDMCPgdm直接使用它。摆弄了一段时间后,我意识到/记得 a) XDMCP 在 Windows 上的支持很差,b) 速度很慢,c) 不安全

我还尝试使用x11vncXephyrXnest(后两者使用 Windows X Server)绑定到gdm登录 X 会话。这些都不起作用,我怀疑原因是gdm的登录实现做了一件疯狂的事情,它使用一个 X 显示器进行登录,登录后使用另一个。在这个答案。但这很麻烦,所以我决定切换到lightdm没有这个问题的。

x11vnc只要插入显示器,就可以使用 VNC 客户端通过 SSH 连接到现有的 lightdm/X 会话来远程正常工作。甚至不需要启用 XDMCP。

但后来我发现,当没有连接显示器时,虽然 X 启动在启动时工作正常,我可以进入登录屏幕并登录,但之后我会看到空桌面,没有菜单栏,也没有菜单/图标(但 Focal Fossa 背景可见)。顺便说一句,大多数时候我使用 XDMCP 和 gdm 时也遇到同样的行为,但这是由于它在登录后切换 X 显示所致。

我该如何解决这个问题?我知道我可以使用xserver-xorg-video-dummy并且可以工作,但是即使我的 Xorg 配置中有两个驱动程序(设备),我也无法让本地/物理监视器同时工作。

我意识到我可以买或者做一个假显示器 HDMI 假连接器但没有软件可以解决这个问题吗?

amdgpu驱动程序有一个名为的模块选项virtual_display,但它会禁用所有物理显示器。我也尝试了evdi(evdi-dkms) 虚拟监视器包,但似乎没有解决这个问题。

我不喜欢使用nomachine/nxx2go因为每个操作系统都没有很多客户端选项。 Xpra行为方式与 x11vnc 相同。


编辑:好的,实际上我认为我已经将问题缩小到与相关的某些内容gnome/mutter,因为它不会发生在例如fvwm 换句话说,如果我刚启动 X 并运行 fvwm,它将通过 x11vnc 远程工作,而无需任何特殊的 X 配置或使用虚拟驱动程序。

此外Gnome Flashback(通过软件包安装gnome-session-flashback并使用登录屏幕上的齿轮状图标进行选择)在登录后也可以正常工作,但“设置”应用程序有时会崩溃。它用作metacity窗口管理器。

相关内容