[Feedback on issues] 搭建xrdp后端挂上xorg后,登陆黑屏
Tofloor
poster avatar
慕容风
deepin
2025-05-20 20:44
Author

一、 背景与目标:

  • 系统环境: Deepin V25 (使用了 ostree 和 OverlayFS 保护 /usr 目录,导致其默认为只读)。

  • 目标: 通过 Windows RDP 客户端远程连接到 Deepin V25 Alpha,并使用 Deepin DDE 桌面环境。

  • XRDP 版本:

    • xrdp 0.10.3 (从源码编译并打包成 .deb 安装)
    • xorgxrdp 0.10.4 (从源码编译并打包成 .deb 安装)
  • 初始原因选择编译安装: 由于 Deepin V25 Alpha 是测试版本,其官方仓库中的 xrdp 版本可能存在兼容性问题或版本较旧。为了尝试解决最初遇到的连接问题(包括 xrdp-sesman 的内部错误),并确保使用较新的、可能包含 bug 修复的 xrdp xorgxrdp 版本,决定从官方源码编译并打包安装。这也有助于更好地控制编译选项和安装路径,尤其是在面对 Alpha 系统可能存在的库版本差异或特殊配置时。

二、 已进行的排查与取得的进展:

  • 基础服务和依赖解决

    • 通过编译安装,解决了最初可能存在的 xrdp 版本或系统库兼容性问题。
    • 成功解决了 xrdp-sesman 启动时遇到的 scp_process_msg failed trans_check_wait_objs failed 内部错误,这主要通过确保 xrdp 服务文件路径正确以及所有组件被正确安装实现。
    • 解决了 xorgxrdp 编译时因找不到 xrdp 开发文件 (xrdp.pc, xrdp_client_info.h) 和测试依赖 (check.h, cmocka.h) 导致的问题,通过正确安装 xrdp .deb 包并在 xorgxrdp 打包时声明依赖。
    • 成功构建并安装了 xrdp xorgxrdp .deb 包。
  • 简单桌面环境测试成功

    • /etc/xrdp/startwm.sh 配置为启动一个简单的窗口管理器 (twm &) 和一个终端 (exec xterm) 时,远程连接可以成功,用户能看到一个可交互的 xterm 窗口。这证明了 xrdp **服务、**xrdp-sesman 会话管理、xorgxrdp 驱动以及基本的 X 会话启动流程是正常工作的。
  • 切换到标准会话启动方式

    • /etc/xrdp/startwm.sh 恢复为 xrdp 提供的默认脚本。
    • 在用户家目录下创建 ~/.xsession 文件,内容为 /usr/bin/startdde,以通过标准的 /etc/X11/Xsession 流程启动 DDE。
    • 这种方式下,D-Bus 会话环境等被正确建立。

三、 当前遇到的核心问题:启动 DDE 时黑屏

  • 当通过上述标准方式尝试启动 Deepin DDE 桌面环境时,远程客户端连接后显示为纯黑屏幕**,没有桌面元素(面板、壁纸、图标等)。**
  • 这个问题在多个测试用户账户上均复现。

四、 DDE 相关的关键错误日志 (*~/.xsession-errors*):

Xsession: X session started for vbsa at 2025年 05月 20日 星期二 20:27:14 CST
dbus-update-activation-environment: setting DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus
dbus-update-activation-environment: setting DISPLAY=:23.0
localuser:vbsa being added to access control list
dbus-update-activation-environment: setting SHELL=/bin/bash
dbus-update-activation-environment: setting GTK_IM_MODULE=fcitx
dbus-update-activation-environment: setting LANGUAGE=zh_CN
dbus-update-activation-environment: setting SSH_AUTH_SOCK=/run/user/1001/gnupg/S.gpg-agent.ssh
dbus-update-activation-environment: setting XDG_DATA_HOME=/home/vbsa/.local/share
dbus-update-activation-environment: setting XDG_CONFIG_HOME=/home/vbsa/.config
dbus-update-activation-environment: setting XMODIFIERS=@im=fcitx
dbus-update-activation-environment: setting PWD=/home/vbsa
dbus-update-activation-environment: setting LOGNAME=vbsa
dbus-update-activation-environment: setting XDG_SESSION_TYPE=x11
dbus-update-activation-environment: setting GPG_AGENT_INFO=/run/user/1001/gnupg/S.gpg-agent:0:1
dbus-update-activation-environment: setting IM_CONFIG_CHECK_ENV=1
dbus-update-activation-environment: setting PULSE_SCRIPT=/etc/xrdp/pulse/default.pa
dbus-update-activation-environment: setting HOME=/home/vbsa
dbus-update-activation-environment: setting IM_CONFIG_PHASE=1
dbus-update-activation-environment: setting LANG=zh_CN.UTF-8
dbus-update-activation-environment: setting XRDP_SOCKET_PATH=/run/xrdp/1001
dbus-update-activation-environment: setting XRDP_PULSE_SOURCE_SOCKET=xrdp_chansrv_audio_in_socket_23
dbus-update-activation-environment: setting QTWEBENGINE_DICTIONARIES_PATH=/usr/share/hunspell-bdic/
dbus-update-activation-environment: setting CLUTTER_IM_MODULE=xim
dbus-update-activation-environment: setting XDG_CACHE_HOME=/home/vbsa/.cache
dbus-update-activation-environment: setting SDL_IM_MODULE=fcitx
dbus-update-activation-environment: setting XDG_SESSION_CLASS=user
dbus-update-activation-environment: setting USER=vbsa
dbus-update-activation-environment: setting XRDP_SESSION=339232
dbus-update-activation-environment: setting DISPLAY=:23.0
dbus-update-activation-environment: setting XRDP_PULSE_SINK_SOCKET=xrdp_chansrv_audio_out_socket_23
dbus-update-activation-environment: setting SHLVL=0
dbus-update-activation-environment: setting GSM_SKIP_SSH_AGENT_WORKAROUND=true
dbus-update-activation-environment: setting QT_IM_MODULE=fcitx
dbus-update-activation-environment: setting XDG_RUNTIME_DIR=/run/user/1001
dbus-update-activation-environment: setting XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/linglong/entries/share
dbus-update-activation-environment: setting PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin
dbus-update-activation-environment: setting DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus
dbus-update-activation-environment: setting UID=1001
dbus-update-activation-environment: setting _=/usr/bin/dbus-update-activation-environment
\ndfm_INFO: start main script to mount dlnfs at 2025-05-20 20:27:14.495
dfm_INFO: end main script at 2025-05-20 20:27:14.497

