tigervncserverをインストールして、GNOME3デスクトップにVNC/XRDPでリモート接続します。
Table of Contents
1 GNOME3とtightvncserverのエラー
GNOME3とtightvncserverでは以下の様なエラーが発生してリモート接続に失敗します。
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 https://github.com/TigerVNC/tigervnc $ 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接続用のパスワードを作成します。
$ 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用のパスワードを入力すると以下の画面が得られます。
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リモートデスクトップで接続して、ユーザ名とパスワードを入力すると以下の画面が得られます。