簡単PC遠隔操作−VNC−   →WinVNC編 →活用編


Part1.Winvnc編
Part2.XVNC編
Part3.活用編
Part4.リナザウ編
Part5.W-ZERO3編
Part6.PSP編
・Part7.VMWARE編


Part2 XvncでLinuxを操作しよう。


Xvncとは

簡単PC遠隔操作−VNC−で説明した通り、VNCには各種プラットフォーム用のサーバーが用意されています。
前回はWindows用の説明でしたが、今回はUnix系OS用のVNCについてです。

UNIX系のGUIシステムでは一般にX Windowシステムというものを使用しています。
Linuxでは、Xfree86というGUIシステムを使用するのが一般的です。

このX Windowシステムはネットワーク上で使用することを想定しており、XサーバとXクライアントで構成されています。
このため実際にプログラムが動作するマシンと画面を表示・操作するマシンが異なっていても大丈夫なのです。
(もちろん同一マシン上でも問題ありません。この場合はネットワークではなくパイプという機能を使用してデータのやり取りを行うため高速なデータ伝送が出来るようになっています。)

一般のイメージでは、Xサーバがサービスを提供する側(アプリケーションを動作させるマシン上)で動いていて、Xクライアントが表示・操作する側で動いているものという風に考える方も入ると思いますが実は逆です。

X Windowは言ってみれば遠隔操作できる画用紙のようなもので、画面表示などの入出力をサービスするシステムなので、操作する側で動く画面そのものがXサーバで、その画面を使用するプログラムがXクライアントだったりします。
XクライアントがXプロトコルを使用して、Xサーバ(画面)を操作すると考えればよいです。

 ┏━━━━━━━━━━━━┓
 ┃ ┌────────┐ ┃
 ┃ │アプリケーション│ ┃
 ┃ └────────┘ ┃
 ┃   |↑Xプロトコル ┃
 ┃   ↓|       ┃
 ┃┌──────────┐┃
 ┃│Xサーバ(画面表示)|┃
 ┃└──────────┘┃
 ┗━━━━━━━━━━━━┛

さて、Unix系VNCサーバはXvnc(X Base VNC)とも呼ばれています。
このXはそのまま
「X Window System」のXです。

つまり、XvncサーバはXサーバの機能をそのまま持っています。
Xvncサーバがアプリケーションからの指示で仮想画面を操作し、その結果をVNCプロトコルでVNCクライアント(Viewer)を送信する形になります。

 ┏━━━━━━━━━━┓
 ┃┌────────┐┃
 ┃│アプリケーション│┃
 ┃└────────┘┃
 ┃  |↑Xプロトコル┃
 ┃  ↓|      ┃
 ┃┌────────┐┃        ┌───────┐
 ┃│Xvncサーバ │┃ ネットワーク │VNCビューワ│
 ┃│ (仮想画面) │←−−−−−−−→│ (画面表示) │
 ┃└────────┘┃VNCプロトコル└───────┘
 ┗━━━━━━━━━━┛

ちなみに、XvncでないVNCサーバは現時点ではWindowsとMacが相当します。
この場合は、アプリケーションが変更した画面をVNCサーバが調べて変更されたところのみをビューワに知らせる形となります。

このため、XvncはXプロトコルをVNCプロトコルに変換するだけのものであるため、Windows用のVNCサーバと比べると非常に動作が高速になっています。(画面の変更部分を調査する必要がない)
しかし逆を言えば、Xに対応したアプリケーションしか操作できないという欠点もあると言うことですが、Xに対応しないアプリケーションでも、Xに対応したターミナルソフト(Windowsで言えばDOS窓のようなもの)を使用すれば問題無く使用できます。

さて、なぜわざわざWindowsでXvncサーバを経由してまでVNCを使用するのか?
という疑問があると思うのですが、実は

Windows用のXサーバというものが非常に高価であり、Freeのものがあまり無い

という現状があるのです。VNCであればFreeですので、高価なXサーバを購入しなくても良いのです。
操作も非常に簡単です。


Xvncのインストール

ここでは、Linux(RedHatLinux6.2[FTP]版)にXvncをインストールする方法を紹介します。

いちばん簡単なのは、VNCのダウンロードページへ行ってLinux用の実行形式ファイルをダウンロードする方法です。

 

http://www.uk.research.att.com/vnc/へ行って、実行バイナリをダウンロードします。

