archlinux安装xrdp的心酸路程

注意我的当前环境

  • archlinux 2022.07.14
  • xrdp 0.9.19-2
  • kde-plasma 5.25.3-1

安装相关软件

首先,需要安装的不只 xrdp,总共如下

1
yay -S xrdp xorgxrdp-glamor pulseaudio-module-xrdp

xrdp 会出现各种问题,尤其是在 cat ~/.xorgxrdp.10.log 里有很多报错,比如找不到屏幕什么的

启动相关service

1
2
sudo systemctl enable --now xrdp
sudo systemctl enable --now xrdp-sesman

注意,出现问题时可以通过如下两种方法查看上面两个的日志

1
2
3
4
5
6
sudo systemctl status xrdp
sudo systemctl status xrdp-sesman

# 推荐下面的
tail -f -n 30 /var/log/xrdp.log
tail -f -n 30 /var/log/xrdp-sesman.log

根据日志排除相关错误

安装以后,黑屏、闪退等各种问题

错误1

这个大概是因为,在上面的日志里有一个 channels 相关的报错

1
sudo vim /etc/xrdp/xrdp.ini 

找到

1
2
3
4
allow_channels=true

# 改成
allow_channels=false

错误2

这个大概是因为一些权限不足的报错

1
sudo vim /etc/polkit-1/rules.d/49-nopasswd_global.rules

添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
/* Allow members of the wheel group to execute any actions
* without password authentication, similar to "sudo NOPASSWD:"
*/
polkit.addRule(function(action, subject) {
if (( action.id == "org.freedesktop.policykit.exec"
|| action.id == "org.fedoraproject.FirewallD1.all"
|| action.id == "org.fedoraproject.FirewallD1.config"
|| action.id == "org.freedesktop.NetworkManager.settings.modify.system") &&
subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});

错误3

这个大概是因为闪退、黑屏

1
cp /etc/X11/xinit/xinitrc ~/.xinitrc

然后注释掉如下最后几行

1
2
3
4
5
#twm &
#xclock -geometry 50x50-1+1 &
#xterm -geometry 80x50+494+51 &
#xterm -geometry 80x20+494-0 &
#exec xterm -geometry 80x66+0+0 -name login

在最后添加,注意,我的是kde桌面

1
2
3
4
5
6
7
# 声音
PULSE_SCRIPT=/etc/xrdp/pulse/default.pa pulseaudio --daemonize=no
pulseaudio &

# kde-plasma桌面
export DESKTOP_SESSION=plasma
/usr/lib/plasma-dbus-run-session-if-needed startplasma-x11

错误4

这个大概也是因为一些权限问题

1
sudo vim /etc/pam.d/xrdp-sesman

原为

1
2
3
4
5
#%PAM-1.0
auth include system-remote-login
account include system-remote-login
password include system-remote-login
session include system-remote-login

改为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#%PAM-1.0
auth include system-remote-login
-auth optional pam_gnome_keyring.so
-auth optional pam_kwallet5.so

account include system-remote-login


password include system-remote-login
-password optional pam_gnome_keyring.so use_authtok


session optional pam_keyinit.so force revoke
session include system-remote-login
-session optional pam_gnome_keyring.so auto_start
-session optional pam_kwallet5.so auto_start

错误5

注意,我不确定这个需不需要修改,但是目前我改了,如果远程没问题,就不要改了,这个很可能是因为我闲着没事

1
sudo vim /etc/xrdp/startwm.sh

wm_start 函数中不是 arch user 的,都被我删了,这个函数,目前如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 注意只是 `wm_start` 这个函数里面的被我改了

#start the window manager
wm_start()
{
if [ -r /etc/locale.conf ]; then
. /etc/locale.conf
export LANG LANGUAGE
fi

# arch user
if [ -r ~/.xinitrc ]; then
pre_start
. ~/.xinitrc
post_start
exit 0
fi

pre_start
xterm
post_start
}

对了期间还有,我也不确定有没有用

1
sudo gpasswd -a $USER tty

本文作者:yuhldr
本文地址https://yuhldr.github.io/posts/fae93d3c.html
版权声明:转载请注明出处!