向日葵连接 Ubuntu 22.04 无显示器黑屏


问题描述: 服务器或工控机在不连接物理显示器的情况下,使用向日葵远程桌面无法正常显示桌面。
问题分析
Xorg 依赖物理显示器
Xorg 设计时通常依赖物理显示器来初始化和正常运行。没有连接显示器,Xorg 可能无法正确初始化图形输出,进而导致向日葵远程桌面无法获取有效的图形数据来进行远程显示。
解决方案
1. 安装虚拟显示设备
可以通过安装和配置虚拟显示设备,让 Xorg 以为有显示器连接。以 xrandr 和 xserver-xorg-video-dummy 为例:
安装 xserver-xorg-video-dummy
sudo apt-get install xserver-xorg-video-dummy
2. 查看显卡信息
使用 lspci 命令列出系统中所有的 PCI 设备,包括显卡。打开终端,输入以下命令:
lspci | grep -i vga
输出示例
tyz@tyz-desktop:~$ lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation CometLake-S GT2 [UHD Graphics 630] (rev 05)
tyz@tyz-desktop:~$
# Intel UHD Graphics 630 显卡信息
3. 创建 Xorg 配置文件
基于显卡信息创建 /etc/X11/xorg.conf 文件。请注意,在修改配置文件之前,建议备份原有的 xorg.conf 文件,以防出现问题可以恢复。
sudo cp /etc/X11/xorg.conf ~/xorg.conf.backup
以下是一个基于 Intel UHD Graphics 630 显卡信息,同时支持真实显示器和虚拟显示器的 /etc/X11/xorg.conf 文件示例:
# 真实显示器的配置
Section "Monitor"
Identifier "RealMonitor"
# 根据你的显示器实际支持的分辨率和刷新率调整
Option "PreferredMode" "1920x1080"
HorizSync 28.0 - 80.0
VertRefresh 48.0 - 75.0
EndSection
Section "Device"
Identifier "RealDevice"
Driver "intel"
# 可以根据需要添加其他选项,如加速选项等
Option "AccelMethod" "sna"
EndSection
Section "Screen"
Identifier "RealScreen"
Device "RealDevice"
Monitor "RealMonitor"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080"
EndSubSection
EndSection
# 虚拟显示器的配置
Section "Monitor"
Identifier "DummyMonitor"
HorizSync 28.0 - 80.0
VertRefresh 48.0 - 75.0
# 为虚拟显示器定义一个模式行
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
EndSection
Section "Device"
Identifier "DummyDevice"
Driver "dummy"
# 虚拟显存大小,可根据需要调整
VideoRam 256000
EndSection
Section "Screen"
Identifier "DummyScreen"
Device "DummyDevice"
Monitor "DummyMonitor"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080_60.00"
EndSubSection
EndSection
# 组合屏幕配置
Section "ServerLayout"
Identifier "MultiScreenLayout"
# 主屏幕为真实屏幕,位置在左上角 (0, 0)
Screen 0 "RealScreen" 0 0
# 虚拟屏幕在真实屏幕右侧
Screen 1 "DummyScreen" RightOf "RealScreen"
# 禁用 Xinerama,使用 RandR 进行多屏幕管理
Option "Xinerama" "0"
EndSection


