以前使用 buster,安裝xrdp后 pi用戶xrdp登錄正常,
可自從使用了 bullseye系統,pi登錄xrdp后,出現黑屏不能登錄現象。
網上搜尋解決方案,一種方法是:
- 登錄樹莓派后,打開這個文件:/etc/X11/xrdp/xorg.conf
- 在文件中找到:Option "DRMDevice" "/dev/dri/renderD128"
- 將上述這一行注釋掉,增加:Option "DRMDevice" ""
- 保存后重新啟動
此方法測試后:確實pi用戶能rdp登錄到桌面了。但是,但是,沒有了圖形驅動性能差,非常卡頓~~
找到的另一種方法:使用 adduser 命令新建一個用戶,使用新賬戶來rdp登錄。
測試后:可以登錄到桌面,但同樣出現卡頓現象。
################################### 直接給出結果 ###########################################
經過各種測試填坑,找到了相對能接受的方法:
(1)新建用戶,並用此用戶rdp登錄;(解決黑屏,無法登錄到desktop的問題)
(2)編輯腳本 /usr/bin/startlxde-pi 的內容,更改第44行:(解決卡頓問題)
exec /usr/bin/lxsession -s LXDE-pi -e LXDE
在其末尾加上參數,最終內容改為與53行(倒數第2行)一樣:
exec /usr/bin/lxsession -s LXDE-pi -e LXDE -w openbox-lxde-pi
############################### 以下填坑具體過程,可略過 #####################################
Raspberry OS 的 Bullseys版本,安裝xrdp后使用pi用戶登錄,出現黑屏問題。
===============================================
找遍解決方法,在這里找到討論:https://github.com/neutrinolabs/xrdp/issues/2060
其中,shixudong2020 commented on 4 Dec 2021 解釋了為何新建用戶可以登錄:
new user or pi(disable autologin) can xrdp to pi4(bullseye),because they not have privilege to open the DRI device /dev/dri/renderD128,so glamor module inactive. When pi autologin graphical console,it occupy seat0,according /lib/udev/rules.d/70-uaccess.rules, active seat0 user pi have privilege to open the DRI device /dev/dri/renderD128.
it no matter login twice with the same account using xrdp on pi4(bullseye).
for example, if add new user to group render to have privilege to open the DRI device /dev/dri/renderD128,new user will can not xrdp to pi4(bullseye).
經測試,adduser zhw后,zhw不能加入到 render組中(編輯/etc/groups文件),否則跟pi一樣不能登錄,
都是訪問 renderD128 驅動的權限造成的!!
解決登錄問題: 新建新用戶來xrdp登錄,不能加入render組!!!!!
===========================================================
但是又出現新問題: 登錄xrdp后,界面非常卡! 無法正常使用~~~~~~~~~
Edit /etc/X11/xrdp/xorg.conf and set Option "DRMDevice" "". This disables glamor for xrdp session only.
這種解決方法同樣有卡頓的問題!!
解決新用戶rdp登陸后卡頓的問題: marcomto commented on 29 Nov 2021 這個帖子非常有用!
(1)自己測試替換x-session-manager:
pi@raspi:~ $ sudo update-alternatives --config x-session-manager
有 4 個候選項可用於替換 x-session-manager (提供 /usr/bin/x-session-manager)。
選擇 路徑 優先級 狀態
- 0 /usr/bin/startlxde-pi 90 自動模式
1 /usr/bin/lxsession 49 手動模式
2 /usr/bin/openbox-session 40 手動模式
3 /usr/bin/startlxde 50 手動模式
4 /usr/bin/startlxde-pi 90 手動模式
要維持當前值[*]請按<回車鍵>,或者鍵入選擇的編號: 3
發現: 將 x-session-manager 替換為3,則登錄后不卡頓! 但是界面不一樣了。
結論: 缺省的 XSession 腳本肯定有問題,修改后應該可以也不卡頓。
(2)編輯 缺省腳本 /usr/bin/startlxde-pi 的內容
發現其中會根據內存大小來選擇執行: 當內存>2G時啟動的邏輯A, 跟內存<2G時的邏輯B不同!
代碼行: if [ $TOTAL_MEM -ge 2048 ] && [ -f /usr/bin/mutter ] && [ -z "$VNC" ] ; then
.........
exec /usr/bin/lxsession -s LXDE-pi -e LXDE
else
.........
exec /usr/bin/lxsession -s LXDE-pi -e LXDE -w openbox-lxde-pi
fi
測試把 2048 改成8G,強制運行“邏輯B”,發現不卡頓!!很好~~~~
再比較兩個邏輯,最后一句,一個帶 -w openbox-lxde-pi 參數不卡頓,另一個不帶參數卡頓。
########實驗:將邏輯A 也帶參數 -w openbox-lxde-pi ,測試也不卡斷了!! 問題解決~