General Information
===================

高速化版cloopカーネルモジュール(cloop.ko)のREADMEです。ライブCDではminirt.gz(initrd)の起動時に読み込まれるモジュールとして組み込むことで高速化フォーマットのcloopイメージを読み込むことができます。通常のLinuxシステムに組み込んで仕様することも可能です。

The function of this tool
=========================

高速化版のcloop.koは以下の機能を持っています。

* 高速化フォーマットされたcloopイメージのマウント
 "cloopoptimzer"で高速化フォーマットを適用したcloopイメージをマウントし、読み出すことができます。これは通常のcloopモジュールでは実現できません。

* バージョン2フォーマットのcloopイメージのマウント
 高速化されていないcloopイメージを読み出すことができます。LCATはcloopバージョン2を対象としているので、それ以前のバージョンのcloopを組み込むことはできません。

* ブート、アプリケーション起動時のブロック参照状況取得
 高速化されたcloop.koは起動時に以下のブートオプションを使うことで、cloopのブロック参照状況を/proc/cloop/read_blocksに記録します。

	boot : knoppix chkblk=10000 nocbr

 chkblkには、/proc/cloop/read_blocksが記録できる最大のブロック数を記入します。大体は10000で問題ないでしょう。/proc/cloop/read_blocksのデータは、/proc/cloop/reset_read_blocksを以下のように使うことでリセットできます。

	# echo 1 > /proc/cloop/reset_read_blocks

 /proc/cloop/read_blocksをリセットした次の操作でブロック参照状況を調べたいアプリケーションを起動すれば、/proc/cloop/read_blocksにログが保存されます。
 注意しなければならないのは、/proc/cloop/read_blocksは常にブロック参照状況を記録しようとすることです。厳密な参照状況を取得したい場合は、ブートやアプリケーションの起動が終了した直後に/proc/cloop/read_blocksの内容をコピーして保持するべきです。起動時には、仮想コンソールに移動してコピーを行えばkonsoleなどのGUIコンソールをcloop.koが読み出すことを回避できるでしょう。


How to inclusion to minirt.gz (for KNOPPIX)
=========================================

高速化されたcloop.koをminirt.gz(や、initrdなどの起動シーケンスアーカイブ)に組み込むには、minirt.gzを解凍して書き込み可能状態にしてやる必要があります。例えば、次のような操作です。

 # gzip -d minirt.gz
 # mkdir mntdir
 # mount -o loop minirt mntdir

解凍したディレクトリ内のモジュールを格納しているディレクトリには、高速化されていないcloopモジュールが入っているはずです。例えば、KNOPPIXではmntdir/modulesの直下にcloop.koが配置されています。これを高速化したcloopに差し替えます。

 # cp lcat_1.0/clooop-2.02-opt/cloop.ko mntdir/modules/.

差し替えが終わったら、起動シーケンス(例えば、mntdir/linuxrc)のcloop.ko読み出し部分を高速化されたcloop.koに対応させます。KNOPPIXのlinuxrcでは、次のようになるでしょう。

 mount_knoppix()
  {
    if test -n "$FOUND_KNOPPIX" -a -f $1/$KNOPPIX_DIR/$KNOPPIX_NAME; then
       for i in $CMDLINE; do
        case "$i" in chkblk=*|CHKBLK=*) eval $i;; esac
        [ -n "$chkblk" ] && CHKBLK="$chkblk";
      done
      RBLKS=""
      [ -n "$chkblk" ] && RBLKS="rblks=$chkblk";
      $INSMOD -f /modules/cloop.o "$RBLKS" file=$1/$KNOPPIX_DIR/$KNOPPIX_NAME
      mountit /dev/cloop /KNOPPIX "-o ro" || FOUND_KNOPPIX=""
    fi
  }

全ての作業が終わったら、minirtをアンマウントし、gzipで固めてCDイメージ上に配置すれば高速化モジュールの適用は終了です。

 # gzip --best minirt
 # cp minirt.gz $TARGET/boot/isolinux/.


How to inclusion to General Linux System
===============================================

通常のLinuxでcloopを高速化版cloop.koで読み出したい場合は、まず読み込み済みのcloopモジュールをすべて除去する必要があります。

 # rmmod cloop

lsmodなどでcloopモジュールが読み込まれていないことを確認したら、高速化したcloopモジュールを組み込みます。組み込めたら、デバイスインターフェイス/dev/cloopができあがっていますので、/読み込みたい/cloopの/イメージ　をマウントします。cloopイメージはrwでマウントできない(マウントしても書き出せない)ので、roオプションを付けてマウントします。
 
 # insmod cloop-2.02-opt/cloop.ko
 # mount -o ro /dev/cloop /target/cloop/image


