Ubuntu 16.04: UnityにVNC/XRDPでリモート接続する

Griffon's IT Libraryの記事によると、.xsessionにunityを記載することでUnityへリモート接続できるようなることが発見されています。この記事ではunityに加えてインディケーター等も動かすようにして、できる限りローカルマシンのデスクトップに近いものを実現します。

1 tigervncserverのインストール

以下のスクリプトを実行してtigervncをインストールします。

#!/bin/sh

# Refresh repository.
sudo apt update -y

# Install git and devscript.
sudo apt install -y git devscript

# Remove vnc4server.
sudo apt remove -y vnc4server

# Create working directory.
mkdir tigervnc
cd tigervnc

# Download source code.
git clone https://github.com/TigerVNC/tigervnc
cd tigervnc/

# Avoid compiler error.
git checkout ff872614b507d0aa8bfbd09ef41550390cfe658a

# Prepare to build package.
ln -s contrib/packages/deb/ubuntu-xenial/debian
chmod a+x debian/rules
sudo apt install -y -o 'apt::install-recommends=true' \
     `dpkg-checkbuilddeps 2>&1 | \
sed -e 's/.*build dependencies://g' -e 's/([^)]*)//g'`

# Build package.
fakeroot debian/rules binary
cd ..

# Install package with resolving dependent package.
sudo dpkg -i *.deb || (sudo apt-get -f install -y ; sudo dpkg -i *.deb || exit 1)
cd ..

2 ${HOME}/.xsession

以下の内容の.xsessionを作成します。

$ cat ~/.xsession
/usr/lib/gnome-session/gnome-session-binary --session=ubuntu &
/usr/lib/x86_64-linux-gnu/unity/unity-panel-service &
/usr/lib/unity-settings-daemon/unity-settings-daemon &

for indicator in /usr/lib/x86_64-linux-gnu/indicator-*; do
  basename=`basename ${indicator}`
  dirname=`dirname ${indicator}`
  service=${dirname}/${basename}/${basename}-service
  ${service} &
done

unity

3 gnome-control-centerの追加

ここまでの設定だと、画面右上の"System settings…"を選択するとgnome-control-centerを実行しようとしてしまいます。そこでgnome-control-centerを本来呼ぶべきunity-control-centerへのシンボリックリンクとします。

$ sudo ln -s /usr/bin/unity-control-center /usr/bin/gnome-control-center

4 VNCサーバを動かす

vncpasswdでVNC接続用のパスワードを作成します。

$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

vncserverを起動します。VNCで接続するポートは5900 + ディスプレイ番号です。以下の例では5901となります。

$ vncserver

New 'ubuntu-16:1 (hiroom2)' desktop is ubuntu-16:1

Starting applications specified in /home/hiroom2/.vnc/xstartup
Log file is /home/hiroom2/.vnc/ubuntu-16:1.log

VNCクライアントでvnc://<server>:5901へアクセスします。先ほど作成したVNC用のパスワードを入力すると以下の画面が得られます。

0001_VNC.png

5 XRDPサーバを動かす

xrdpをインストールします。

$ sudo apt install -y xrdp

rdesktopやWindowsリモートデスクトップで接続して、ユーザ名とパスワードを入力すると以下の画面が得られます。

0002_XRDP.png