Akira's Commentary

What is VNC ?

VNC (Virtual Network Computing) は ORL (The Olivetti & Oracle Research Lab)で開発された システムで、リモートマシンのデスクトップを手元のマシンから 使うようにするものです。詳しくは VNC - Virtual Network Computing (1)、 あるいは、私の VNCの紹介ページ を御覧ください。

Jan. 1999, ORL は AT&T に買収されて AT&T Laboratories Cambridge になりました(1)。 しかしソースはそれ以前のものですので、あちこちに ORL っていうのがあらわれます。

What is Xvnc ?

Xvncは、仮想Xサーバで、 Xアプリケーション(クライアント)からは通常のXサーバに見え、 VNCクライアントからはVNCサーバに見えるというものです。

XVNC-Whatis

XvncとVNC viewerを組み合わせることにより、 擬似的なX環境が得られます。 Xアプリケーション、Xvnc、VNC Viewer、 はそれぞれ別のマシン上で動作することができますので、 マシン性能やネットワーク負荷に応じて処理を分散させたり、 異なった場所から 同じアプリケーションを使うことができるようになります。

OS/2上でXapps、Xvnc、Viewerを動かせば擬似的なX環境になります。

XVNCによるX環境

Xvnc、Viewerを動かして、リモートマシンでXappsを動かせば、 擬似的なX端末として使えます。

XVNCによるX端末

また他のマシンでviewerを使って、 OS/2へリモートアクセスすることもできます (X環境だけで、残念ながらPMにはアクセスできません) (2)

XVNCによるリモートアクセス

Download and Install

ここからダウンロードしてください。

ZIPファイルにはバイナリとパッチファイルが含まれています。

v1.01では、起動スクリプトとドキュメントだけを更新しています。 バイナリとパッチは以前の版(v1.00, 1999/03/28)と同じですので、 更新されたスクリプトとドキュメントだけをダウンロードするのも よいでしょう。

バイナリをそのまま使う場合には、アーカイブ中の

  • Xvnc.exe
  • vncserver.cmd
  • vncpasswd.exe

をPATHで指示されるディレクトリにコピーしてください。

Xvnc起動時にローカルにXapps を起動したい場合には、 xstarup.cmdを編集して、

HOME/.vnc

ディレクトリに置いてください。 ロングファイル名を多用しますので、 HOMEディレクトリはHPFSドライブに置いてなければなりません。

なお、これらのプログラムを実行するには EMX Runtime (0.9c以上)が必要です。 また、Xのフォント、およびいくつかのXクライアントも必要です。 最低限、XFree86/2の

  • Xbase.zip
  • Xbin.zip
  • Xfnts.zip
  • Xfnon.zip

が必要になります。 これらのインストールについては、XFree86/2のページ

http://borneo.gmd.de/~veit/os2/xf86os2.html (3)

を御覧ください。

サーバは通常「vncserver」で起動します。 「vncserver.cmd」はREXXスクリプトで、Xvncが必要とする環境、 およびパラメタを設定するものです。 XFree86/2 を使っているなら、そのままで使えます。 そうでなければ、各自の環境に合わせて修正して使ってください。

最初に起動した時には、パスワードを聞いてきますので、 適当なパスワードを設定してください。パスワードは暗号化されて

HOME/.vnc/passwd

に格納されます。 パスワードを変更するには「vncpasswd」コマンドを使います。

終了するには、タスクリストで 該当するものをクローズしてください。

UNIX版では「vncserver -kill :1」とかしますが、 OS/2版のスクリプトではサポートしていません (メッセージが出るだけです)。

Xvncサーバ自体はVIO(WINDOWCOMPAT)プログラムで、 Ctrl-Cによって終了させることができます。

パッチについて

パッチ単体はこちらに おいてあります。以下のような修正を加えました (4)

vnc_unixsrc/Imakefile
今回は vncviewer を作成しないので ターゲットサブディレクトリから削除しました。
vnc_unixsrc/vncpasswd/Imakefile
ターゲットライブラリ名が「libvncauth.a」になっていましたが、 OS/2では異なったライブラリ名(vncauth.a)を生成するので、 ターゲットライブラリ名をマクロ 「TargetLibraryName」で生成するようにしました。
vnc_unixsrc/Xvnc/config/cf/os2.cf
BuildXKB、BuildLBXが、vnc.defと二重定義になるので、 こちら側を#ifndefで囲いました。
vnc_unixsrc/Xvnc/config/cf/vnclibs.def
ターゲットライブラリ名が「libvncauth.a」になっていましたが、 OS/2では異なったライブラリ名(vncauth.a)を生成するので、 ターゲットライブラリ名をマクロ 「TargetLibraryName」で生成するようにしました。
vnc_unixsrc/Xvnc/programs/Xserver/hw/vnc/init.c
EMX環境ではstrcasecmpが無いので、同等のstricmpに置き換えました。
vnc_unixsrc/Xvnc/programs/Xserver/Imakefile
ライブラリ名が「libvnc.a」になっていましたが、 OS/2では異なったライブラリ名(vnc.a)を生成するので、 ターゲットライブラリ名をマクロ 「TargetLibraryName」で生成するようにしました。
vnc_unixsrc/Xvnc/programs/Xserver/os/Imakefile
追加ファイル「os2_stubs.c」用の定義を追加。
vnc_unixsrc/Xvnc/programs/Xserver/os/os2_stubs.c
ファイルを追加。これは、XFree86の

xc/programs/Xserver/hw/xfree86/os-support/os2

を、os2PseudoSelect コードを有効にするために定義を追加し、 また終了時に select からすぐに復帰するように 修正を加えたものです。
vnc_unixsrc/Xvnc/programs/Xserver/Xvnc.def
ファイルを追加しました。OS/2 リンク用の定義ファイルです。

Acknowledges

移植にあたって、

  • 上野 博 さん <zodiac@ibm.net>
  • 宮田 繁 さん <miyata@kusm.kyoto-u.ac.jp>
  • 奥西 藤和 さん <fuji0924@mbox.kyoto-inet.or.jp>

よりいろいろを示唆をいただきました。 どうもありがとうございました。

連絡先

バグレポート、修正、その他ございましたら、 akira@p08.itscom.net (5)。 にどうぞ。