Hatena::Grouplinux2

Going My Linux Way このページをアンテナに追加 RSSフィード

2012年02月04日(土)

Ubuntu で VNC

| 18:30 |  Ubuntu で VNC - Going My Linux Way を含むブックマーク はてなブックマーク -  Ubuntu で VNC - Going My Linux Way  Ubuntu で VNC - Going My Linux Way のブックマークコメント

VNC についてのメモです。

環境は Ubuntu Linux です。

VNCクライアント/サーバモデルのイメージ図です。

f:id:lnznt:20120204182411j:image

※ X のポートは 6000 + ディスプレイ番号

※ RFB のポートは 5900 + ディスプレイ番号 (参考: wikipedia:RFB Protocol)

VNC サーバは X サーバとして動いているのでディスプレイに対する入出力情報を持っています。

VNC ビューアは RFB プロトコルでそれを取得して表示します。表示されるのは図のホストV のディスプレイ#1 のスクリーンです。

VNC ビューア自身も X クライアントなので(図ではローカルのホストXに表示してますが)DISPLAY を他の X サーバに向けることによって他のホストにそれらを表示させることもできます。

インストール

では、インストール

図のホストV に VNC サーバインストールします。*1

$sudo apt-get install xvnc4server

図のホストX に VNC ビューアをインストールします。

$sudo apt-get install xvnc4viewer

実行

VNC サーバ起動

図のホストV (ここでは vlinux01)で VNCサーバを実行します。

$ vncserver
  :
New 'vlinux01:4 (lnznt)' desktop is vlinux01:4
  :

どのディスプレイで起動したかメッセージで表示されます。

最初に起動したときはパスワードの設定を求められます。入力しておきましょう。

サーバを kill する時は以下のようにします。

$ vncserver -kill :4    # ディスプレイ番号を指定する

サーバプロセスの確認の例です。

$ pgrep -l vnc
9808 Xvnc4

サーバの listen ポートの確認の例です。

$ netstat -ta | grep x11
tcp        0      0 *:x11-4                 *:*                     LISTEN
VNC ビューア

VNC ビューアを起動する例です。

$ vncviewer vlinux01:4 # vlinux01 が名前解決可能でない場合は IPアドレスを指定
(サーバで設定したパスワードが求められるので入力する)
Xクライアント

VNC サーバは X サーバとして動いています。

X サーバ側でリモートからのアクセスを許可すれば、他のホストの X クライアントを表示させることができます。

(VNCサーバが掴んでいるディスプレイで行う。VNCビューアからが手っ取り早い)
$ xhost +

引数の「+」は「全てのホストから」という意味です。セキュリティ的に危険なので、本来は許可するホストを細かく設定すべきです。

上で起動した VNC サーバディスプレイに指定して xterm を起動する例です。

$ xterm -display vlinux01:4   # vlinux01 が名前解決可能でない場合は IPアドレスを指定

Java アプレットビューア

VNC には Java アプレットビューアの実装があります。

サーバ側(ホストV)にインストールしてみます。

$ sudo apt-get install vnc-java

VNC サーバを起動し直します。

Firefox(あるいは Java がサポートされている他の Web ブラウザ) で以下にアクセスすると、アプレット領域が VNC ビューアのように表示されます。

  http://vlinux01:5804/   # ポートは 5800 + ディスプレイ番号

(vlinux01 が名前解決可能でない場合は、IP アドレスを指定)

最初にパスワード入力画面が出るのでパスワードを入力すると、ブラウザにホストVのデスクトップが表示されます。もちろん操作もできます。

Java アプレットがサポートされたイメージは以下のようになります。

f:id:lnznt:20120204193359j:image

こんなメッセージが表示されたら

VNC サーバ起動時に、以下のようなメッセージが表示されたら、前に使った unixドメインソケットやロックファイルが残ってしまっています。

$ vncserver

Warning: vlinux01:1 is taken because of /tmp/.X11-unix/X1
Remove this file if there is no X server vlinux01:1

Warning: vlinux01:2 is taken because of /tmp/.X11-unix/X2
Remove this file if there is no X server vlinux01:2

Warning: vlinux01:3 is taken because of /tmp/.X3-lock
Remove this file if there is no X server vlinux01:3
xauth:  /home/lnznt/.Xauthority not writable, changes will be ignored
   :

本当にディスプレイ#1、#2、#3 が既に起動されていないのを確認して、メッセージの通りにファイルを削除すれば復旧します。

私は、いろいろ試しているうちにこんな風になってしまいました。

*1VNC の実装は他にもあります

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120204