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

cloop先読み機能を提供するユーティリティcloopreadaheadのREADMEです。
cloopreadaheadを高速化されたminirt.gz(や、initrdなどの起動シーケンスアーカイブ)に組み込むことで起動時のI/Oの遊び時間を短縮することができます。このプログラムでは、高速化されたcloop.koを組み込んでいないライブCDへの適用や、起動後のcloop読み出しを高速化することはできません。


Command Usage
=============
cloopreacaheadを利用するためには、次のようにコマンドを実行します。

 # cloopreadahead <optimized cloop file> <block list file>

<optimized cloop file>にはcloopoptimizerなどで高速化されたcloopのイメージ屁のパスを、<block list file>には高速化版cloop.koを利用して得たブロック参照リストread_blocksに先読みブロックリスト変換ユーティリテイrblk2blを使用して出来る先読みブロックリストblklstをそれぞれ入力します。

先読みブロックリスト変換rblk2blは、次のように使用します。標準出力に出力するため、ファイルにするにはリダイレクトしてやる必要があります。

 # rblk2bl <block reference data> <burst_size> > <block list>

<block reference data>にはブロック参照リストを、<burst_size>にはcloopreadaheadで読み出すブロックの粒度をバイト単位で書き込みます。<burst_size>が小さければcloopreadaheadが一度に読み出すデータ量は小さくなりますが、先読みに行く回数が多くなるかもしれません。逆に大きければ、cloopreadaheadで読み出す回数は減りますが、読み込みにオーバヘッドを発生させるかもしれません。ちょうどいい値は探して見てください。Accelerated-KNOPPIXでは262144としています。


How to use this tool
====================

cloopreadaheadを起動高速化に利用するためには、minirt.gz内にこのプログラムを配置し、起動シーケンスlinuxrcにcloopreadaheadの動作を組み込んでやる必要があります。
minirt.gzは高速化版cloop.koのREADMEにあるように解凍、マウントしているものとします。この時、マウントしたトップのディレクトリにcloopreadaheadをコピーしてやります。

 # cp cloopreadahead mntdir/.

起動時に読み出す先読みリストも配置してやらねばなりません。先読みリストはminirt.gzの内部以外どこに配置しても問題はありませんが、せめて読み込めるところにはおいておきましょう。cloopが配置されているディレクトリにおいてやると、起動スクリプトの書き換えで楽を出来るかもしれません。KNOPPIXでは、次のようにコピーしてやります。

 # cp blklst /cdrom_copy/KNOPPIX/KNOPPIX.blklst

全てのファイルの配置ができたら、linuxrcの書き換えを行います。KNOPPIXでは、ramdiskの作成の直前に書いてやると良いようです。


 #
 # cloop block readahead
 # 
 if test -x /cloopreadahead ; then
   CBRAHEAD="yes"
   case "$CMDLINE" in *nocbr*|*NOCBR*) CBRAHEAD=""; ;; esac
    if test -f /cdrom/${KNOPPIX_DIR}/${KNOPPIX_NAME}.blklst -a -n "$CBRAHEAD" ; then
      echo " ${GREEN}Reading cloop blocks....${BLUE}(Backgrounding)${NORMAL}"
 　   ./cloopreadahead /cdrom/$KNOPPIX_DIR/$KNOPPIX_NAME \
         /cdrom/${KNOPPIX_DIR}/${KNOPPIX_NAME}.blklst > /dev/null 2>&1 &
      sleep 1
    fi
   rm -f /cloopreadahead
 fi
    
 # New in Kernel 2.4.x: tmpfs with variable ramdisk size.
 # We check for available memory anyways and limit the ramdisks

