・Part1.Winvnc編
・Part2.XVNC編
・Part3.活用編
・Part4.リナザウ編
・Part5.W-ZERO3編
・Part6.PSP編
・Part7.VMWARE編
Part2 XvncでLinuxを操作しよう。
簡単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サーバを購入しなくても良いのです。
操作も非常に簡単です。
ここでは、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の追加などをしていたら、一度ログオフする必要があるかもしれません。
これで、とりあえず、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.logNew '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との操作上の違いは、
ブラウザ経由の方法はWindowsのときと同じです。
#!/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の操作は以下の手順になります。
- WINDOWSのTELNETで、Linuxサーバにログインする。
(ただし、RedHat6.2ではrootでのログインはデフォルトで出来ないようになっている)
c:\>telnet 192.168.29.100
- ログインしたら、Linux上でVNCサーバを立ち上げる。
%>vncserver :1
- Windows側で、VNCViewerを立ち上げる。
c:\>vncviewer 192.168.29.100:1
- vncviewer上でGNOMEデスクトップが立ちあがっているので、Linuxを操作する。
- 終了時はTELNETでLinuxのVNCサーバを終了する。
%>vncserver -kill :1
- VNCサーバが終了すると、自動的にVNCViewerも終了する。
- 終了時はTELNETでLinuxのログインを終了する。
%>exitこのように、Linuxサーバを直接操作することなく、Linuxの各種操作を行うことが出来ます。
パフォーマンスは、直接Xサーバを立ち上げるよりも落ちますが、とくに問題はないレベルです。
ただし、画面全体が書き換わるような処理は、やはり処理が重くなります。
(VNCの開発元です。VNCのダウンロードはこちら。)
(VNCの詳細な情報が満載なページ。和訳ドキュメントも豊富です。)
- ゼロ円でできるXサーバ WindowsでLinuxをリモート操作 [前編] [後編]
- Linux版を使う場合、こちらの解説が非常に便利です。
VNCをinetdで起動する方法も紹介しています。