xrdp + xorgxrdp + remotefx + glamor (우분투 18.04.x)
안녕하세요?
xrdp 에서 remotefx 사용과, 그래픽 가속을 위해서 방법을 시도해보고 있었는데요.
실제로는 화면자체가 안나와버리면서 문제에 봉착했습니다.
이 문제를 해결하면서, 그래픽 가속을 키는 방법을 알아보겠습니다.
실제로 그래픽 가속이 들어가더라도 환경이 크게 개선이 되지는 않는 것 같습니다.
이전 게시글
https://blog.djjproject.com/49
https://blog.djjproject.com/74
1. 결론적인 문제
xserver-xorg-dev 를 설치하여 컴파일을 진행하면 안되고, 실제로는 xserver-xorg-dev-hwe-18.04의 헤더로 빌드를 해야 정상적으로 동작하였습니다.
root@djjproject:~/xorgxrdp-0.2.17# apt search xorg-dev Sorting... Done Full Text Search... Done xorg-dev/bionic-updates 1:7.7+19ubuntu7.1 all X.Org X Window System development libraries xserver-xorg-dev/bionic-updates,bionic-security 2:1.19.6-1ubuntu4.9 amd64 Xorg X server - development files xserver-xorg-dev-hwe-16.04/bionic 3:14.1 amd64 Transitional package for xserver-xorg-dev-hwe-16.04 xserver-xorg-dev-hwe-18.04/bionic-updates,bionic-security,now 2:1.20.8-2ubuntu2.2~18.04.5 amd64 [installed] Xorg X server - development files |
2. xrdp 컴파일 하기
일단 의존성 패키지를 설치합니다.
root@djjproject:~# apt-get install git autoconf libtool pkg-config gcc g++ make libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev libxrandr-dev flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 g++ xutils libfuse-dev libmp3lame-dev nasm libpixman-1-dev xserver-xorg-dev-hwe-18.04 |
다음으로 소스를 받습니다.
https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.17
root@djjproject:~# wget https://github.com/neutrinolabs/xrdp/releases/download/v0.9.17/xrdp-0.9.17.tar.gz # 압축을 풀어줍니다. root@djjproject:~# tar xf xrdp-0.9.17.tar.gz root@djjproject:~# cd xrdp-0.9.17/ |
다음으로 컴파일 및 설치를 진행합니다.
이 패키지는 컴파일하여 설치한 패키지로 /usr/local/ 에 설치되도록 --prefix를 지정하지 않고 설치를 진행합니다. 필요하시면 --prefix=/usr 옵션을 주시길 바랍니다.
root@djjproject:~/xrdp-0.9.17# ./bootstrap /usr/bin/autoconf /usr/bin/automake /usr/bin/libtoolize /usr/bin/pkg-config autoreconf: Entering directory `.' root@djjproject:~/xrdp-0.9.17# ./configure --enable-fuse --enable-rfxcodec --enable-sound --enable-jpeg checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... xrdp will be compiled with: mp3lame no opus no fdkaac no jpeg yes turbo jpeg no rfxcodec yes painter yes pixman no fuse yes ipv6 no ipv6only no vsock no auth mechanism PAM rdpsndaudin no development logging no development streamcheck no strict_locations no prefix /usr/local exec_prefix ${prefix} libdir ${exec_prefix}/lib bindir ${exec_prefix}/bin sysconfdir /etc unit tests performable no CFLAGS = -g -O2 -Wall -Wwrite-strings -Werror LDFLAGS = root@djjproject:~/xrdp-0.9.17# make && make install make all-recursive make[1]: Entering directory '/root/xrdp-0.9.17' Making all in common make[2]: Entering directory '/root/xrdp-0.9.17/common' CC base64.lo CC fifo.lo |
3. xorgxrdp 컴파일 하기
마찬가지로 xorgxrdp 도 소스를 받고 컴파일 및 설치를 하면 됩니다.
https://github.com/neutrinolabs/xorgxrdp/releases
root@djjproject:~# wget https://github.com/neutrinolabs/xorgxrdp/releases/download/v0.2.17/xorgxrdp-0.2.17.tar.gz root@djjproject:~# tar xf xorgxrdp-0.2.17.tar.gz root@djjproject:~# cd xorgxrdp-0.2.17/ |
glamor 옵션을 주어 컴파일합니다. 이때, glamor 는 intel 및 amd 제품에 해당하는 그래픽 가속임으로 nvidia 는 xorgxrdp-nvidia 컴파일 방법을 이용하시길 바랍니다.
찾아본 결과, 하기 옵션으로 컴파일 진행하면 된다고 나와 있습니다.
https://github.com/neutrinolabs/xrdp/issues/1697#issuecomment-815904627
하기와 같이 컴파일을 진행합니다.
root@djjproject:~/xorgxrdp-0.2.17# ./bootstrap root@djjproject:~/xorgxrdp-0.2.17# ./configure --enable-glamor checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk root@djjproject:~/xorgxrdp-0.2.17# make && make install make all-recursive make[1]: Entering directory '/root/xorgxrdp-0.2.17' Making all in module |
모듈은 /usr/lib/xorg/modules 에 설치됩니다.
이제 재부팅을 한번 해줍니다.
4. xrdp 세션 설정하기
일단 저는 xfce4 를 설치하였습니다.
default 로 계정 홈폴더의 .xsession 파일을 읽기 때문에 하기와 같이 한줄 추가 하였습니다.
root@djjproject:~/xorgxrdp-0.2.17# echo "xfce4-session" > ~/.xsession |
다음으로 하기 X서버를 아무나 실행할 수 있도록 하기 설정을 변경합니다.
root@djjproject:~/xorgxrdp-0.2.17# vi /etc/X11/Xwrapper.config # Xwrapper.config (Debian X Window System server wrapper configuration file) # # This file was generated by the post-installation script of the # xserver-xorg-legacy package using values from the debconf database. # # See the Xwrapper.config(5) manual page for more information. # # This file is automatically updated on upgrades of the xserver-xorg-legacy # package *only* if it has not been modified since the last upgrade of that # package. # # If you have edited this file but would like it to be automatically updated # again, run the following command as root: # dpkg-reconfigure xserver-xorg-legacy allowed_users=anybody |
서비스를 재시작합니다.
root@djjproject:~/xorgxrdp-0.2.17# systemctl restart xrdp root@djjproject:~/xorgxrdp-0.2.17# systemctl restart xrdp-sesman |
5. 연결해보기
딱히 상기 옵션을 넣어서 컴파일을 진행하여도 개선이 있어 보이지는 않습니다.
실제로 xorgxrdp 에서 glamor 가 사용되는지, remotefx 가 사용되는지 아래와 같이 확인해 보았습니다.
xrdp-sesman 의 로그를 하기와 같이 살펴보면,
root@djjproject:~# /usr/local/sbin/xrdp-sesman -ns rdpProbe: rdpProbe: found DRMDevice xorg.conf value [/dev/dri/renderD128] rdpProbe: found DRI3 xorg.conf value [1] rdpPreInit: rdpPreInit: /dev/dri/renderD128 open ok, fd 13 rdpPreInit: glamor module load ok rdpPreInit: glamor init ok rdpClientConProcessMsgClientInfo: got RFX capture cap_width 1024 cap_height 768 rdpClientConProcessMsgClientInfo: shmemid 7307264 shmemptr 0x7ff9b9bb6000 bytes 3145728 client can not do offscreen to offscreen blits client can do new(color) cursor client can not do multimon |
사용이 되는 것으로 추정되나, 동영상을 볼 정도로 드라마틱하게 개선이 되지는 않습니다.
간단하게 여기서 마치겠습니다.
감사합니다.