[200401追記]
現在AT&T Laboratpris Cambridgeは閉鎖されました。現在は元の開発スタッフによって
RealVNCとして開発が続けられています。
2004年01月現在の最新バージョンはRealVNC 3.3.7となります。使用方法は今までのVNCとほとんど変更がありません。

RedHatLinux6.2ではLinux 2.x for x86 (glibc only) バイナリが使用できます。
現在のバージョンは3.3.3r2ですので、ダウンロードファイルは
"vnc-3.3.3r2_x86_linux_2.0.tgz"になります。

このファイルを任意の場所で解凍します。解凍するコマンドは

tar zxvf vnc-3.3.3r2_x86_linux_2.0.tgz

です。
実行すると、"vnc_x86_linux_2.0cd"というディレクトリが出来あがります。
この下に実行バイナリがありますのでパスの通っているディレクトリにコピーします。
作業はroot権限でログインして行ってください。

ここでは、/usr/local/binにインスト−ルします。

cd vnc_x86_linux_2.0
cp vncviewer vncserver vncpasswd vncconnect Xvnc /usr/local/bin

また、Java VNC viewer用のファイルもコピーします。

mkdir -p /usr/local/vnc/classes
cp classes/* /usr/local/vnc/classes

これで、インストール自身は終了なのですが、なぜか私のインストールしたRedHat6.2は/usr/local/binにPATHがとおっていなかったので、/etc/bashrcに

PATH=$PATH:/usr/local/bin

を追加しました。(bashを使用している場合)

−−−

さて、もし実行バイナリが用意されていなかった場合には、ソースから自分でコンパイルする必要があります。
ダウンロードページからUNIX用ソース”vnc-3.3.3r2_unixsrc.tgz”をダウンロードし、解凍します。

tar zxvf vnc-3.3.3r2_unixsrc.tgz

解凍すると"vnc_unixsrc"というディレクトリに解凍されます。
コンパイル・インストールは以下のように操作します。
あらかじめXサーバ(X Free86)のインストールは行っておいてください。

(1)ライブラリとvncviewer,vncpasswordのコンパイル

cd vnc_unixsrc
xmkmf
make World

(2)Xvnc(vncserverの本体)のコンパイル
 [かなり時間がかかります]

cd Xvnc
make World

(3)インストール

cd ..
./vncinstall /usr/local/bin
mkdir -p /usr/loval/vnc/classes
cp classes/* /usr/local/vnc/classes

これで、ソースからのインストールは完了です。

−−−

また、perlが/usr/bin以外にインスト−ルしている場合には、
/usr/local/bin/vncserverの先頭の

#!/usr/local/bin/perl

の部分を変更してください。

もしPATHの追加などをしていたら、一度ログオフする必要があるかもしれません。


Xvncサーバーの実行

これで、とりあえず、vncserverが実行できるようになります。

実行は

vncserver

のように行います。

最初にvncserverを起動した場合には、

    121 [ts-power] vncserver
    You will require a password to access your desktops.
    Password:

とパスワードを聞いてきますので、適当なパスワードを設定してください。
パスワードは暗号化されて

    ~/.vnc/passwd

に格納されます。このパスワードは、ビューワからのアクセスを認証するためのものです。ビューワを起動してサーバにアクセスするとパスワードを聞いてきますので、ここで設定したパスワードを入力します。パスワードは「vncpasswd」で変更することができます。

問題がなければ引き続いてXvncサーバが起動され、以下のようなメッセージが表示されます。

    New 'X' desktop is ts-power:1
    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/ts-power:1.log

New 'X' desktop is ts-power:1
の後ろの:1がディスプレイ番号(ビューアで指定する)になります。
ここでは自動的にディスプレイ番号を調整しているのですが、明示的に指定することも出来ます。
この場合は

vncserver :1

のように指定します。
また、デスクトップ画面の解像度と色数指定もココで行えます。
デフォルト(vncserverスクリプトで変更可能)では1024x768、8bitCcolorですが、
例えば800x600、16bitColorで起動したければ

vncserver -geometry 800x600 -depth 16

とすればOKです。

なお、XvncはWindows版と違い複数のvncserverを同時に起動できますので、このディスプレイ番号は非常に重要になります。

ただ、これらのメッセージはvncserverスクリプト側で表示しているので、この後でXvncが止まってしまっていることがあります。
一応Xvncが正常に動作しているかどうかをps等で確認すると良いでしょう。

あとはVNCviewerでサーバーの名前(or IPアドレス)とデスクトップ番号を指定して起動し、
サーバ起動時に指定したパスワードを入力すれば、X window画面が表示されます。
デフォルトでは、twmがウインドウマネージャとして使用され、xtermが起動します。
これは、~/.vnc/xstartup

というファイルで示された内容で起動されます。
このファイルが存在しない場合はvncserverスクリプトによって自動的に作成されます。

−−−

vncserverの終了は、以下のように行います。
ディスプレイ番号が1の場合は

vncserver -kill :1

このコマンドによりこのディスプレイ番号のVNCserverが停止し、
その画面で動作していたプログラムは自動的に終了します。
対応するvncviewerも自動的に終了します。


クライアントからの接続方法

X版vncviewerからの接続方法は、Windows版とそれほど変わりません。

vncviewerを起動すると、サーバの名前(orIPアドレス)とディスプレイ番号を聞いてきますので
それに答えればOKです。(サーバ名:ディスプレイ番号)
その後でパスワードを入力します。

Windowsとの操作上の違いは、

  • 起動時のオプション指定がありません。実行時オプションで指定してください。
  • 右クリックでメニューが表示されません。
    メニューを表示するには、F8キーを押す必要があります。
  • 実行時オプションは以下の通りです。
  • -shareZZd
  • -viewonly
  • -fullscreen
  • -passwd <passwd-file>
  • -encodeings <encoding-list> (e.g."raw copyrect")
  • -bgr233
  • -owncmap
  • -truecolor
  • -depth <depth>
  • -listen
  • ブラウザ経由の方法はWindowsのときと同じです。


    設定方法(Xvnc[サーバ]編)

    1. デフォルトの解像度・色数設定を変更する方法。

      /usr/local/bin/vncserver
      をエディタで開き、以下の部分を修正します。
    2. デフォルトのウインドウマネージャを変更する方法。

      デフォルトのウインドウマネージャはtwmですが、
      ~/.vnc/xstartup
      を編集することで変更することが出来ます。

      具体的には、一番最後の

      exec twm

      を別のウインドウマネージャに変更してください。

      私はGNOME環境を自動的に立ち上がるように、次のようにしています。

      #!/bin/sh

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

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

      kinput2 &
      less C

      または、"~/.vnc/xstartup"から、"~/.xsession"にリンクを張ってください。
      具体的には、

      mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
      ln -s ~/.xsession  ~/.vnc/xstartup 

      と実行します。


    一連の流れ

    私のVNCを利用したLinuxの操作は以下の手順になります。

    1. WINDOWSのTELNETで、Linuxサーバにログインする。
      (ただし、RedHat6.2ではrootでのログインはデフォルトで出来ないようになっている)

      c:\>telnet 192.168.29.100
    2. ログインしたら、Linux上でVNCサーバを立ち上げる。

      %>vncserver :1
    3. Windows側で、VNCViewerを立ち上げる。

      c:\>vncviewer 192.168.29.100:1
    4. vncviewer上でGNOMEデスクトップが立ちあがっているので、Linuxを操作する。

    5. 終了時はTELNETでLinuxのVNCサーバを終了する。

      %>vncserver -kill :1
    6. VNCサーバが終了すると、自動的にVNCViewerも終了する。
    7. 終了時はTELNETでLinuxのログインを終了する。

      %>exit

    このように、Linuxサーバを直接操作することなく、Linuxの各種操作を行うことが出来ます。

    パフォーマンスは、直接Xサーバを立ち上げるよりも落ちますが、とくに問題はないレベルです。
    ただし、画面全体が書き換わるような処理は、やはり処理が重くなります。


    VNC関連リンク(X-VNC版)

    AT&T Laboratories Cambridge

    (VNCの開発元です。VNCのダウンロードはこちら。)

    畠山氏のVNCのページ

    (VNCの詳細な情報が満載なページ。和訳ドキュメントも豊富です。)

    ゼロ円でできるXサーバ WindowsでLinuxをリモート操作 [前編] [後編]
    Linux版を使う場合、こちらの解説が非常に便利です。
    VNCをinetdで起動する方法も紹介しています。

    PCの間へ戻る
    玄関へ戻る