デスクトップマシン tm-1 (w2k) とノートマシン tm-2 (LASER5 Linux6.2)
が、100BaseTXのLANにつながっています。
他に、デスクトップマシン myaura (winme) やノートマシン ddn (w2k)
などもありますが、これらは私のマシンではありません。
tm-2 に vnc を導入し、X環境を tm-1 から使用できるようにする。
私の場合、vnc-3.3.3r2 のバイナリを Download し、
で展開後、書庫に含まれるバイナリを /usr/local/bin に転送した。# tar zxvf vnc-3.3.3r2_x86_linux_2.0.tgz
www-browser&java でアクセスできるように、クラスファイルを転送した。# cd vnc_x86_linux_2.0 # cp vncviewer vncserver vncpasswd vncconnect Xvnc /usr/local/bin
ちなみにこれらの作業は、tm-1のtelnet(TeraTermを使用)から行った。# mkdir -p /usr/local/vnc/classes # cp classes/* /usr/local/vnc/classes
tm-1 上のブラウザ(IE)で、tm-2 の vnc にアクセスできることを確認する。
このためにはまず、tm-2 上で vncserver が動作していなければならない。
(この煩雑さを回避・解消するために、後述する iXvnc を導入した)
telnetでtm-2にログインし、
を実行する。このとき、パスワードが求められるので、vnc経由での ログインに使用するパスワードを入力する。% 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
というのが、vnc からログインする際のディスプレイ番号になる。 これでとりあえずtelnetはログアウトしてもよい。tm-2:1
にアクセスしてみる。ここで、:5801のうち、58はbrowser&java経由での vnc接続時の慣用的なポート番号であり、01は先ほどのディスプレイ番号である。http://tm-2:5801/
vncviewerやブラウザを終了すると、見かけ上、処理はすべて終了したかに見えるが、
先ほどと同じディスプレイ番号とパスワードさえ入力すれば、
終了前の画面がそのままもう一度表示されることになる。
つまりX-serverは動いているのだ。
もちろんその実体は vncserver である(厳密にはこいつがXvncを起動する、はず・・・(¨;))。よって、本当にすべての処理を終了したいときは、この
vncserver も終了しなければならない。
これには、次のようなコマンドをtelnet上で実行する。
この際、telnetのユーザは、vncserver 実行時と同じでなければならない(別に 入ってから変更してもいいんだよ、rootみたくw)# vncserver -kill :1
あなたが「vnc経由でtm-2上のXアプリケーションを使ってみたいなぁ」
なんて考えたとき、以上のような手順でvncログインしなければならない。
すなわち、次のような手順が必要となる。
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
と指定すれば、800x600x8のvncサーバが自動的に起動する。と同時に gdm も起動するはずである。tm-2:50
そう、これらすべてを行わなければならないのだ。大変である。
しかしまぁ、vncを使おうとするくらいの意気込みがあれば、
この程度の作業は苦ではないだろう。
作業自体は楽である。問題なのは『なにをすればよいか?』
がわからなかった点である。
この文章を読んで、試してみようという人は、ラッキーである。
やらねばならないことがわかっているのだから。
それにしてもdistribution毎にファイルは異なるだろうし、
不運にも gdm が入っていない場合は、xdm を使えるようにするか、
gnome を入れる必要もでてくる。ちなみに私は kdm も試したが、
gray-screen すら出てこなかった(¨;)
なにはともあれ、非常に快適である。
ブラウザから使えないという難点はあるが、これも
近い将来解決されるだろう(強制的に?httpdでポートを
開いておくという方法で解決できるらしい。暇があればやってみよう!)
最初はvncの本を買うつもりだったが、Webを調べるだけでここまでできてしまった。
こてこてのWindowsユーザたる私でもこの程度のことはできるらしい(笑)
というわけで、非常に有益な情報をもたらせてくださった各Webサイト様を紹介させていただきます。
VNC | VNCの本家ページ(英語) |
Andre Moreira iXvnc patch | iXvnc パッチの作者 Andre Moreira 氏の解説(英語) |
VNC のページ | 畠山 明さんによるVNCの解説。詳細な解説でとても役に立ちました。 |
簡単PC遠隔操作-VNC- | 奈酢美さんによるVNC(windows to windows)の解説 |
簡単PC遠隔操作-VNC- Part2 | 奈酢美さんによるVNC(windows->linux)の解説 ここを最初に参考にしました。とってもわかりやすいです。 |