这三本书与我手头的十二本合在一起共十五本,恐怕这十五本正好是一套。外部世界的式神果然和幻想乡是一样的。在电脑知识中F代表十五,F包含了一切,当所有东西成为F的时候它就有了最大值——我曾在一本书上读到过这样的内容。
网络上的教程大部分都是教你用这个脚本,实际上这里有第一个坑,首先他们用的参数是-s -e,未启用编译安装的话这几个参数根本没有作用。
正确的参数是./xrdp-installer-1.5.6.1.sh -c -s -e才能编译进声音和h.264编码支持。
但是如果跑脚本就行的话就没有这篇文章了。
这里有第二个坑,脚本默认的编译参数相较debian默认源xorgxrdp未启用--enable-glamor,没有这个参数的话Xorg会没有显卡硬件加速。
再加上这个脚本重复下载文件,一堆报错,很难用。并且debian源的本来就挺好用,于是决定自己编译安装
这里参考了这篇文章,直接在debian 13上执行了apt-get source xrdp。
坑来了。截至目前debian trixie的xrdp版本为0.10.1-3.1+deb13u1,然而xrdp要>=0.10.2才有h.264编码支持。
如果你也这样做了你会发现你添加了--enable-x264但实际上压根没装依赖都还能正常编译。
首先推荐在一个新的debian13 lxc容器里(和目标系统相同)安装依赖apt-get install dpkg-dev devscripts build-essential fakeroot
然后找到debian forky的包,这个版本够高0.10.5-4。
滚到下面的Download xrdp,依次下载保存:
确保在同一目录下,然后执行dpkg-source -x xrdp_0.10.5-4.dsc
之后应该长这样:
drwxr-xr-x 3 root root 4096 Apr 13 16:58 .
drwx------ 12 root root 4096 Apr 13 16:58 ..
drwxr-xr-x 30 root root 4096 Apr 13 16:58 xrdp-0.10.5
-rw-r--r-- 1 root root 38068 Apr 13 15:16 xrdp_0.10.5-4.debian.tar.xz
-rw-r--r-- 1 root root 1351 Apr 13 15:16 xrdp_0.10.5-4.dsc
-rw-r--r-- 1 root root 2489216 Feb 1 16:16 xrdp_0.10.5.orig.tar.gz进入xrdp-0.10.5/目录
继续安装依赖apt-get build-dep xrdpapt install libx264-dev libopenh264-dev
然后修改debian/rules文件:
找到:
override_dh_auto_configure:
./bootstrap
cd librfxcodec && ./bootstrap
cd libpainter && ./bootstrap
./configure \
--enable-ipv6 \
--enable-jpeg \
--enable-fuse \修改为:
override_dh_auto_configure:
./bootstrap
cd librfxcodec && ./bootstrap
cd libpainter && ./bootstrap
./configure \
--enable-x264 \
--enable-openh264 \
--enable-ipv6 \
--enable-jpeg \
--enable-fuse \即添加--enable-x264和--enable-openh264编译参数。
最后执行debuild -us -uc编译deb包。
然后你应该能在上级目录里找到xrdp_0.10.5-4_amd64.deb
现在你的目录应该长这样:
drwxr-xr-x 3 root root 4096 Apr 13 17:08 .
drwx------ 12 root root 4096 Apr 13 16:58 ..
drwxr-xr-x 31 root root 4096 Apr 13 17:08 xrdp-0.10.5
-rw-r--r-- 1 root root 1138336 Apr 13 17:08 xrdp-dbgsym_0.10.5-4_amd64.deb
-rw-r--r-- 1 root root 38068 Apr 13 17:07 xrdp_0.10.5-4.debian.tar.xz
-rw-r--r-- 1 root root 1351 Apr 13 17:07 xrdp_0.10.5-4.dsc
-rw-r--r-- 1 root root 312051 Apr 13 17:08 xrdp_0.10.5-4_amd64.build
-rw-r--r-- 1 root root 6500 Apr 13 17:08 xrdp_0.10.5-4_amd64.buildinfo
-rw-r--r-- 1 root root 1957 Apr 13 17:08 xrdp_0.10.5-4_amd64.changes
-rw-r--r-- 1 root root 646696 Apr 13 17:08 xrdp_0.10.5-4_amd64.deb
-rw-r--r-- 1 root root 2489216 Feb 1 16:16 xrdp_0.10.5.orig.tar.gz提取出来,在目标系统上安装:
# apt install xrdp x264
# dpkg -i xrdp_0.10.5-4_amd64.deb
# ldd /usr/sbin/xrdp|grep 264
libx264.so.164 => /lib/x86_64-linux-gnu/libx264.so.164 (0x00007759f7e00000)
# xrdp -v
xrdp 0.10.5
A Remote Desktop Protocol Server.
Copyright (C) 2004-2026 Jay Sorg, Neutrino Labs, and all contributors.
See https://github.com/neutrinolabs/xrdp for more information.
Configure options:
--enable-x264
--enable-openh264
--enable-ipv6
--enable-jpeg有flag并且ldd能看见链接库就是成功。
这个时候你尝试rdp连接,输完密码回车后会直接被踢出。观察发现是xorgxrdp崩了。
日志显示
[902455.071] expected xrdp client_info version 20230425, got 20241118
[902455.071] (EE) Fatal server error:
[902455.071] (EE) Incompatible xrdp version detected - please recompile(EE)
[902455.071] (EE) Please consult the The X.Org Foundation support at http://wiki.x.org for help.
[902455.071] (EE) Please also check the log file at ".xorgxrdp.10.log" for additional information.
[902455.071] (EE)
[902455.071] rdpmouseControl: what 4
[902455.071] rdpkeybControl: what 4
[902455.071] (II) AIGLX: Suspending AIGLX clients for VT switch
[902455.071] rdpLeaveVT:
[902455.072] (EE) Server terminated with error (1). Closing log file.报告版本不兼容不一致。这里是第二个坑。xrdp和xorgxrdp是配套的要一起编译版本要一致。。而我们的xorgxrdp仍然是trixie的0.10.2-1。
编译xorgxrdp。forky源
dpkg-source -x xorgxrdp_0.10.5-2.dsc
cd xorgxrdp-0.10.5/
apt-get build-dep xorgxrdp
debuild -us -uc
cd ..
ls -la
drwxr-xr-x 11 root root 4096 Apr 13 15:33 xorgxrdp-0.10.5
-rw-r--r-- 1 root root 273360 Apr 13 15:33 xorgxrdp-dbgsym_0.10.5-2_amd64.deb
-rw-r--r-- 1 root root 21300 Apr 13 15:32 xorgxrdp_0.10.5-2.debian.tar.xz
-rw-r--r-- 1 root root 1394 Apr 13 15:32 xorgxrdp_0.10.5-2.dsc
-rw-r--r-- 1 root root 138405 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.build
-rw-r--r-- 1 root root 9008 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.buildinfo
-rw-r--r-- 1 root root 1868 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.changes
-rw-r--r-- 1 root root 67796 Apr 13 15:33 xorgxrdp_0.10.5-2_amd64.deb
-rw-r--r-- 1 root root 521964 Feb 1 16:16 xorgxrdp_0.10.5.orig.tar.gz提取出xorgxrdp_0.10.5-2_amd64.deb,安装。
然后你可能会遇到效果不明显。似乎未启用x264编码。
调查发现是色深必须要设置为32-bit否则不兼容client requested gfx protocol with insufficient color depth
修改为32位色深后,能明显看到带宽占用降低。
并且日志:
[2026-04-14T00:18:36.812+0800] [INFO ] Codec search order is H264
[2026-04-14T00:18:36.816+0800] [INFO ] Matched H264 mode
[2026-04-14T00:18:36.820+0800] [INFO ] replying version 0x000a0600 flags 0x00000000
[2026-04-14T00:18:36.824+0800] [INFO ] xrdp_mm_egfx_caps_advertise: xrdp_egfx_send_capsconfirm error 0 best_index 7
[2026-04-14T00:18:36.828+0800] [INFO ] xrdp_egfx_reset_graphics:
[2026-04-14T00:18:36.832+0800] [INFO ] xrdp_egfx_reset_graphics: width 1920 height 1080 monitorcount 1
[2026-04-14T00:18:36.836+0800] [INFO ] xrdp_mm_egfx_caps_advertise: xrdp_egfx_send_reset_graphics error 0 monitorCount 0
[2026-04-14T00:18:36.840+0800] [INFO ] xrdp_mm_egfx_create_surfaces: map surface_id 0 left 0 top 0 width 1920 height 1080
[2026-04-14T00:18:36.844+0800] [INFO ] xrdp_encoder_create: starting h264 codec session gfx
[2026-04-14T00:18:36.848+0800] [INFO ] xrdp_encoder_create: using x264 for software encoder目前是如果你不是N卡(NV有单独的nvenc支持但是我不关心)
只有x264和openh264两个选择。这俩都是软件编码。
我有igpu。我可以正常用intel qsv和va-api。但是这里都用不上加速。
可能需要等add FFmpeg/dma-buf based VAAPI/Vulkan encoding support
