SYONテクニカル

LCATを利用したKNOPPIXの高速化

2006/03/10
サイオンコミュニケーションズ株式会社
山城 潤(yamajun@syon.co.jp)

はじめに

2006年2月28日に(株)アルファシステムズさんからLinux Live CD高速化ツールキットLCATがリリースされました。
今回は、LCATを利用してKNOPPIXの高速化を試みます。

詳しい内容については、SourceForgeのLCATプロジェクトページにあるLCATのマニュアル(lcat_1.0.0_manual.pdf)を参照してください。
以下の作業はこのマニュアルを参考にして行いました。

作業の流れ

LCATのインストール

KNOPPIX CD-ROMの内容をコピー

cloopドライバー、高速起動に必要なツールのインストール

プロファイリングモードでCD起動

再編集

高速化済みKNOPPIX CDの作成

作業の準備

今回利用した環境
機種名 ThinkPad R50e Type 1834-63J(一部部品を追加・交換)
OS KNOPPIX 4.0.2 日本語版
CPU Celeron M 1.3GHz
メモリー 768MB
HDD 12GB

LCATのソースコード(lcat_1.0.tar.bz2)をSourceForgeのプロジェクトページから入手します。また、LCATのマニュアル(lcat_1.0.0_manual.pdf)も同じサイトから入手できます。

今回作業を行った KNOPPIX 4.0.2 日本語版には、GTK+2.xの開発パッケージ(*-dev)が入っていないのでそのままではコンパイルできません。事前に開発パッケージのインストールを行います。

(以下の作業はKNOPPIX 4.0.2 日本語版で必要な作業です。
お使いのディストリビューションに合わせて読み替えてください)
$ su
Password:
# apt-get update
# apt-get install libgtk2.0-dev
(上記コマンドを実行することでlibgtk2.0-devに関連するパッケージが
大量にアップデートされます。今回の作業ではこのアップデートのみで十分です)

LCATのコンパイルとインストールを行います。

$ tar xjf lcat_1.0.tar.bz2
$ cd lcat_1.0
$ ./configure
$ make
$ sudo make install

KNOPPIXのチューニング

KNOPPIXのCDを挿入した後、CDの内容をハードディスクにコピーします。

$ su
# mkdir -p /KNOPPIX/master
# cp -pR /mnt/cdrom/* /KNOPPIX/master

マニュアルではKNOPPIX CDに含まれるディスクイメージファイルminirt.gzに必要なファイルをコピーするように説明されていますが、マニュアル通りに作業を進めるとディスクイメージの容量が不足するので(KNOPPIX 4.0.2日本語版付属のminirt.gzの場合)、先に大きめに確保したminirootを作成します。

(元のminirt.gz をバックアップ)
# mv /KNOPPIX/master/boot/isolinux/minirt.gz /KNOPPIX/master/boot/isolinux/minirt.gz.orig

(新しいイメージファイルを作成し、ext2ファイルシステムを構築する)
# dd if=/dev/zero of=miniroot bs=1024 count=4500
# mke2fs miniroot
Proceed anyway? (y,n) y
# fsck.ext2 miniroot

(元のminirt.gzを展開)
# gunzip -c /KNOPPIX/master/boot/isolinux/minirt.gz.orig > miniroot.orig

(ディスクイメージをマウントし、その中身を新しいイメージファイルにコピー)
# mkdir /mnt/test2
# mount -t ext2 -o loop miniroot.orig /mnt/test2
# mount -t ext2 -o loop miniroot /mnt/test
# cp -Rp /mnt/test2/* /mnt/test

minirootイメージファイルに高速起動に必要なファイルをコピーします。

ここではlinuxrcスクリプトを改変する必要があります。
LCATマニュアルの通りに改変したlinuxrcスクリプトをここに置いておきます。

(linuxrcスクリプトを改変する)
# vi linuxrc 

(LCAT付属のカーネルモジュールcloop.koをコピー)
# cp /home/knoppix/lcat_1.0/cloop-2.02-opt/cloop.ko /mnt/test/modules/

(改変したlinuxrcスクリプト・プログラムをコピー)
# cp linuxrc /mnt/test/linuxrc
# mkdir /mnt/test/accel
# cp /home/knoppix/lcat_1.0/util/cloopreadahead /mnt/test/accel

(ディスクイメージのアンマウントと新ディスクイメージの圧縮)
# umount /mnt/test2
# umount /mnt/test
# gzip -c ./miniroot > /KNOPPIX/master/boot/isolinux/minirt.gz

ISO9660ディスクイメージを作成します。

# mkisofs -l -r -J -V "KNOPPIX_PROF" -hide-rr-moved -v -b boot/isolinux/isolinux.bin
    -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table
    -o ./knoppix_prof.iso /KNOPPIX/master

イメージ作成後、k3bなどのCD-R書き込みソフトでCD-R/CD-RWにイメージを書き込みます。
(一度しか利用しないCDなので、上書きができるCD-RWを使うのがよいです)

プロファイリング用CD-R/RWをCDドライブに挿入し、起動直後に表示されるboot: プロンプトに以下のパラメーターを入力します。

boot: knoppix chkblk=10000 nocbr

KNOPPIX起動後にコンソールに以下のコマンドを入力して、ハードディスクにプロファイリングの結果を保存できるようにします。

$ su
# mount /mnt/hda1
# cd /mnt/hda1/KNOPPIX

KNOPPIX起動時のディスクアクセス状況を調査するために、プロファイリングを行います。

# cat /proc/cloop/read_blocks > /mnt/hda1/KNOPPIX/boot.read_blocks

