玩式草子─ソフトウェアとたわむれる日々

第60回 いまさらながらVNC[その2]

この記事を読むのに必要な時間:およそ 4.5 分

VNCのインストール

前節で紹介した各種VNCソフトウェアを検討した結果,Linuxで使うVNCクライアントはTigerVNCWindowsで使うVNCサーバはUltraVNCを使うことにしました。

実のところ,同じプロジェクトのソフトウェアで揃えた方がいいかと, 最初はサーバとクライアントの双方でTigerVNCを使っていました。 しかし,Windows用のTigerVNCはかなり不安定でしばしば異常終了するため, Windows側をUltraVNCに替えてみたところ,サーバ,クライアントともに安定して使えるようになりました。

前節で紹介したように,TigerVNCはFLTKツールキットを必要とするので,まずFLTKツールキットをインストールしておきます。

$ wget http://fltk.org/pub/fltk/1.3.2/fltk-1.3.2-source.tar.gz
$ tar xvf fltk-1.3.2-source.tar.gz
$ cd fltk-1.3.2
$ ./configure --enable-shared
checking for gcc... gcc
...
$ make
=== making src ===
g++ -L. -Wl,-soname,libfltk.so.1.3 -lXext -lXft -lfontconfig -lXinerama -lpthread -ldl -lm -lX11 -shared -fPIC -o libfltk.so.1.3 ...
 ...
$ sudo make install
mkdir -p /usr/local/bin
rm -f /usr/local/bin/fltk-config
/usr/bin/install -c -m 755 fltk-config /usr/local/bin
 ...

次にTigerVNCのソースコードをダウンロードし,展開します。

$ wget https://github.com/TigerVNC/tigervnc/archive/v1.3.1.tar.gz
$ tar xvf v1.3.1.tar.gz
$ cd tigervnc-1.3.1

TigerVNCはビルドシステムにcmakeを使っているので,cmakeの流儀にしたがって,作業用のディレクトリを作ってビルド,インストールします。

$ mkdir build ; cd build
$ cmake -G'Unix Makefiles' ..
-- The C compiler identification is GNU 4.6.3
-- The CXX compiler identification is GNU 4.6.3
 ...
$ make
Scanning dependencies of target os
[  1%] Building C object common/os/CMakeFiles/os.dir/print.c.o
[  1%] Building C object common/os/CMakeFiles/os.dir/net.c.o
...
$ sudo make install
/usr/bin/cmake -H/mnt/Srcs/T/TigerVNC/tigervnc-1.3.1 -B/mnt/Srcs/T/TigerVNC/tigervnc-1.3.1/build --check-build-system CMakeFiles/Makefile.cmake 0
 ...

Windows用のUltraVNCは,UltraVNCの公式サイトから最新の1.1.9.6をダウンロードしてきました。こちらはSetup機能付きなので,そのままセットアップしていきます。

図4 UltraVNCのSetupウィザード

図4 UltraVNCのSetupウィザード

特に凝ったことをするつもりはないので,たいていの設定はデフォルトままですが,起動直後からVNCを使えるようにするため,Windowsのシステムサービスとして起動するオプションは指定しておきました。

図5 UltraVNCをWindowsのシステムサービスに追加

図5 UltraVNCをWindowsのシステムサービスに追加

インストールが終われば,システムトレイにUltraVNCのアイコンが現われるので,メニューから"Admin Property"を選び,VNC接続用のパスワードを指定しておきます。

図6 接続用のパスワードを設定

図6 接続用のパスワードを設定

サーバ側の準備ができれば,Linux側からvncviewerを起動して接続します。

$ vncviewer 192.168.1.11

TigerVNC Viewer 32-bit v1.3.1 (20140622)
Built on Jun 22 2014 at 15:55:13
Copyright (C) 1999-2011 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.

Tue Jul 29 17:38:33 2014
 CConn:       connected to host 192.168.1.11 port 5900
 CConnection: Server supports RFB protocol version 3.8
 CConnection: Using RFB protocol version 3.8

Tue Jul 29 17:38:37 2014
 PlatformPixelBuffer: Using default colormap and visual, TrueColor, depth 24.
 CConn:       Using pixel format depth 24 (32bpp) little-endian rgb888
 CConn:       Using Tight encoding

 ...

図7 TigerVNCからUltraVNCに接続した画面

図7 TigerVNCからUltraVNCに接続した画面

起動時のメッセージが示すように,VNCのサーバとクライアントは双方が利用可能な機能についてやりとりし,使用するRFBプロトコルのバージョンやデータの圧縮方法を決定します。今回は,サーバ側は64ビット版Windows7上のUltraVNC-1.1.9.6,クライアント側は32ビット版TigerVNC-1.3.1という組合せにしてみました。サーバとクライアントの間で,CPUアーキテクチャやVNCの実装が異なっていても,特に問題なくRFBプロトコルのバージョン(3.8)やデータの圧縮方法(Tight encoding)が決まりました。


多少なりともコンピュータに詳しい人間からすると,あるマシンが表示している画面そのものをキャプチャして別のマシンで表示させる,というVNCのアイデアは,強引かつ無駄が多すぎるように感じます。

事実,VNCが生まれた当時のCPUやビデオカード,ネットワークは,VNCを使うには力不足で,当時試した際には,画面の書き変わる様が見てとれるくらい動作が遅かった記憶があります。

しかしながら,CPUやビデオカードの性能が格段に向上し,ネットワークもギガビット・スイッチが数千円で買える時代になってくると,VNC経由で動画ファイルを操作することも不可能ではなくなりました。

筆者の場合,Linuxがメインの環境なので,Linuxでは使えない周辺機器は,便利そうでも敬遠しがちになります。しかし,VNCを使えばWindows環境をLinux上の一つのプロセスのように操作できるので,そのような周辺機器もそうストレスなくWindows経由で利用することができそうです。その意味で,VNCは新たな可能性を開いてくれた気がします。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html