Debian 8のGNOME3デスクトップにVNC/XRDPでリモート接続する


Table of Contents

1 GNOME3とtightvncserverのエラー

GNOME3とtightvncserverでは以下の様なエラーが発生してリモート接続に失敗します。

0001_Error.png

2 前準備

vnc4serverとtightvncserverを削除します(削除せずにupdate-alternativesコマンドでtigervncserverに切り替えても良いです)。

$ sudo apt remove -y vnc4server tightvncserver

gitとdevscriptsをインストールします。

$ sudo apt install -y git devscripts

3 libfltkのインストール

Debian 8のlibfltkは若干コードが古く、tigervncviewerがコンパイルエラーとなってしまいます。

そこでUbuntu 16.04のlibfltkを移植します。

 

libfltkのビルドに必要なパッケージをインストールします。

$ sudo apt-get build-dep -y libfltk1.3$ sudo apt install -y cmake

Ubuntu 16.04のlibfltkのソースコードをダウンロードします。

$ mkdir fltk$ cd fltk$ URL=http://archive.ubuntu.com/ubuntu/pool/universe/f/$ wget ${URL}/fltk1.3/fltk1.3_1.3.3.orig.tar.gz$ wget ${URL}/fltk1.3/fltk1.3_1.3.3-8.dsc$ wget ${URL}/fltk1.3/fltk1.3_1.3.3-8.debian.tar.xz$ tar zxvf fltk1.3_1.3.3.orig.tar.gz$ cd fltk-1.3.3/$ tar xvf ../fltk1.3_1.3.3-8.debian.tar.xz

ビルドします。

$ dpkg-buildpackage -us -uc

apt -f installで依存パッケージを解消しつつインストールします。

$ cd ..$ sudo dpkg -i *.deb || (sudo apt -f install -y ; sudo dpkg -i *.deb)$ cd ..

4 tigervncserverのインストール

tigervncのリポジトリにubuntu-xenial向けのdevscriptsファイルがあるので、それを流用します。

 

tigervncのリポジトリからソースコードをダウンロードします。

一応動作確認したコミットのハッシュ値でcheckoutしています。

$ mkdir tigervnc$ cd tigervnc$ git clone cd tigervnc/$ git checkout 044e2b87da7121ef6cbd59e88b101d7d8e282896 -b 044e2b87da7121ef6cbd59e88b101d7d8e282896

devscriptsファイルをシンボリックリンクでソースツリー直下に移動します。

$ ln -s contrib/packages/deb/ubuntu-xenial/debian

Debian 8とUbuntu 16.04でパッケージ名が異なるものを変換しています。

$ sed -i -e ‘s/libjpeg-turbo8/libjpeg62-turbo/g’ -e ‘s/libgnutls30/libgnutls-deb0-28/g’ -e ‘s/libgnutls-dev/libgnutls28-dev/g’ debian/control

ビルドに必要なパッケージをインストールします。

$ sudo apt install -y $(grep Build-Depends: debian/control | sed -e ‘s/Build-Depends://g’ -e ‘s/([^)]*)//g’ -e ‘s/,//g’)

Debian 8では不要なUbuntu 16.04用のパッチファイルを空にします。

$ rm debian/xorg-source-patches/xserver118-patch.patch$ touch debian/xorg-source-patches/xserver118-patch.patch

ビルドします。

$ chmod a+x debian/rules$ fakeroot debian/rules binary

apt -f installで依存パッケージを解消しつつインストールします。

$ cd ..$ sudo dpkg -i *.deb || (sudo apt -f install -y ; sudo dpkg -i *.deb)$ cd ..

5 VNCサーバを動かす

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

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

vncserverを起動します。VNCで接続するポートは5900 + ディスプレイ番号です。

以下の例では5901となります。

$ vncserverNew ‘ubuntu-16:1 (hiroom2)’ desktop is ubuntu-16:1Starting applications specified in /home/hiroom2/.vnc/xstartupLog file is /home/hiroom2/.vnc/ubuntu-16:1.log

VNCクライアントでvnc://<server>:5901へアクセスします。

先ほど作成したVNC用のパスワードを入力すると以下の画面が得られます。

0002_VNC.png

6 XRDPサーバを動かす

XRDPをインストールして起動します。

$ sudo apt install -y xrdp # please check if vnc4server is not installed$ sudo systemctl enable xrdp$ sudo systemctl restart xrdp

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

0003_XRDP.png

7 参考

  • XRDPのインストール方法
  • Ubuntu 16.04のGNOMEクラシックデスクトップにVNC/XRDPでリモート接続する
Android | Linux | SDL - Narrow Escape