ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Ubuntu下配置Xorg虚拟显示屏幕的完整教程

Ubuntu下配置Xorg虚拟显示屏幕的完整教程

1. Ubuntu下配置虚拟显示屏幕的完整指南

最近在折腾一个自动化测试环境,需要在没有物理显示器的Ubuntu服务器上运行图形化应用。经过一番摸索,发现通过Xorg的dummy驱动创建虚拟显示屏幕是个完美的解决方案。今天就把这套配置方法整理出来,分享给有同样需求的开发者。

虚拟显示的核心原理是通过软件模拟显示设备,让系统认为连接了真实的显示器。这在以下场景特别有用:

  • 服务器环境运行需要GUI的自动化测试
  • 远程开发时运行IDE等图形软件
  • 在虚拟机中调试图形应用
  • 需要多显示器环境但物理接口不足时

我测试的环境是Ubuntu 22.04 LTS,但方法同样适用于20.04/24.04等版本。下面就从驱动安装到配置优化的完整流程,带大家一步步实现这个功能。

2. 环境准备与依赖安装

2.1 系统基础检查

首先确认系统已经安装Xorg服务:

which Xorg

如果没有输出,需要先安装Xserver:

sudo apt update sudo apt install xserver-xorg-core xserver-xorg-video-dummy

2.2 验证内核模块

检查系统是否加载了drm内核模块:

lsmod | grep drm

正常应该看到drm和ttm等模块。如果没有,需要手动加载:

sudo modprobe drm sudo modprobe ttm

3. Xorg配置详解

3.1 创建配置文件

在/usr/share/X11/xorg.conf.d/目录下新建配置文件:

sudo nano /usr/share/X11/xorg.conf.d/10-dummy.conf

写入以下内容(这是一个支持1920x1080分辨率的配置):

Section "Device" Identifier "DummyDevice" Driver "dummy" VideoRam 256000 EndSection Section "Monitor" Identifier "DummyMonitor" HorizSync 31.5-48.5 VertRefresh 50-70 EndSection Section "Screen" Identifier "DummyScreen" Device "DummyDevice" Monitor "DummyMonitor" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1920x1080" EndSubSection EndSection

3.2 关键参数解析

  • VideoRam:设置显存大小,单位KB
  • HorizSync/VertRefresh:显示器同步频率范围
  • Modes:支持的分辨率,可添加多个如"1920x1080" "1280x720"

提示:如果后续需要修改分辨率,记得同时调整VideoRam值,计算公式为:宽度×高度×4×2(例如1080p需要1920×1080×4×2≈16MB)

4. 服务启动与验证

4.1 启动虚拟显示器

使用以下命令启动Xorg服务:

Xorg :1 -config /usr/share/X11/xorg.conf.d/10-dummy.conf

这里的:1表示显示编号,避免与已有显示冲突。

4.2 环境变量配置

在新终端中设置DISPLAY变量:

export DISPLAY=:1

可以添加到~/.bashrc实现永久生效。

4.3 功能验证

安装一个小型GUI程序测试:

sudo apt install x11-apps xeyes

如果看到眼睛窗口,说明虚拟显示工作正常。

5. 高级配置技巧

5.1 多显示器模拟

在配置文件中添加多个Display子段可以实现多屏:

SubSection "Display" Depth 24 Modes "1920x1080" Virtual 3840 1080 # 水平双屏 EndSubSection

5.2 开机自启动

创建systemd服务实现开机自启:

sudo nano /etc/systemd/system/xorg-dummy.service

内容如下:

[Unit] Description=Xorg Dummy Display After=network.target [Service] ExecStart=/usr/bin/Xorg :1 -config /usr/share/X11/xorg.conf.d/10-dummy.conf -keeptty -novtswitch -sharevts -noreset [Install] WantedBy=multi-user.target

然后启用服务:

sudo systemctl enable --now xorg-dummy.service

6. 常见问题排查

6.1 启动报错排查

如果Xorg启动失败,检查日志:

cat /var/log/Xorg.1.log | grep -i error

常见错误及解决方案:

  1. Fatal server error: no screens found

    • 检查配置文件路径是否正确
    • 确认xserver-xorg-video-dummy已安装
  2. Could not init font path element

    • 安装字体包:
      sudo apt install xfonts-base xfonts-utils

6.2 性能优化建议

  • 对于自动化测试场景,可以降低分辨率和色深减少资源占用
  • 如果出现卡顿,尝试增加VideoRam值
  • 在虚拟机中使用时,确保分配了足够的显存

7. 实际应用案例

7.1 自动化测试环境

在CI/CD流程中,通过虚拟显示运行浏览器自动化测试:

export DISPLAY=:1 xvfb-run --server-args="-screen 0 1920x1080x24" python test_script.py

7.2 远程开发配置

配合VSCode远程开发时,启动GUI应用:

code --user-data-dir=/path/to/config --disable-gpu

我在实际使用中发现,这套方案比传统的XVFB更稳定,特别是需要OpenGL加速的场景。一个实用的技巧是在配置中添加多个分辨率选项,这样应用程序可以根据需要动态切换:

Modes "2560x1440" "1920x1080" "1280x720"
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进