Create TOC

2014년 5월 10일

Debian/XRDP + X11VNC + GDM3

xrdp를 사용하면 RDP를 이용해서 원격 접속이 가능해진다. 그러나 기본 설정으로 접속할 경우 GLX 가속 기능을 하나도 쓰지 못하기 때문에 gnome 3.x를 사용할 수 없다.

gnome 3.x에서 xrdp을 사용하려면 일반적인 VNC 서버 대신 지정된 XDISPLAY를 표시해주는 x11vnc를 사용하면 된다.

이 문서는 x11vnc를 부팅시 데몬으로 동작시켜 GDM3화면부터 xrdp로 사용하도록 설정하는 내용을 기술했다.

x11vnc 설정

설치

$ sudo apt-get install x11vnc

vnc 접속 비밀번호 설정

$ sudo x11vnc -storepasswd 비밀번호 /etc/x11vncpasswd

스크립트 작성

아래와 같은 스크립트를 만들어서 /etc/init.d/x11vnc으로 저장한다.

아래 스크립트는 gdm3을 사용한다는 가정으로 작성되었다. 다른 login manager를 쓴다면 그에 맞게 스크립트를 수정해야 한다.

#! /bin/sh
### BEGIN INIT INFO
# Provides:          x11vnc server
# Required-Start:    gdm3
# Required-Stop:     gdm3
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: x11vnc
# Description:       Debian init script for the x11vnc
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/x11vnc

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

wait_gdm3() {
    authfile=$(find /var/run/gdm3/auth-for-Debian-gdm-*/database)
    while [ ! -f $authfile ]
    do
       authfile=$(find /var/run/gdm3/auth-for-Debian-gdm-*/database)
    done
}

case "$1" in
  start)
    log_daemon_msg "Starting X11vnc" "x11vnc"
    wait_gdm3
    start-stop-daemon --start --quiet --pidfile /var/run/x11vnc.pid --make-pidfile --background --exec $DAEMON -- -display :0 -env FD_XDM=1 -auth guess -usepw -rfbauth /etc/x11vncpasswd -shared -oa /var/log/x11vnc.log -xkb -repeat -localhost -noxrecord -noxfixes -noxdamage -noncache -loop
    log_end_msg $?
    ;;
  stop)
    log_daemon_msg "Stopping X11vnc" "x11vnc"
    set +e
    start-stop-daemon --stop --quiet --pidfile /var/run/x11vnc.pid --name x11vnc --retry 5
    set -e
    log_end_msg $?
    ;;
  status)
    status_of_proc -p /var/run/x11vnc.pid "$DAEMON" x11vnc && exit 0 || exit $?
    ;;
  restart|force-reload)
    $0 stop
    sleep 1
    $1 stop
    ;;
  *)
    echo -e "Usage: ${SERVICE} {start|stop|status|restart|force-reload}"
    exit 1
    ;;
esac

exit 0

저장 후 permission을 조절한다.

$ sudo chmod +x /etc/init.d/x11vnc

자동 실행 등록

아래 명령을 이용해서 부팅시 자동 실행되도록 등록한다.

$ sudo update-rc.d x11vnc defaults

x11vnc 시작

재부팅 하거나 아래 명령으로 x11vnc 데몬을 시작한다.

$ sudo /etc/init.d/x11vnc restart

xrdp 설정

설치

아래 명령으로 xrdp을 설치한다.

$ sudo apt-get install xrdp

설정 수정

기본으로 사용할 세션을 x11vnc로 지정하기 위해서 /etc/xrdp/xrdp.ini파일을 열어서 아래와 같이 xrdp1xrdp2내용을 바꾼다.

[xrdp1]
name=console
lib=libvnc.so
ip=127.0.0.1
port=5900
username=na
password=ask

[xrdp2]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

데몬 재시작

설정이 끝나면 아래 명령으로 xrdp 데몬을 재시작한다.

$ sudo /etc/init.d/xrdp restart