2017年1月8日日曜日

Debian 8.6 (jessie) に xrdp をインストールする

環境

Debian 8.6 (jessie)
LXDE
(gnome や cinnamon では、起動すらできなかったが、原因は未調査。)


手順

root ユーザで作業する前提とする。

# libxrandr-dev パッケージをインストールするのがミソ
aptitude -y install git libxrandr-dev

# 任意のディレクトリでビルド作業を行う
git clone --depth 1 -b v3.03 https://github.com/scarygliders/X11RDP-o-Matic.git
cd X11RDP-o-Matic
./X11rdp-o-matic.sh --justdoit

# パッケージがインストールされているか確認
dpkg -l xrdp x11rdp

# セッションマネージャを選択(LDXE を選択する)
./RDPsesconfig.sh


# 再起動後、 xrdp で以下のようなエラーが発生した。

Jan  7 22:28:41 record2 xrdp-sesman[583]: (583)(140136194672384)[ERROR] error opening pid file[/var/run/xrdp/xrdp-sesman.pid]: No such file or directory

# /var/run は、/run のシンボリックリンクとなっている。
# /run は、tmpfs で作成されるため、起動時に初期化されてしまう。
# したがって、起動時に作成するように設定を行う必要がある。

# PID ファイルの格納先を作成
tee /etc/tmpfiles.d/xrdp.conf <<'EOT'
d /run/xrdp 0755 root root
EOT


# xrdp を起動すると、さらに以下のようなエラーが発生する。
# これは、pid ファイルの作成先が、異なっているため。

Jan 08 11:06:30 record2 xrdp-sesman[11225]: (11225)(140003619026688)[INFO ] starting xrdp-sesman with pid 11225
Jan 08 11:06:30 record2 systemd[1]: PID file /var/run/xrdp-sesman.pid not readable (yet?) after start.
Jan 08 11:06:30 record2 xrdp-sesman[11225]: (11225)(140003619026688)[INFO ] listening to port 3350 on 127.0.0.1
Jan 08 11:08:00 record2 systemd[1]: xrdp-sesman.service start operation timed out. Terminating.
Jan 08 11:08:00 record2 xrdp-sesman[11225]: (11225)(140003619026688)[INFO ] shutting down sesman 1
Jan 08 11:08:00 record2 xrdp-sesman[11225]: (11225)(140003619026688)[DEBUG] Closed socket 7 (AF_INET 127.0.0.1:3350)
Jan 08 11:08:00 record2 systemd[1]: Failed to start xrdp session manager.

# /lib/systemd/system/xrdp.service ファイルを以下のように修正
#   pid ファイルの場所を修正
#   存在しないディレクトリの読み込み行をコメントアウト

PIDFile=/var/run/xrdp/xrdp.pid
#EnvironmentFile=-/etc/sysconfig/xrdp
#EnvironmentFile=-/etc/default/xrdp


# /lib/systemd/system/xrdp-sesman.service ファイルを以下のように修正
#   pid ファイルの場所を修正
#   存在しないディレクトリの読み込み行をコメントアウト

PIDFile=/var/run/xrdp/xrdp-sesman.pid
#EnvironmentFile=-/etc/sysconfig/xrdp
#EnvironmentFile=-/etc/default/xrdp


systemctl daemon-reload
systemctl enable xrdp
systemctl start xrdp

# xrdp が起動したことを確認
systemctl status xrdp

# 再起動し、正常に xrdp が起動することを確認する。
reboot