FreeNXを使ってみる
この間のIUCrでビームラインのリモートアクセスでよく使われていたNXというものを使ってみました。これは細い帯域でもそこそこ速いというものです。
インストールが結構大変だったのでメモ。FreeNX 0.7.3 + NX Open Source Components Ver.3.2.0で構築してみました。UbuntuやCentOSなどならパッケージで簡単にインストールできるみたいですが。あえてVine 4.2にインストールしてみました。なお、VineではNOMACHINE社のRPMではlibstdc++のバージョンが合わなくて動きませんでした。
準備
あらかじめ、
- expect
- netcat <-- 自分でコンパイルが必要
- XOrg-devel
- XOrg-gl-devel
をインストールしておきます。
ファイルの取得とビルド
とりあえずはFreeNXのアーカイブを取得して展開しますが、実際にFreeNXのディレクトリで作業をするのは最終段階になってからです。http://freenx.berlios.de/からfreenx-server-0.7.3.tar.gzをダウンロードします。ダウンロードしたら展開しておいても構いません。このアーカイブの中にINSTALLドキュメントがあるのでその手順に従ってビルドします。
続いて、NOMACHINE社のホームページにあるNX Open Source Componentsからnx-X11-compat以外のファイルをすべてダウンロードします。全部で18個あります。
ダウンロードしたらすべて展開してビルドします。
% tar zxf nxproxy-3.2.0-1.tar.gz ...(18個すべてを展開) % cd nx-X11 % make World % cd .. % cd nxproxy % ./configure % make
nx-X11のビルドにはおそらく30分ぐらいはかかると思いますので気長に待ちましょう(Pentium-Dual 1.8GHz)。
すべてのビルドが終わったらライブラリをコピーします。私は/usr/local/NX以下に構築することにしました。
# NXPREFIX=/usr/local/NX # mkdir -p ${NXPREFIX}/lib ${NXPREFIX}/bin # cp -a nx-X11/lib/X11/libX11.so* ${NXPREFIX}/lib # cp -a nx-X11/lib/Xext/libXext.so* ${NXPREFIX}/lib # cp -a nx-X11/lib/Xrender/libXrender.so* ${NXPREFIX}/lib # cp -a nxcomp/libXcomp.so* ${NXPREFIX}/lib # cp -a nxcompext/libXcompext.so* ${NXPREFIX}/lib # cp -a nxcompshad/libXcompshad.so* ${NXPREFIX}/lib # cp -a nx-X11/programs/Xserver/nxagent ${NXPREFIX}/bin # cp -a nxproxy/nxproxy ${NXPREFIX}/bin
FreeNXのINSTALLドキュメントにはnxcompshadのコピーについては書かれていませんでしたが、必要みたいです。ここまで終わればようやくFreeNXのインストールに入ります。
% tar zxvf freenx-0.7.3.tar.gz % cd freenx-0.7.3
ディレクトリ構成を制御するためのファイルnxloadconfigを編集します。
- nxloadconfig
- 実行ファイルのディレクトリ構成およびログファイル、sessregコマンドの場所を変更しています。
58 # Where can different nx components be found 59 NX_DIR=/usr/local/NX <-- 変更 60 PATH_BIN=$NX_DIR/bin 61 PATH_LIB=$NX_DIR/lib 62 NX_ETC_DIR=$NX_DIR/etc <-- 変更 63 NX_SESS_DIR=$NX_DIR/var/lib/db <-- 変更 64 NX_HOME_DIR=$NX_DIR/var/lib/home <-- 変更 133 NX_LOGFILE=$NX_DIR/var/log/nxserver.log 220 COMMAND_SESSREG="/usr/X11R6/bin/sessreg"
以上の場所を変更しました。なお、NX_LOGFILEとCOMMAND_SESSREGはインストール後に$NX_ETC_DIR/node.confを編集することで設定することも可能です。
インストールします。% make # make install
これでFreeNXが配置されました。
FreeNXの初期設定
ファイルをインストールした後に初期設定を行います。
# cd /usr/local/NX/bin # ./nxsetup --install
でOKのはずです。
ディレクトリ構成
以上のセットアップでのファイル配置は以下のようになります。
/usr/local/NX + bin/ | + nxserver, nxsetupなどの実行ファイル | + lib/ | + libX11, libXcomp, libXcompext, libXcompshad, libXext, libXrender, libnxredir | などのライブラリファイル + etc/ | + node.conf -- 設定ファイル。必要なときnode.conf.sampleをコピーして編集 | passwords -- ENABLE_PASSDB_AUTHENTICATION="1"の時に使用されるユーザーDBファイル | passwords.orig -- passwordsのバックアップ | users.id_dsa -- 秘密鍵、でも何に使うか不明 | users.id_dsa.pub -- 公開鍵、でも何に使うか不明 | + var/ + lib/ + db/ -- セッション格納ディレクトリ home/ -- ユーザーnxのホームディレクトリ + .ssh/ -- SSH個人ディレクトリ + authorized_keys2 -- NX認証用公開鍵 client.id_dsa.key -- NX認証用秘密鍵 server.id_dsa.pub.key -- NX認証用公開鍵(authorized_keys2の元)
このようになっているはずです。なお、var/lib/db、var/lib/homeはユーザーnxがオーナーになっているはずです。
Windowsからの接続(書きかけ)
NXクライアントをNOMACHINE社からダウンロードします。http://www.nomachine.com/download-client-windows.phpからNX Client for Windowsを取得して下さい。ダウンロード後nxclient-3.2.0-13.exeを実行すればインストールされます。
クライアントからの接続で失敗するときは以下の点を確認しましょう。
- ユーザーnx(FreeNXで作成されます)はSSH経由の公開鍵認証でログイン可能か?
パフォーマンスは?
ためしにCootを使ってみましたが、そこそこの速さでした。さすがに実用にはちょっと厳しいかなーと言うところですが・・・
3Dでこのぐらいの速度がでるなら、通常のXアプリケーションは十分使えるのでは無いでしょうか。