X VNC Server for OS/2 - based on Xvnc server 3.3.2r3
V1.00, 1999/03/27, akira@sra.co.jp
V1.01, 1999/07/27, akira@sra.co.jp
_What is VNC ?
VNC (Virtual Network Computing) は ORL (The Olivetti & Oracle
Research Lab)で開発されたシステムで、リモートマシンのデスクトップを手
元のマシンから使うようにするものです。
1999/01、ORLはAT&Tに買収されて、AT&T Laboratories Cambridge に
なりました。しかしソースはそれ以前のものですので、あちこちに
ORL っていうのがあらわれます。
詳しくは
VNC - Virtual Network Computing
を御覧ください。
_What is Xvnc ?
Xvncは、仮想Xサーバで、Xアプリケーション(クライアント)からは通常
のXサーバに見え、VNCクライアントからはVNCサーバに見えるという
ものです。
┌───┐ ┌──┐ ┌───┐
│X apps│←−−→│ │ │ │
└───┘ │Xvnc│←−−→│ VNC │
┌───┐ │ │ │viewer│
│X apps│←−−→│ │ │ │
└───┘ └──┘ └───┘
X protocol VNC(RFB) Protocol
XvncとVNC viewerを組み合わせることにより、擬似的なX環境が得られます。
Xアプリケーション、Xvnc、VNC Viewer、はそれぞれ別のマシン上で動作す
ることができますので、マシン性能やネットワーク負荷に応じて処理を分散
させたり、異なった場所から同じアプリケーションを使うことができるよう
になります。
OS/2上でXapps、Xvnc、Viewerを動かせば擬似的なX環境になります。
┌ OS/2 ───────────────┐
│┌───┐ ┌──┐ ┌───┐│
││X apps│←→│ │ │ ││
│└───┘ │Xvnc│←→│ VNC ││
│┌───┐ │ │ │viewer││
││X apps│←→│ │ │ ││
│└───┘ └──┘ └───┘│
└──────────────────┘
Xvnc、Viewerを動かして、リモートマシンでXappsを動かせば、擬似的なX端
末として使えます。
┌ OS/2 ─────────┐
┌───┐ │ ┌──┐ ┌───┐│
│X apps│←−→│ │ │ ││
└───┘ │ │Xvnc│←→│ VNC ││
┌───┐ │ │ │ │viewer││
│X apps│←−→│ │ │ ││
└───┘ │ └──┘ └───┘│
└────────────┘
また他のマシンでviewerを使って、OS/2へリモートアクセスすることもでき
ます(X環境だけで、残念ながらPMにはアクセスできません)。
┌ OS/2 ─────────┐
│┌───┐ ┌──┐ │ ┌───┐
││X apps│←→│ │ │ │ │
│└───┘ │Xvnc│←−→│ VNC │
│┌───┐ │ │ │ │viewer│
││X apps│←→│ │ │ │ │
│└───┘ └──┘ │ └───┘
└────────────┘
_Contents
アーカイブには、OS/2(Warp3/Connect)上で作成したXvnc、および関連コマン
ドの実行モジュール/スクリプトと、パッチとが含まれています。多分、
Warp4でも動くと思います。
説明
README.jpn 今読んでいるもの
README.txt 英語版の説明書
実行モジュール
Xvnc.exe Xvncサーバ本体
vncserver.cmd Xvnc起動用のラッパースクリプト
vncpasswd.exe パスワードファイル生成ツール
xstartup.cmd 初期起動スクリプト(サンプル)
パッチ(patchesディレクトリ)
patch-vnc_3_3_2r3_os2 パッチ
Xvnc.def OS/2バイナリの定義ファイル
os2_stubs.c 追加/修正したファイル
os2_stubs.c.org 上のオリジナルファイル(XFree86用)
os2_stubs.c.dif 差分
v1.01ではサーバの起動スクリプト「vncserver.cmd」とドキュメントだけを
変更しています。
_Install and Use Binaries
インストール
アーカイブ中の
Xvnc.exe
vncserver.cmd
vncpasswd.exe
をPATHで指示されるディレクトリにコピーしてください。
Xvnc起動時にローカルにXapps を起動したい場合には、xstartup.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
を御覧ください。
起動
サーバは通常「vncserver」で起動します。「vncserver.cmd」はREXXスクリ
プトで、Xvncが必要とする環境、およびパラメタを設定するものです。
XFree86/2 を使っているなら、そのままで使えます。そうでなければ、各自
の環境に合わせて修正して使ってください。
最初に起動した時には、パスワードを聞いてきますので、適当なパスワード
を設定してください。パスワードは暗号化されて
HOME/.vnc/passwd
に格納されます。パスワードを変更するには「vncpasswd」コマンドを使いま
す。
終了
終了するには、タスクリストで該当するものをクローズしてください。
UNIX版では「vncserver -kill :1」とかしますが、OS/2版のスクリプト
ではサポートしていません(メッセージが出るだけです)。
Xvncサーバ自体はVIO(WINDOWCOMPAT)プログラムで、Ctrl-Cによって終了さ
せることができます。
実行ログ
vncserver によって起動した場合には、Xvncの実行ログが
HOME/.vnc/host.display.log
という形式で保存されます。なにか問題が起きた場合にはこれをチェックし
てください。
ファイル名はunix版とは異なっています。
VNC Viewer と組み合わせて使う
PM版のVNC Viewer がインストールされていますなら、
vncserver -view
で、サーバとビューワをまとめて起動することができます。これによって
PM上で擬似的にXを使うことができます。VNC viwerがインストールされて
いなければオプションは無効になります。
リモートマシンを使う
リモートマシンのXアプリケーションだけを使う(X端末として使う)場合
には、XDMCP(X Display Manager Control Protocol)を使うと便利です。
vncserver では
-query remote-host
-indirect remote-host
-broadcast
を指示することによってリモートマシンのxdm (X Display Manager) に接続
されます。この場合には、xstartup.cmdのローカルコマンドは実行されません。
リモートのXアプリケーションだけを使うなら便利です。
この時「-once」を使うと、Xセッション終了でXサーバも停止します。
vncserver のオプションとカスタマイズ
vncserver では、通常のXサーバオプションの他に以下のオプションが使え
ます。
:
ディスプレイ番号を指示します。指示が無ければ、空いているディ
スプレイ番号を探します。指示されたディスプレイ番号がすでに使
われていればエラーになります、
-name
リモートデスクトップの名前を指示します。これは、VNC viewer の
タイトルに表示されます。
-depth
リモートデスクトップの bpp (bits per pixel) を指示します。
8/16/24/32が指定できます。
-geometry x
リモートデスクトップのサイズを指示します。
-pixelformat rgbNNN|bgrNNN
ピクセルの表現形式を指示します。
これらのデフォルト値はvncserver スクリプトで定義されていますので、変
更したい場合にはスクリプトを書替えてください。
_FAQ
Q. Xのルートウィンドウは表示されるのですが、Xのアプリケーションが
何も表示されません。
A. まず手動で
xterm -display yourpc:0 (起動時に表示されるディスプレイ番号)
を起動してみてください。
A1. これで xterm が表示されたなら、スタートアップスクリプトの問題です。
通常のXFree86/2とは異なり、Xvnc は HOME/.vnc ディレクトリの
xstartup.cmd
スクリプトを実行します。ディレクトリとスクリプトファイルがきちん
とインストールされているかどうかを確認してください。
A2. xterm が起動できなかった場合、
Xlib: connection to "yourpc:0.0" refused by server
Xlib: Client is not authorized to connect to Server
というメッセージが出ていれば、クライアントの認証に失敗しています。
このような場合はとりあえず、
vncserver -noauth
でサーバを再起動してみてください。「-noauth」を付けると認証が無効
になり、ローカルマシンからのアクセスは無条件で有効になります。こ
れで接続できるようになったなら認証の問題に間違いありません。
同一マシン上でクライアントを使っているなら、サーバとクライアント
とが、HOME/.Xauthority ファイルを共有していなければなりません。
サーバ、クライアントとで異なったHOMEを参照しているとこのような結
果になります。HOME環境変数の値がサーバを起動した側とクライアント
を起動した側とで同じ値になっているかどうかをチェックしてみてくだ
さい。
_Build from Sources
UNIX用のソース(vnc_3_3_2r3_unixsrc.xxx)からビルドしたいという方は以
下の手順でどうぞ。XFree86/2 の開発環境が必要です。
アーカイブを展開
ドライブのルートで展開します。ビルド時にルートにいくつかのコマンドを
置くようになっていますので、ルートディレクトリが混雑していないドライ
ブがいいと思います。空きは40MBほど必要です。vnc_unixsrc というディ
レクトリ以下に展開されます。
書き込み可能に
ファイルはリードオンリになっていますので、書き込み可能にします。
[X:\vnc_unixsrc] chmod -R a+rw .
パッチを適用
[X:\vnc_unixsrc] patch -p 1 < patch_vnc_3_3_2r3_os2
libvncauthとvncpasswdを作成
[X:\vnc_unixsrc] xmkmf
[X:\vnc_unixsrc] make World
コマンドファイルをDOS テキストに変換
付属のコマンドファイルがUNIXテキストになっていて、REXXが読めないので、
DOS(OS/2)テキストに変換します。
[X:\vnc_unixsrc\Xvnc\config\imake] unix2dos *.cmd
[X:\vnc_unixsrc\Xvnc\config\util] unix2dos *.cmd
Xvnc をビルド
[X:\vnc_unixsrc\Xvnc] copy config\util\buildos2.cmd
[X:\vnc_unixsrc\Xvnc] buildos2
Xvnc.exe は X:\vnc_unixsrc\Xvnc\programs\Xserver
にできます。
_About Patches
vnc_unixsrc/Imakefile
今回は vncviewer を作成しないのでターゲットサブディレクトリから削除。
vnc_unixsrc/vncpasswd/Imakefile
ターゲットライブラリ名が「libvncauth.a」になっていたが、OS/2では異なっ
たライブラリ名(vncauth.a)を生成するので、ターゲットライブラリ名をマク
ロで生成するようにした。
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)を生成するので、ターゲットライブラリ名をマク
ロで生成するようにした。
vnc_unixsrc/Xvnc/programs/Xserver/hw/vnc/init.c
EMX 環境では strcasecmp が無いので、同等の stricmp に置き換え。
vnc_unixsrc/Xvnc/programs/Xserver/Imakefile
ライブラリ名が「libvnc.a」になっていたが、OS/2では異なったライブラリ
名(vnc.a)を生成するので、ターゲットライブラリ名をマクロで生成するよう
にした。
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
移植にあたって、
上野 博 さん
宮田 繁 さん
奥西 藤和 さん
よりいろいろを示唆をいただきました。どうもありがとうございました。
_Contanct
バグレポート、修正、その他ございましたら、までどうぞ。
最新版は、
からダウンロードできるようにしておきます