パソコンで『遠隔操作』といえば SYMANTEC の pcAnywhere などが有名ですが、 オープンソースの世界では VNC という Linux はもちろん、Windows も遠隔操作できる素晴らしいソフトがあるそうです。 LAN 内の別の端末をいじるときはその端末があるところまで行くのが大変だと常々思うようでしたらゼヒとも検討を。
ちなみに私の場合は Linux 端末はすぐそばにありますし、ディスプレイも Windows 機のデュアルディスプレイの片割れを共用しているので わざわざ VNC を利用しなくてもいいんですけどね。まぁ興味本位です。 kernel コンフィギュレーションの時も make menuconfig ではなく vnc 上で make xconfig の方が楽ですからね。
まずは AT&T のサイト からソースを取得します。 今回は Windows 端末から Linux 端末を遠隔操作しますので [Download] から Linux 2.x for x86 と Windows 9x/2000/NT (Intel Win32) を選択してダウンロードします。
取得した 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
インストールは完了しましたので 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)がディスプレイ番号になります。
vncserver の停止は以下のように -kill シグナルに続いてディスプレイ番号を引数に vncserver を実行します。
$ vncserver -kill :1
なお -kill と :<ディスプレイ番号> の間のスペースは必要なようです。
サーバーの設定は終わりました。さっそくクライアントの設定に移りましょう。 ダウンロードした Windows 用バイナリを展開すると vncviewer ディレクトリに VNC クライアント vncviewer.exe がありますのでこれを実行します。
サーバーの IP アドレスに続いてサーバ起動時に表示されたディスプレイ番号を入力し、 設定したパスワードを入力すると VNC での遠隔操作が開始されます。
おっと私にとって見慣れない、というか何をして良いかよく分からない殺風景な twn の画面が表示されました。 確かに X Window システムの遠隔操作が出来ますが twn では...
ご覧の通り 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 で GNOME。なんだか得した気分。 でもなぜかシステムフォントが文字化けしてる(泣) Linux 端末上の GNOME では大丈夫なのに...何故だろう? ま、GNOME 使うときは隣のディスプレイを切り替えて直に Linux 端末をいじるので良いか:-)
これでは VNC を利用するにも終了するにも telnet で操作しなければなりませんね。 VNC クライアントを終了させても、それは単に通信がとぎれただけであってサーバー上では実行中。 できればクライアントが終了したらサーバー側も終了できるようにしたいですね。 というか出来るようですが、まだまだ勉強不足です。
VNCのページ
VNC の仕組みの紹介、ドキュメントの邦訳、OS/2 への移植など様々な情報が得られます。
簡単PC遠隔操作−VNC−
ここのページは非常に参考になりました。というより殆ど私のページはここのパクリです。(^^;