ノート
訪問者 2652  最終更新 2010-08-28 (土) 13:25:07

2010-08-19 修正: サーバー側インストールが、vnc-serverでは不可になったようで修正。

遠隔GLサーバーHowTo(まとめ)(2009-08-07 (金) 18:43:29)

その1: やりたいこと

遠隔にあるLinuxサーバー上で、openGL(グラフィックスライブラリ)で結果の絵を書くプログラムが走るとき、手元のWindows上でその結果をリアルタイムに見たい。

その2: ユーザとしての使い方

(サーバー側のインストール・設定は後から)

VNCstarting0.png

無事に表示されたスクリーンの様子。これによって、スクリーン上のxtermを利用してコマンドを入力することができる。

oreganoScreen.png

その2.5 研究室外から(ファイやウォールを経由して)使いたい場合

この場合は、SSHのポートフォワード機能を使うとよい。SSHのポートフォワード機能は、要するにSSHの接続を経由して(パケットにSSHの皮をかぶせて)、任意のポートの通信をファイやウォール外へ取り出す。

TTSSH_Forwarding.png

TeraTermProでの設定は、たとえばここを参照。このとき、ポートフォワードの設定をしたコネクションは、いったんセーブしておくと(参照ページの一番下の行を見よ)次から便利である。
Putty等でも同じように設定できる。
また、端末を開くことなくポートフォワードだけを行うWindowsクライアントもあって、これも結構便利である。たとえばPortForwarderなど。

VNCで使うポートは、5901(正確には、5900+ディスプレイ番号)である。ここではディスプレイ番号を「:1」にすることを考えているので、5901である。単純に考えれば、リモートの5901番をローカルの5901番にマップする。ローカルで5901を使っていなければ、これで問題はおきない。もしローカルのPCが5901を使っている場合(たとえばローカルでVNCのサーバー側も動かしている場合など)は、別の適当なポート番号を選ぶ必要がある。

TeraTermProで、設定⇒SSHポート転送でウィンドウを出した後、「追加」をクリックし、 「ポート転送を行う向きの選択」で上段のローカルのポート5901をリモート側ホストhogehoge.ac.jpのポート5901につないで欲しい、と設定する。
hogehogeを、サーバー側つまりoreganoのフルネームかIPアドレス、もしくはyyps*のフルネームかIPアドレスに置き換えればよい。

なお、5801はWebからJava Appletを用いて表示する場合のポートである。アニメ表示を考えるならば、表示動作が遅すぎるので、Windowsの専用クライアント(上記でダウンロードしたもの)を使うことを勧める。
サーバーの設定でも触れるが、サーバーのセキュリティ管理でパケットフィルタリングをしている場合(Fedoraはしている)、590xは止められてしまうので、穴を開ける必要がある。したがって、Display番号を任意に選ぶことは、実際の操作上は難しい。せいぜい1,2,3程度のことになるだろう。

VNCstarting.png

今度の場合は、VNCビューアーを起動した後、ホストの指定は localhost:5901 になる。なぜならば、ポートフォワーディングの設定により、サーバーのポート5901があたかもTeraTermProの動いている端末ホスト(=localhost)のポート5901に読み替えられるからである。ここはよく間違えるので注意

その3 OpenGLのアプリを書いて、端末に表示する

この実験環境ではopenGL、特にglut (GL Utility) を使ってみる。
OpenGL, glut等の使い方、環境設定については、他のページを参照のこと。たとえばノート/MPS粒子法プログラム。OpenGLのプログラミングについては、外のページを参照。

簡単なサンプルプログラムとして、openGLのホームページのここの中の、「teapots」のサンプルを表示してみた例。makeによってコンパイルした後、./teapotsによって実行している。

teapots.png

左側のxtermの画面に、teapotsを実行させているコマンドが見える。右側がその実行結果の表示ウィンドウ。なお、このサンプルはyyps2上で実行したものである。

その4 サーバー側の設定

サーバー側の設定には、いくつかの要素がある。

1)サーバーにVNCサーバープログラムをインストールする。
これはFedora Coreの場合(やFedora系のCentOSなど場合)、yumコマンドを使って簡単にインストールできる。細かくは、ノート/oreganoにフロントエンド2を見て欲しい。

yum install vnc
yum install vnc-server

〜〜〜〜 2010-08-19 修正 〜〜〜〜
サーバー側インストールが、パッケージ名 vnc-serverではなくなって、tigervnc-serverになっているようだ。(http://www.server-world.info/query?os=Fedora_12&p=x&f=2あたりを参照だが、設定の詳細はこのHPに従う必要なく、本ページにある通りでよい。つまり、/etc/sysconfig/vncserversを設定しなくてもユーザIDのログイン下でxserverを起動すればそれでよい。)

yum -y install tigervnc-server

〜〜〜〜ここまで修正〜〜〜〜

もし足りなければ(PS-3のバージョン=fedora10 for PPC では入っていなかった)

yum install xterm
yum install twm

2)Fedora10ではパケットフィルタ(=ファイやウォール)「iptables」が動いていて、ポート590*は止めてしまっているので、それをあける必要がある。
iptablesの使い方は、全部理解するのは結構大変(たとえばここを見よ)だが、ここでは穴を開けるだけなので、
*まず現状を確認
   iptables -L
*ルール行を書き足す(インサート「-I」する)
   iptables -I INPUT xxx -p tcp --dport 5901 -j ACCEPT
  但し、xxxはインサートする場所=この指定行の直前にインサートする
*動作を確認、確認できたらルールをセーブする。サボると次回ブートしたときに無効
   /etc/rc.d/init.d/iptables save

3)サーバーを起動してテスト。
サーバーはユーザ1人1人に動かせるので、ユーザのID(つまりrootでなくって)でログインした状態(たとえばTeraTermPro)で、
  vncserver :1
を実行。vncserverプログラムへのパスは必要に応じて確認のこと。また、パラメタ「:1」は、XWindowのディスプレイ番号指定で、たとえば1を使う。0はコンソールで立ち上がるXWindowに使われている。

初めて起動するときに、パスワードを設定するように促される。これは、クライアントビューアーを接続するときに聞かれるものである。(X Authenticationの仕組を使っているらしい)

サーバー起動後、すべてがうまく行けば、端末PC側でビューアーを起動し、必要なパラメタを与えてやればウィンドウが見えるはずである。

追加〜VNC画面を(フラッシュ)キャプチャするソフト

(2009/07/28)vnc2swf 「Vnc2swf (う゛んくつすわふ) はクロスプラットフォーム対応の画面録画ツールです。 」ということで、C版とPython版があるらしい。VNCサーバーがあると、そこから画面を拾ってキャプチャするようです。まだ試してません。

(2009/08/04)[[BB Flash Back Express:www.bbflashback.jp]] 画面をムービーにキャプチャするアプリ。flvにも変換できる。 fileps8_pi_parallel.flv

(2010-08-28)VirtualGL OpenGLの機種依存レンダラーを、遠隔画面で使う可能性 〜 但し相当ややこしいことをしているのですんなりどこでも動くかどうかが疑問。


添付ファイル: fileps8_pi_parallel.flv 781件 [詳細] fileteapots.png 529件 [詳細] fileoreganoScreen.png 456件 [詳細] fileVNCpassword.png 441件 [詳細] fileVNCstarting0.png 477件 [詳細] fileVNCstarting.png 513件 [詳細] fileTTSSH_Forwarding.png 465件 [詳細] fileremoteGL.png 472件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-28 (土) 13:25:07 (2668d)