Ubuntu双GPU三显示器X Server跨GPU组合单屏幕问题求助
搞定Ubuntu X Server多GPU多显示器合并为单一桌面的问题
兄弟,我太懂你这种折腾半天,鼠标能过去但窗口拖不动、屏幕黑着的憋屈了!咱们一步步来解决这个问题:
先搞清楚当前的问题根源
你现在的情况是X Server看似把三个显示器拼成了一个大桌面,但实际上第二个GPU上的第三台显示器只是被“映射”了鼠标区域,并没有真正纳入X的渲染体系——所以才会出现光标变X、窗口拖不进去、背景黑的情况。核心问题是两个GPU没被正确关联到同一个X Screen,或者第二个GPU的输出没被初始化。
分步解决,先临时测试再永久配置
1. 先确认你的GPU和显示器连接
先跑两个命令摸清硬件情况:
lspci | grep -E 'VGA|3D' # 查看两个GPU的型号和PCI总线ID xrandr --listproviders # 查看X识别到的GPU提供者ID,比如Provider 0(主GPU)和Provider 1(副GPU)
把xrandr输出里的Provider ID记下来,后面要用。
2. 用RandR临时桥接GPU(先不改配置文件,快速验证)
先切换到tty终端(按Ctrl+Alt+F3),登录后关掉当前桌面服务:
sudo systemctl stop display-manager
然后执行桥接命令(把Provider 1换成你刚才查到的副GPU ID):
xrandr --setprovideroutputsource 1 0 xrandr --auto
再启动桌面服务:
sudo systemctl start display-manager
回到桌面后试试拖窗口到第三台显示器,如果能正常用,说明这个方法可行,接下来把它做成永久配置。
3. 修改xorg.conf永久生效
如果临时测试成功,咱们修改/etc/X11/xorg.conf来固化配置:
第一步:调整ServerLayout段
确保你的ServerLayout包含两个Screen,并且开启Xinerama:
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 Screen 1 "Screen1" RightOf "Screen0" # 这里可以改成你想要的位置,比如Below、LeftOf InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Option "Xinerama" "on" # 必须开这个才能让X把多个Screen合并成一个桌面 EndSection
第二步:添加副GPU的Device和Screen段
根据你lspci查到的副GPU信息,添加以下内容(如果是NVIDIA GPU,驱动用nvidia;如果是Intel/AMD,对应换成modesetting/amdgpu):
Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "你的副GPU型号" # 比如GeForce GTX 1660 BusID "PCI:1:0:0" # 从lspci结果里找,比如01:00.0,写成PCI:1:0:0 EndSection Section "Screen" Identifier "Screen1" Device "Device1" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1920x1080" # 换成你第三台显示器的分辨率 EndSubSection EndSection
4. 修复光标和窗口拖拽的遗留问题
如果做完上面的步骤还是有问题,试试这几招:
- 重启窗口管理器:GNOME的话按
Alt+F2输入r回车;KDE的话找“重启KWin”选项 - 去系统设置的显示器页面,确认三个显示器都设置为“扩展桌面”,没有设成镜像或单独屏幕
- 打开
nvidia-settings,在“X Server Display Configuration”里把三个显示器拖成你想要的布局,然后点“Save to X Configuration File”覆盖原来的xorg.conf,这样更直观
几个要避开的坑
- 别用Wayland!登录界面右下角点齿轮,选“Ubuntu on Xorg”,Wayland对多GPU的支持还不如Xorg成熟
- 两个GPU的驱动版本要一致!如果是NVIDIA,别一个装最新版一个装旧版,会出各种兼容性问题
- 如果是集成+独立显卡的组合,别乱开PRIME同步,先确保基础的扩展桌面能用再折腾PRIME
内容的提问来源于stack exchange,提问作者Nulik




