Ubuntu 24.04 XRDP狀況(黑畫面+閃退)

 我在使用Ubuntu 24.04 XRDP時, 碰到許多問題, 一開始是用遠端桌面連線工具程式連入時, 畫面卡住, 只看到滑鼠遊標變成X, 就是所謂的黑畫面。找了一下, 有人說是將/etc/xrdp/startwm.sh加入以下幾行:

unset DBUS_SESSION_BUS_ADDRESS

unset XDG_RUNTIME_DIR

. $HOME/.profile

一開始, 還管用, 但不久又出狀況, 用遠端桌面連線工具程式連入時, 打完帳號密碼, 就立刻閃退。又找了一下, 網上有人說, 可以在client端的機器, 找default.rdp這個檔案, 把檔案的這行:

use redirection server name:i:0

改成
use redirection server name:i:1

試了一下, 可以哦! 連進去了。
但好景不常, 沒幾天, 它自己斷線, 然後就再也連不進去了, 一直閃退! 
所以開始和Copilot一起找問題:

1. 先看/etc/xrdp/xrdp.ini, /etc/xrdp/sesman.ini, 沒什麼特別問題
2. 查看/var/log/xrdp-sesman.log, Copilot看完後說: " XRDP session 啟動順利地完成使用者驗證並啟動了 Xorg,但在 window manager 啟動階段卻快速崩潰。這是造成 session 秒斷的主要原因。" 然後它建議我檢查 /etc/xrdp/startwm.sh, 我就直接把這個.sh檔案內容給它看。它回答看起來就是預設的寫法, 依賴/etc/X11/Xsession來啓動桌面環境。並建議我大改/etc/xrdp/startwm.sh, 我覺得不知道在改什麼, 就告訴它, 重開機就可以連進去, 但一段時間後會斷線, 然後就連不進去。於是它要我試試:
  2-1 檢查之前連線殘存的lock file
    ls -la /tmp/.X11-unix/
    ls -la /tmp/.X*-lock
  2-2 session是否沒斷乾淨, 可以重開服務
    sudo systemctl restart xrdp-sesman
    sudo systemctl restart xrdp
  2-3 session 顯示號與 Xserver 衝突, 查看
    ps aux | grep X
    有的話, kill

3. 它要我看 ~/.xsession-errors, 然後它告訴我: "這些錯誤訊息揭露了 XRDP session 在 GNOME 桌面環境下啟動失敗的根本原因:缺少 dbus-launch 命令,導致整個 D-Bus 初始化鏈出錯,無法提供桌面環境所需的進程通訊功能。" 它要我做以下動作:
  3-1 安裝缺少的 dbus-x11 套件,這會提供 dbus-launch 命令
    sudo apt install dbus-x11
  3-2 安裝完成後,建議重啟 XRDP:
    sudo systemctl restart xrdp
    sudo systemctl restart xrdp-sesman

** 到這裡, 原本連不進去的, 就可以連進去了。接著我開始用力的測試XRDP, 用遠端桌面連線工具程式連入又登出, 又連入又登出, 就這樣試好幾次都可以。接著, 我用console登入, 再登出後。再使用遠端桌面連線工具程式嘗試連入, 結果又不行了! 我同樣再把~/.xsession-errors, 裡的錯誤訊息找出來給它看。它說: "GNOME 需要 systemd --user 配合 D-Bus 啟動許多組件,缺失可能導致不穩定", 並建議安裝systemd-user, 以及檢查PAM:
    cat /etc/pam.d/xrdp-sesman
這個檔要包含:
    session required pam_systemd.so

** 以上動作做完後, 遠端桌面連線工具程式連入又登出, 都可以正常的再連入。但是console登入卻被警告使用者session已經存在, 不能登入, 除非強制將session關閉, 但如此可能造成一些問題。我試著按強制關閉, 卻沒反應。此時想到, 用:

$ ps aux | grep X
gdm        26693  0.0  0.1 540508 82208 tty1     Sl+  11:51   0:00 /usr/bin/Xwayland :1024 -rootless -noreset -accessx -core -auth /run/user/124/.mutter-Xwaylandauth.577FA3 -listenfd 4 -listenfd 5 -displayfd 6 -initfd 7 -byteswappedclients
ops        27037  0.0  0.1 315300 74344 ?        Sl   11:51   0:00 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
ops        28353  0.0  0.1 314792 74016 ?        Sl   11:52   0:00 /usr/lib/xorg/Xorg :11 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
ops        43840  0.0  0.0   6924  2016 pts/0    S+   13:32   0:00 grep --color=auto X

明顯可以看到session 顯示號10, 11兩個行程都還在, 並沒有因為遠端桌面連線登出而消失。所以就kill:

$ sudo kill 28353
$ sudo kill 27037

此時由console就可以正常的登入了。

***確實, XRDP和GNOME桌面環境的配合, 還不太穩定。不像SSH這般的穩定, 幾乎沒有出問題。

----------------
結論:
----------------
1. 主要是XRDP session出問題, 可查看其log:  ~/.xsession-errors
2. dbus-x11套件要安裝
3. PAM設定要看一下
4. session 顯示號行程是否卡住, 可以用ps aux | grep X看, 有必要可kill

留言

這個網誌中的熱門文章

D-BUS學習筆記

Cisco Switch學習筆記: EtherChannel

Cisco Switch學習筆記: interface的封包錯誤統計