FreeNXを使ってみる  

この間のIUCrでビームラインのリモートアクセスでよく使われていたNXというものを使ってみました。これは細い帯域でもそこそこ速いというものです。
インストールが結構大変だったのでメモ。FreeNX 0.7.3 + NX Open Source Components Ver.3.2.0で構築してみました。UbuntuやCentOSなどならパッケージで簡単にインストールできるみたいですが。あえてVine 4.2にインストールしてみました。なお、VineではNOMACHINE社のRPMではlibstdc++のバージョンが合わなくて動きませんでした。

準備  

あらかじめ、

をインストールしておきます。

ファイルの取得とビルド  

とりあえずは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を実行すればインストールされます。

 

クライアントからの接続で失敗するときは以下の点を確認しましょう。

パフォーマンスは?  

ためしにCootを使ってみましたが、そこそこの速さでした。さすがに実用にはちょっと厳しいかなーと言うところですが・・・
3Dでこのぐらいの速度がでるなら、通常のXアプリケーションは十分使えるのでは無いでしょうか。