xorg.go:515: get monitor rdp0 std name failed: can not get std name
manager.go:430: Default temperature manual: 3500
manager.go:440: Custom Mode Time: 22:00-7:00
manager.go:450: Custom Mode on: 2
mode.go:154: failed to get current using graphics card pci id
manager.go:794: failed to apply configs: x.Error: 8 (BadMatch), sequence: 33, resource id: 1137, major code: 140 (RANDR), minor code: 7 (SetScreenSize)
manager.go:928: x.Error: 8 (BadMatch), sequence: 33, resource id: 1137, major code: 140 (RANDR), minor code: 7 (SetScreenSize)
manager.go:1092: built-in screen does not exist
main.go:173: systemd-notify --ready
color_temp.go:424: failed to disable redshift.service: exit status 1

希望获得的帮助

目前最新版本25,xrdp访问是否可行,官方能否提供一下配置方法,如果是bug的话能否提供修复计划?

Reply Favorite View the author
All Replies
慕容风
deepin
2025-05-20 20:47
#1
Reply View the author
deepin小助手
Super Moderator
OM
2025-05-21 09:43
#2

建议优先试下仓库版本,尽管比官方版本低,但一般都是有专人编译维护过的。

image.png

Reply View the author
慕容风
deepin
2025-05-21 09:56
#3

仓库版本我试过了,我这边稳定出现这几个问题:

  1. xrdp.log出现错误:

[20250521-09:50:56] [WARN ] Cannot find keymap file /etc/xrdp/km-00000804.ini
[20250521-09:50:56] [INFO ] Loading keymap file /etc/xrdp/km-00000409.ini
[20250521-09:50:56] [WARN ] local keymap file for 0x00000804 found and doesn't match built in keymap, using local keymap file
[20250521-09:51:24] [ERROR] xrdp_sec_recv: xrdp_mcs_recv failed
[20250521-09:51:24] [ERROR] xrdp_rdp_recv: xrdp_sec_recv failed
[20250521-09:51:24] [ERROR] libxrdp_process_data: xrdp_rdp_recv failed
[20250521-09:51:24] [ERROR] xrdp_process_data_in: xrdp_process_loop failed
[20250521-09:51:24] [ERROR] SSL_write: I/O error
[20250521-09:51:24] [ERROR] xrdp_iso_send: trans_write_copy_s failed
[20250521-09:51:24] [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed

  1. xrdp-sesman.log 有错

    [2025-05-21T09:47:35.435+0800] [INFO ] sesman_main_loop: sesman asked to terminate
    [2025-05-21T09:47:35.447+0800] [ERROR] sesexec_main_loop: trans_check_wait_objs failed for ECP transport
    [20250521-09:48:38] [INFO ] starting xrdp-sesman with pid 359333
    [20250521-09:50:29] [INFO ] sesman_main_loop: sesman asked to terminate
    [20250521-09:50:29] [INFO ] starting xrdp-sesman with pid 361148

因为这两个错误的存在导致xrdp无法使用,我是用xterm做了测试 也不行。

因为这样我才自己编译了xrdp的版本并且安装,安装后 xterm 测试可以通,但是startdde 黑屏,详细错误如上。辛苦技术人员指导一下~

Reply View the author
慕容风
deepin
2025-05-21 09:58
#4
Reply View the author
慕容风
deepin
2025-05-21 16:19
#5

测试了下,xfce是可以的。但是dde不行。大概率是dde的问题。这折腾半天,本来想支持国产。。看来还得换ubuntu...

Reply View the author
deepin-superuser
deepin
2025-05-22 16:40
#6

xorg.go:515: get monitor rdp0 std name failed: can not get std name
mode.go:154: failed to get current using graphics card pci id
manager.go:1092: built-in screen does not exist

看这个描述是没获取到屏幕,你把编译好的 deb 包发出来 我虚拟机里边试试行不行

Reply View the author
随机数
deepin
2025-06-05 10:45
#7

基于上述问题,我这里补充一下,这些问题貌似20.9以来都有的。

  1. 连接远程桌面黑屏: 这是因为有其他会话连接住——可能是断开的会话没有回收。解决办法是:ssh连接到对应的服务器,kill掉dde-dock,dde-desktop,重启lightdm和xrdp,kill掉已有的xorg会话,然后重连,大概率可以显示出桌面。
  2. 我这边频繁出现的一个问题:即使解决掉了黑屏,有很大的概率桌面点击无响应——桌面图标双击或任务栏图标点击,均无响应。这个目前发现干掉dde-dock,dde-desktop,重启lightdm,有一定的几率可以解决,但是不一定能够解决。
  3. 坐等官方给出指导。
Reply View the author