第一次在 ubuntu 上安装 xrdp 用的是 https://c-nergy.be/blog/?p=14888 ;
后来重装了ubuntu, 就对照上面脚本和 https://github.com/neutrinolabs/xrdp/wiki/Building-on-Debian-8 , 一步步手工执行,以便进一步了解系统。
但我现在主力系统已经从 ubuntu 换成 gentoo, 需要在 gentoo 上安装 xrdp, 但 xrdp 目前不包含在 gentoo 官方 repository 中, 且官方支持不推荐手工源码编译安装,而是建议使用名叫 ace 的非官方 overlay (https://forums.gentoo.org/viewtopic-p-8544259-highlight-.html#8544259). 下面记录下我的安装步骤,在用 OpenRC 和 systemd 的系统上都试过。
首先根据 https://wiki.gentoo.org/wiki/Eselect/Repository 添加 ace repository:
emerge --ask app-eselect/eselect-repository
eselect repository list
eselect repository enable ace
emerge --sync ace
然后安装 xrdp:
emerge --ask net-misc/xrdp
这里会提示包是mask 掉的,我是通过如下方式 unmask:
emerge --ask --autounmask --autounmask-write net-misc/xrdp
确认 Yes 添加配置更改后再运行:
dispatch-conf
下面会提示添加的配置更改项, 按 u 表示接受更改, 如果有多个候选配置更改,提示内容不是当前安装相关的,可以按 n 切换到下一个配置更改。
完了再执行
emerge --ask net-misc/xrdp
并yes 确认安装。
在使用 systemd 的系统上(openrc 的类似,只是命令不同,略过),用如下命令启动服务并查看状态:
systemctl enable xrdp-sesman.service
systemctl enable xrdp.service
systemctl start xrdp-sesman.service
systemctl start xrdp.service
systemctl status xrdp-sesman.service
systemctl status xrdp.service
接下来可以安装并使用 xfreerdp 来测试 xrdp :
emerge --ask net-misc/freerdp
xfreerdp /v:192.168.100.109 /u:username /p:password /size:800x600 /sound:latency:100
/v 后面ip地址换成实际地址, /u 后面用户名使用一个不同于当前登录的用户名(因为同一账户同时登录多次的问题有些复杂)
运行命令后,我看到窗口闪现了一下就退出了,/var/log 目录下的 log 里面也说 authentication 通过了啥的, 支持人员给指了路 https://github.com/neutrinolabs/xrdp/issues/1796 , 我在 username 用户的$HOME 下面建立了 .xinitrc 文件,指明了启动桌面环境就可以了。
下面是 .xinitrc 内容, 一开始的xrandr 是用来设屏幕分辨率的,远程桌面里并不起作用,我系统没有激活 Display Manager (sddm,gdm 啥的),开机命令行登录后直接运行 startx 进入图形界面。
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode VGA-1 "1920x1080_60.00"
exec dbus-launch --exit-with-session startplasma-x11
#exec dbus-launch --exit-with-session gnome-session
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE="fcitx"
export GTK_IM_MODULE="fcitx"
但登进去后发现两个问题:
1。拼音输入不行,提示无输入窗口
2。声音无法工作,运行 pulseaudio -k
后也不行,
运行 pactl list modules short
显示结果里没看到 xrdp 相关 pulseaudio module
之前ubuntu 上配的至少拼音还行,声音也有,只是有卡顿: https://www.zhihu.com/question/439924648
有进展再接着写吧。
更新:拼音的问题解决了: 首先,xfreerdp 登录后运行 echo $QT_IM_MODULE , 返回为空,说明 .xinitrc 里面设置的环境变量 xfreerdp session 更本没用;
编辑 startwm.sh 文件:
nano /etc/xrdp/startwm.sh
把环境变量设置部分放在对 .xinitrc 调用部分前面,拼音就可以用了:
#!/bin/sh
# try hard to respect Gentoo's wm choice
. /etc/profile
[ -f /etc/rc.conf ] && . /etc/rc.conf
export XSESSION
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE="fcitx"
export GTK_IM_MODULE="fcitx"
USERINITRC="$HOME/.xinitrc"
if [ -f "$USERINITRC" ]; then
. "$USERINITRC"
else
. /etc/X11/xinit/xinitrc
fi
这和 https://fcitx-im.org/wiki/Configure_(Other)/zh-hans 里的如下描述是一致的:
也许您在用vncserver或者其他什么的,您需要找出您的启动脚本,比如
vncserver用的是/.vnc/xstartup。用/.xinitrc一样的配置来配置它。