どんな環境?
デスクトップマシン tm-1 (w2k) とノートマシン tm-2 (LASER5 Linux6.2)
が、100BaseTXのLANにつながっています。
他に、デスクトップマシン myaura (winme) やノートマシン ddn (w2k)
などもありますが、これらは私のマシンではありません。
目的
tm-2 に vnc を導入し、X環境を tm-1 から使用できるようにする。
linux-box に vnc をセットアップする
私の場合、vnc-3.3.3r2 のバイナリを Download し、
# tar zxvf vnc-3.3.3r2_x86_linux_2.0.tgz
で展開後、書庫に含まれるバイナリを /usr/local/bin に転送した。
# cd vnc_x86_linux_2.0
# cp vncviewer vncserver vncpasswd vncconnect Xvnc /usr/local/bin
www-browser&java でアクセスできるように、クラスファイルを転送した。
# mkdir -p /usr/local/vnc/classes
# cp classes/* /usr/local/vnc/classes
ちなみにこれらの作業は、tm-1のtelnet(TeraTermを使用)から行った。
とりあえず接続できることを確かめる
tm-1 上のブラウザ(IE)で、tm-2 の vnc にアクセスできることを確認する。
このためにはまず、tm-2 上で vncserver が動作していなければならない。
(この煩雑さを回避・解消するために、後述する iXvnc を導入した)
telnetでtm-2にログインし、
% vncserver
を実行する。このとき、パスワードが求められるので、vnc経由での
ログインに使用するパスワードを入力する。
ここで注意しなければならないのは、vncでログインしたユーザは、この
vncserver を実行したユーザ名でログインする(してしまう)点である。
そのため、不用意に root で vncserver を起動してしまったりすると
(パスワードがバレなければいいということは別として)セキュリティ上
好ましくない。
一般ユーザで vncserver を実行しよう。
すると、
New 'X' desktop is tm-2:1
Starting applications specified in /home/ahi/.vnc/xstartup
Log file is /home/ahi/.vnc/tm-2:1.log
というようなメッセージが表示される。ここで、
tm-2:1
というのが、vnc からログインする際のディスプレイ番号になる。
これでとりあえずtelnetはログアウトしてもよい。
次に、tm-1上で IE を起動する。
ネットワークはつながっているので、とりあえず
http://tm-2:5801/
にアクセスしてみる。ここで、:5801のうち、
58はbrowser&java経由での
vnc接続時の慣用的なポート番号であり、
01は先ほどのディスプレイ番号である。
アクセスすると、パスワードが求められるので、先ほどのvncserver 実行時に入力したパスワードを入力する。
これで、twm あたりが起動すれば、とりあえず成功である。
終了するには?
vncviewerやブラウザを終了すると、見かけ上、処理はすべて終了したかに見えるが、
先ほどと同じディスプレイ番号とパスワードさえ入力すれば、
終了前の画面がそのままもう一度表示されることになる。
つまりX-serverは動いているのだ。
もちろんその実体は vncserver である(厳密にはこいつがXvncを起動する、はず・・・(¨;))。よって、本当にすべての処理を終了したいときは、この
vncserver も終了しなければならない。
これには、次のようなコマンドをtelnet上で実行する。
# vncserver -kill :1
この際、telnetのユーザは、vncserver 実行時と同じでなければならない(別に
入ってから変更してもいいんだよ、rootみたくw)
また、このコマンドを実行すると、vnc-client は接続が切れたために
自動的に終了する(ブラウザなら灰色の画面になるかな?)
じゃあ、一連の作業って?
あなたが「vnc経由でtm-2上のXアプリケーションを使ってみたいなぁ」
なんて考えたとき、以上のような手順でvncログインしなければならない。
すなわち、次のような手順が必要となる。
-
telnet で tm-2 上の vncserver を起動する
(ディスプレイ番号とパスワードを覚える)
-
tm-1上の www-browser で http://tm-2:58xx/ にアクセスする。
パスワードを入力する。
-
vnc 経由でいろいろ処理する。
-
telnet で tm-2 上の vncserver を kill する。
この作業は明らかに煩雑である!
そう、理想の作業とは次のようなものだ。
-
tm-1上の vnc-viewer で tm-2 にアクセスする。
-
vnc 経由でいろいろ処理する。
-
vnc-viewer を終了する。
知っての通り、これはまさしく X-Server そのものである!
動作原理は別として、X-Serverを用いるときと、全く同じ操作性が
実現できるなら、これに越したことはない。
・・・そうなのだ。VNCならそれが(フリーで)できるのだ!!
(注:Windows用の実用的なX-Serverはまだまだ高価である。数万円は
するんだったよね?)
iXvncの出番ですよ!
X-Serverのように vnc を使用する。
これを行うために、私はずいぶんと苦労してしまった。
歴史的には X用のvncをX端末のように使えるパッチをAndre Moreira氏が
作ったことが発端である。が、このパッチは 3.3.3r2で本体に
取り込まれてしまったため、現在ではvncをセットアップするだけで
使用できる。
ここでは便宜上『X端末のように使えるvnc』をiXvncと呼ぶことにする。
技術的には、vncサーバ(Xvnc)をinetdがアクセス要求に応じて
動的にspawnし、vncクライアントが終了すると、自動的に
サーバが終了する、という処理を行うため、それらの設定を
各種ファイルに設定しなければならない。
めんどくさいので、簡単な説明を以下に述べる。
/etc/services
を書き換える。
典型的には次を追加する。
vnc-800x600x8 5950/tcp
vnc-800x600x32 5951/tcp
vnc-1024x768x8 5952/tcp
vnc-1024x768x32 5953/tcp
/etc/inetd.conf
を書き換える。
/etc/services に記述した内容に合わせて、
vnc-800x600x8 stream tcp nowait nobody /usr/local/bin/Xvnc Xvnc -inetd -broadcast -once -geometry 800x600 -depth 8 -cc 3
vnc-800x600x32 stream tcp nowait nobody /usr/local/bin/Xvnc Xvnc -inetd -broadcast -once -geometry 800x600 -depth 32
vnc-1024x768x8 stream tcp nowait nobody /usr/local/bin/Xvnc Xvnc -inetd -broadcast -once -geometry 1024x768 -depth 8 -cc 3
vnc-1024x768x32 stream tcp nowait nobody /usr/local/bin/Xvnc Xvnc -inetd -broadcast -once -geometry 1024x768 -depth 32
などと記述すればよい。
xdm を使えるようにする。
/etc/X11/xdm/Xaccess あたりを変更すればよい。(もう必要ないかな?)
#* を
* にする。
xdm がなぜか使えなかったため、gdm を使用する。
ので、/etc/X11/gdm/gdm.conf を修正する。
[xdmcp]
Enable=1
Port=177
linux-box 自体を runlevel:5 にしなければ {xg}dm が走らない
ので、/etc/inittab を書き換える。もちろん{xg}dmも
走らせる。
...
id:5:initdefault:
...
x:5:respawn:/usr/bin/gdm
tm-2のGNOMEが安定していないので、KDE をデフォルトにする。
/etc/X11/gdm/Sessions/Default
exec /etc/X11/xdm/Xsession kde
以上をすべて行った後、tm-2を再起動する。runlevel:5にするためだ。
tm-2が再起動したら、今度は vncviewer を使って、tm-2にアクセスする。
tm-2:50
と指定すれば、800x600x8のvncサーバが自動的に起動する。と同時に
gdm も起動するはずである。
この画面が出たときは、格別の幸せを感じることだろう(笑)
iXvncを入れてみて。
そう、これらすべてを行わなければならないのだ。大変である。
しかしまぁ、vncを使おうとするくらいの意気込みがあれば、
この程度の作業は苦ではないだろう。
作業自体は楽である。問題なのは『なにをすればよいか?』
がわからなかった点である。
この文章を読んで、試してみようという人は、ラッキーである。
やらねばならないことがわかっているのだから。
それにしてもdistribution毎にファイルは異なるだろうし、
不運にも gdm が入っていない場合は、xdm を使えるようにするか、
gnome を入れる必要もでてくる。ちなみに私は kdm も試したが、
gray-screen すら出てこなかった(¨;)
なにはともあれ、非常に快適である。
ブラウザから使えないという難点はあるが、これも
近い将来解決されるだろう(強制的に?httpdでポートを
開いておくという方法で解決できるらしい。暇があればやってみよう!)
有益な情報ソース
最初はvncの本を買うつもりだったが、Webを調べるだけでここまでできてしまった。
こてこてのWindowsユーザたる私でもこの程度のことはできるらしい(笑)
というわけで、非常に有益な情報をもたらせてくださった各Webサイト様を紹介させていただきます。