Virtual Network Computing

/ ホーム(H) / Linux(V) / VNC

About

パソコンで『遠隔操作』といえば SYMANTECpcAnywhere などが有名ですが、 オープンソースの世界では VNC という Linux はもちろん、Windows も遠隔操作できる素晴らしいソフトがあるそうです。 LAN 内の別の端末をいじるときはその端末があるところまで行くのが大変だと常々思うようでしたらゼヒとも検討を。

ちなみに私の場合は Linux 端末はすぐそばにありますし、ディスプレイも Windows 機のデュアルディスプレイの片割れを共用しているので わざわざ VNC を利用しなくてもいいんですけどね。まぁ興味本位です。 kernel コンフィギュレーションの時も make menuconfig ではなく vnc 上で make xconfig の方が楽ですからね。


Setting

まずは AT&T のサイト からソースを取得します。 今回は Windows 端末から Linux 端末を遠隔操作しますので [Download] から Linux 2.x for x86 と Windows 9x/2000/NT (Intel Win32) を選択してダウンロードします。

VNC サーバの設定(Linux)

取得した Linux バイナリを展開してパスの通ったディレクトリにコピーします。

# cd /usr/local/src
# tar xzf vnc-3.3.3r1_x86_linux_2.0.tgz
# cd vnc_x86_linux_2.0
# cp vnc* Xvnc /usr/local/bin

Java VNC viewer 用のクラスファイルなどもコピーします。

# mkdir -p /usr/local/vnc/classes
# cp classes/* /usr/local/vnc/classes
VNC サーバの起動

インストールは完了しましたので vncserver を実行します。ここでは root ではなく普段利用するアカウント(yoshikaw)で行っています。

$ vncserver

You will require a password to access your desktops.

Passwd:
Verify:

New 'X' desktop is netvine:1

Creating default startup script /home/yoshikaw/.vnc/xstartup
Starting applications specified in /home/yoshikaw/.vnc/xstartup
Log file is /home/yoshikaw/.vnc/netvine:1.log

ここで表示されるホスト名(netvine)の後に続く数字(1)がディスプレイ番号になります。

VNC サーバーの停止

vncserver の停止は以下のように -kill シグナルに続いてディスプレイ番号を引数に vncserver を実行します。

$ vncserver -kill :1

なお -kill と :<ディスプレイ番号> の間のスペースは必要なようです。

VNC クライアントの設定(Windows)

サーバーの設定は終わりました。さっそくクライアントの設定に移りましょう。 ダウンロードした Windows 用バイナリを展開すると vncviewer ディレクトリに VNC クライアント vncviewer.exe がありますのでこれを実行します。

VNC viewerの接続ダイアログ

サーバーの IP アドレスに続いてサーバ起動時に表示されたディスプレイ番号を入力し、 設定したパスワードを入力すると VNC での遠隔操作が開始されます。

VNC 接続成功。しかし twm...

おっと私にとって見慣れない、というか何をして良いかよく分からない殺風景な twn の画面が表示されました。 確かに X Window システムの遠隔操作が出来ますが twn では...

Xvnc の設定(ウィンドウマネージャの変更)

ご覧の通り VNC サーバのデフォルトウィンドウマネージャは twm ですので、これを別のウィンドウマネージャ、 ここでは GNOME 環境に変更します。(というか私の勉強不足でウィンドウマネージャ自体の仕組みがよく分かっていません) VNC の X サーバ起動スクリプト(~/.vnc/xstartup)を編集し、GNOME 環境が起動するように変更します。

#!/bin/bash
# xrdb $HOME/.Xresources
# xsetroot -solid grey
# xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
# twm &

xrdb $HOME/.Xresources
LANG=ja_JP.sjis
XMODIFIRES="@im=kinput2"
export LANG XMODIFIRES

kinput2 &

exec gnome-session

設定ファイルを変更したら VNC サーバを再起動して接続し直してみます。

Windows 2000 上の GNOME(クリックすると 1024x768 サイズでご覧になれます

おおっ!Windows で GNOME。なんだか得した気分。 でもなぜかシステムフォントが文字化けしてる(泣) Linux 端末上の GNOME では大丈夫なのに...何故だろう? ま、GNOME 使うときは隣のディスプレイを切り替えて直に Linux 端末をいじるので良いか:-)


to do

これでは VNC を利用するにも終了するにも telnet で操作しなければなりませんね。 VNC クライアントを終了させても、それは単に通信がとぎれただけであってサーバー上では実行中。 できればクライアントが終了したらサーバー側も終了できるようにしたいですね。 というか出来るようですが、まだまだ勉強不足です。


Reference

VNCのページ
VNC の仕組みの紹介、ドキュメントの邦訳、OS/2 への移植など様々な情報が得られます。

簡単PC遠隔操作−VNC−
ここのページは非常に参考になりました。というより殆ど私のページはここのパクリです。(^^;


/ ホーム(H) / Linux(V) / VNC

Copyright © Kazuhiro Yoshikawa (KaZ). All rights reserved.
Last modified