Konqueror, Firefox, OpenOffice.orgなど、実行頻度が高かったり、起動に時間がかかるアプリケーションのディスクアクセス状況のプロファイリングを行うことで、動作を改善することができます。

(アプリケーション実行前に、起動時のログを消去する)
# echo 1 > /proc/cloop/reset_read_blocks
(各種アプリケーションを実行・終了した後に以下のコマンドを実行する)
# cat /proc/cloop/read_blocks > /mnt/hda1/KNOPPIX/apps.read_blocks

システムのイメージファイルに対するチューニング作業を行います。

$su
# cd /KNOPPIX
(システムイメージのバックアップ)
# mv /KNOPPIX/master/KNOPPIX/KNOPPIX ./master.KNOPPIX.KNOPPIX.orig
(システムイメージの最適化)
# cloopoptimizer master.KNOPPIX.KNOPPIX.orig
boot.read_blocks apps.read_blocks > /KNOPPIX/master/KNOPPIX/KNOPPIX
(先読み指定ブロックリストの作成)
# rblk2bl boot.read_blocks > /KNOPPIX/master/KNOPPIX/KNOPPIX.boot.lst

最適化済みのCDを作成します。

# mkisofs -l -r -J -V "KNOPPIX_OPT" -hide-rr-moved -v -b boot/isolinux/isolinux.bin
    -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table
    -o ./knoppix_opt.iso /KNOPPIX/master

チューニングの成果

KNOPPIX 4.0.2日本語版とそれをベースに(株)アルファシステムズさんが高速化したAccelerated-KNOPPIX、そしてKNOPPIX 4.0.2日本語版をベースに独自にカスタマイズした自家製KNOPPIXで高速化の比較を行いました。

KNOPPIXの種類 起動にかかる時間
KNOPPIX 4.0.2 日本語版 2分12秒
自家製KNOPPIX 2分20秒
Accelerated-KNOPPIX 1分04秒
高速化した自家製KNOPPIX 1分17秒

自家製KNOPPIXの起動時間が1分以上短縮されることが確認されました。しかし、高速化した自家製KNOPPIXでは、起動時に表示されるboot: プロンプトにknoppix chkblk=10000を入力しないと、

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,3)

とエラーが出て起動が停止してしまいます。このエラーはKNOPPIX 4.0.2 日本語版をそのまま高速化した時にも発生しました。

マニュアルの記述のみでは完全なCDを作るところまで行けずに終わってしまいましたが、LCATの効果を確認することができました。今後、きちんと起動するCDを作成するところまでレポートしたいと考えています。

KNOPPIX日本語版5.0.1ベースでの最適化作業(2006年7月31日追記)

KNOPPIX日本語版バージョン5.0.1では最初からLCATによる高速化が組み込まれているので、プロファイリングと最適化作業だけでディスクを高速化できます。

  1. CDを作成します。起動スクリプトの書き換えは不要です(linuxrc等)。
    (編集作業後、CDイメージを作成する)
    # mkisofs -l -r -J -V "MY_KNOPPIX" -hide-rr-moved -v -b boot/isolinux/isolinux.bin
        -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table
        -o ./knoppix_prof.iso /KNOPPIX/master
  2. 新しいCDをPCに挿入し、”profile”モードで起動します
    (boot: プロンプトに"profile"を入力する)
    boot: profile
  3. 起動後、コンソールからプロファイリングを行います

    (作業結果をハードディスクかUSBメモリーなどに保存して下さい)

    (作業結果をハードディスクに保存できるようにしておく)
    $ su
    # mount /mnt/hda1
    # cd /mnt/hda1/KNOPPIX
    
    (OS起動のプロファイル結果を取得する)
    # cat /proc/cloop/read_blocks > /mnt/hda1/KNOPPIX/boot.read_blocks
    
    (アプリケーション実行前に、起動時のログを消去する)
    # echo 1 > /proc/cloop/reset_read_blocks
    
    (各種アプリケーションを実行・終了した後に以下のコマンドを実行する)
    # cat /proc/cloop/read_blocks > /mnt/hda1/KNOPPIX/apps.read_blocks
  4. Linux PC上でディスクイメージの最適化作業を行います

    (あらかじめlcatのツールをインストールしたLinux PCが必要です。
    本作業例では、/KNOPPIX 上で編集作業を行っているものとします)

    (システムイメージのバックアップ)
    # mv /KNOPPIX/master/KNOPPIX/KNOPPIX ./master.KNOPPIX.KNOPPIX.orig
    
    (システムイメージの最適化)
    # cloopoptimizer master.KNOPPIX.KNOPPIX.orig boot.read_blocks
        apps.read_blocks > /KNOPPIX/master/KNOPPIX/KNOPPIX  
    
    (先読み指定ブロックリストの作成)
    # rblk2bl boot.read_blocks > /KNOPPIX/master/KNOPPIX/KNOPPIX.boot.lst
    
    (高速化済みKNOPPIX CDを作成)
    # mkisofs -l -r -J -V "MY_KNOPPIX" -hide-rr-moved -v -b boot/isolinux/isolinux.bin
        -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table
        -o ./knoppix_prof.iso /KNOPPIX/master

この手順に沿って作業を行えば、自家製KNOPPIXの起動を高速化できます。

私が作ったCDの場合には、KNOPPIX日本語版とほぼ同じ起動時間(それぞれ約1分30秒)を達成しました。また、起動時に特別なオプションを入力する必要はありません。

Copyright 1999-2008 SYON Communications, Co. All rights reserved