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
留言