Akira's Commentary

入手

AT&T ケンブリッジ研究所の Downloading VNCのページでは、

  • Unix Sources (2.5M)
  • Linux 2.x for x86 (glibc only) バイナリ
  • Solaris 2.5 (Sparc) バイナリ

のパッケージが入手できます(1)。 Linux/FreeBSDなら、rpm/portsが用意されていますので そちらを使う方が簡単かも知れません。また、 VNC on other platforms のページからもいくつかのバイナリパッケージが入手できます。

私はソースパッケージからインストールしました。 ソースパッケージは約3MBで、 ビューワとサーバの両方のソースが含まれています。

    2766008 Jan  5 14:27 vnc-3_3_3_unixsrc.zip

これを展開すると、 「vnc_unixsrc」ディレクトリ以下にソースが展開されます。 展開後のサイズはだいたい20MBになります。

Make

まず、ディレクトリ「vnc_unixsrc」で

xmkmf
make World

します。これで、

libvncauth
VNCの認証用ライブラリ
vncviewer
Xベースのビューワ
vncpasswd
VNCセッションパスワード作成/変更

が生成されます。ビューワだけを使うならこれでOKです。 サーバ(Xvnc)は別途makeします。サーバをmakeするには

cd Xvnc
make World

とします。こちらは相当時間がかかります。 サーバのバイナリは、

vnc_unixsrc/Xvnc/programs/Xserver/Xvnc

にできます。 ここまでうまくいったなら、最後にディレクトリ「vnc_unixsrc」で

vncinstall <installation-directory>

を実行して、必要なバイナリ、スクリプトをインストールします。

FreeBSD (2.2.6) ではこのままで問題なくmakeできました。

古いSun (SunOS 4.1.4) では、 vncviewerのmakeでmemmoveが未定義で駄目でした。 これは、vncviewer.hに

#if defined(sun)
#include <memory.h>
#define memmove(dst,src,len) bcopy((char *)(src),(char *)(dst),(int)(len))
#endif

を追加してごまかしました。また、vncinstall でも中で使っている

cp -pf $f $dst

の「f」オプションがエラーになりましたので、 外してインストールしました。

VNC on other platforms のページには、いくつかのUnixバリアントでの修正メモが載っていますので、 そちらも参考にされるといいでしょう。

サーバを起動してみよう

まずVNCサーバを起動してみましょう。 通常は、Xvncを直接起動するのではなく、 「vncserver」スクリプトで起動します。 これはperlスクリプトで、各種の設定を行なってから Xvncを起動するようになっています。

起動前に「vncserver」スクリプトの いくつかの設定をチェックしておいた方がいいでしょう。

最初の行
最初の行に#!/usr/bin/perlとなっていますので、 実際にperlがあるパスに変更してください。

手元のFreeBSD/SunOSではどちらも #!/usr/local/bin/perlに変更しました。

Global Variables (32行目あたり)
ここの部分の
$geometry = "1024x768";
$depth = 8;
が仮想Xサーバの画面サイズとピクセルデプスになります。 好みに合わせて変更しておいた方がいいでしょう。 ちなみに、これらの設定はvncserverのパラメタ
-geometry <width>x<height>
-depth <depth>
で変更することができます。

とりあえずは、最初の行のperlのパスが合っていれば起動できると思います。

最初にvncserverを起動した場合には、

121 [srapc451.sra.co.jp] vncserver

You will require a password to access your desktops.

Password:

とパスワードを聞いてきますので、 適当なパスワードを設定してください。 パスワードは暗号化されて

HOME/.vnc/passwd

に格納されます。 このパスワードは、ビューワからのアクセスを認証するためのものです。 ビューワを起動してサーバにアクセスするとパスワードを聞いてきますので、 ここで設定したパスワードを入力します。 パスワードは「vncpasswd」で変更することができます。

問題がなければ引き続いてXvncサーバが起動され、 以下のようなメッセージが表示されます。

New 'X' desktop is srapc451.sra.co.jp:1

Starting applications specified in /usr/akira/.vnc/xstartup
Log file is /usr/akira/.vnc/srapc451.sra.co.jp:1.log

ただ、これらのメッセージはvncserverスクリプト側で表示しているもので、 この後でXvncが止まってしまっていることがあります。 一応、ちゃんとXvncが動作しているかどうかをpsとかで確認しましょう。

Xvncが止まってしまった場合には、 上のログファイルにメッセージが残っていますので、 それを元に手直しする必要があります。 大抵の問題は FAQ [ 原文/ 翻訳 ]に載っていて、簡単に解決できます。 以下にUNIXサーバに関連した部分をピックアップしておきます。

(FAQ9) vncserverスクリプトが動作しない
vncserverスクリプトの最初の行でperlを起動しています。 そのパスが正しいかどうかを確認してください。
(FAQ11) Could not open default font 'fixed'."でサーバが落ちる
これはフォントパスが不適切な場合に発生します。 この場合には、「vncserver」スクリプトの147行目あたりの
# Add font path and color database stuff here, e.g.:
#
# $cmd .= " -fp /usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/75dpi/";
# $cmd .= " -co /usr/lib/X11/rgb";
を適切に設定してください(2)
(FAQ21) vncserver/Xvncがルートでしか動作しない
同一マシン上でXクライアントを使用する場合には、Xvncは
/tmp/.X11-unix/
に unix domain socket を作ろうとします。 このディレクトリに書き込み許可がない場合に こういうことがおきます。 このディレクトリのパーミッションを確認してください。

大抵はこの程度のフィックスで動作するはずです。

なお、サーバを止めるには

vncserver -kill :1

とします。コロンの後はディスプレイ番号で起動時に表示されるものです。 あるいは「ps」で見れば判るでしょう。 ですが、ここではサーバ止める前にビューワを使ってみましょう。

ビューワを使ってみよう

ビューワを使うには特に設定とかは要りません。ただ、

vncviewer <host>:<display-number>

とするだけで起動できます。 ここで、<host>は起動したサーバのホスト名、あるいはIPアドレス、 <display-number>はXvncサーバのディスプレイ番号です。 ディスプレイ番号はサーバ起動時に表示されます。

ビューワが起動されてホストと接続すると、

VNC server supports protocol version 3.3 (viewer 3.3)
Password:

というメッセージが表示されてパスワードを聞いてきます。 ここで、サーバの最初の起動時に設定した、 (あるいはvncpasswdで設定した) パスワードを入力します。

パスワードが正しければ

VNC authentication succeeded

というメッセージが表示されて (他にもごちゃごちゃとメッセージが出ます) VNCセッションが始まり、 ビューワ上に仮想Xデスクトップが表示されます。

新しい(3.3.3以降)ビューワでは、 パラメタ無しでの起動も可能になりました。 パラメタ無しで起動された場合には、接続先のサーバ名 (<host>:<display-number>)を 入力するポップアップウィンドウが表示され、 次にパスワードを入力するポップアップウィンドウが表示されます。

サーバダイアログ パスワードダイアログ
server dialog passwd dialog

この場合もパスワードが正しければ

VNC authentication succeeded

というメッセージが表示されて(他にもごちゃごちゃとメッセージが出ます) VNCセッションが始まり、 ビューワ上に仮想Xデスクトップが表示されます。

仮想Xデスクトップ

特になにもいじっていなければ、仮想Xデスクトップは、 ウィンドウマネージャtwmで、 グレイの背景上に、タイトル「X Desktop」のxtermが表示されます。

VNC Desktop

この状態で起動されているプログラムは、

HOME/.vnc/xstartup

で指定されます。 このファイルはサーバを最初に起動した時に自動的に作成されます。 他のウィンドウマネージャを使ったり、他のプログラムを起動したいなら このファイルを編集してください。

Xvncとビューワの組み合わせは、 だいたい通常のXと同じように使うことができます。 ただ、すべてが同じというわけではありません。 以下に、通常のXとの違いをまとめておきます。

ビジュアルクラスの問題(FAQ23)
多くのXサーバは複数のビジュアルクラスが使用可能になっていますが、 Xvncは起動時に指定された ひとつのビジュアルクラスしかサポートしていません。 このため特定のビジュアルクラスに依存するようなプログラムでは エラーになることがあります。
また、デフォルトではXvncは「true color」で動作します。 ピクセルデプス8でもやはり「true color」動作になります。 このため、「PseudoColor」でしか動作しないプログラムが 実行できなかったり、表示がおかしくなることがあります。
このような場合には、Xvncサーバのデプスやビジュアルを 変更してみてください。これらは、vncserverの
-depth <depth>   カラーデプス変更
-cc 3                       PseudoColor ビジュアル使用
で変更することができます。 同一マシン上で複数のXvncを実行させることができますので、 異なったビジュアルを必要とするプログラム毎に、 異なった設定のXvncを起動してしまうのもいいでしょう。
ローカルキーの問題
キー入力のうちのいくつかのものは、 ビューワ側のOSやビューワ自体によってローカルに処理されてしまって、 リモートのXvncサーバに渡されません。 どのようなキーがローカルに処理されるかは、 ビューワとその実行環境によって異なります。
X版のvncviewerの場合には、 ほぼすべてのキー入力がリモートのXvncに渡されます。 例外はF8キーで、新しいビューワ(3.3.3以降)では、 F8キーでビューワのローカル機能を実行するための ポップアップウィンドウが呼び出されるようになりました。
popup window
モディファイアキーの問題(FAQ34)
モディファイアキー(Shift/Ctrl/Alt)を押した状態でフォーカスを失ったり、 ビューワを終了させたりすると、 サーバにはモディファイアキーが押された、というイベントだけが通知され、 離されたというイベントが通知されないことになります。
このような状態で、 その後でビューワにフォーカスが戻ったり、再接続した場合は、 サーバはキー入力を意図しないモディファイアとの組み合わせで 受け取ってしまうことになります。
もし、キー入力が変だ、と思った場合には、モディファイアキーを 押して離してみてください。だいたいはこれで正常に戻るはずです。

なお、vncserver/Xvnc、X版のvncviewerの詳しい使い方、 設定等についてはそれぞれのドキュメントを御覧ください。

X-based VNC server 原文 翻訳
VNC viewer for X (3.3.3以降) 原文 翻訳
VNC viewer for X (3.3.2以前) 原文 翻訳