1.はじめに cloopは、Debian系の1CD
Linuxとして有名なKNOPPIXのルート
ファイルシステムとして利用されていることで有名であるが、redhat系カーネルでの動作事例はインターネット上にあまりなく、あっても多くが古い情報である。
今回、FedoraCore5と
RHEL4に
cloopしたので、その導入手順を纏める。(手順はFedoraCore5ベースで記述するが、
RHEL4でもほとんど手順は同じである。)
※
cloopは、読み込み専用の
ファイルシステム。
2.手順(cloopデバイスの組み込み)(1)前提のパッケージ
(i) カーネルソースコード
適用するカーネルのソースコードを用意する。
※ディストリビューションによっては、
カーネルのヘッダファイルが標準でインストール
されている。(/usr/src/kenelの下など)その場合は、
別途ソースコードをインストールする必要はない。(2007.7.21追記)
FedoraCoreの場合は、こちらの記事を参照 ->
こちら RHEL4の場合は、こちらの記事を参照 ->
こちら (ii) zlib-devel(zlib開発用ライブラリ)
zlib-develがインストールされてなければインストールする。
・zlib-develの確認
・zlib-develがなければインストール
(2)
cloopソースコードの入手
cloopのREADMEには、KNOPPIXの公式サイトの記載があるが、最新のソースコードは見当たらない。探したところ、Debianのunstableパッケージから入手が可能である。
最新版は、"
cloop-2.05~20060829"(2007.3.2現在)
(i)
Debian公式サイトへ行く
(ii)下記順番でクリックする
・「Debian パッケージ」
・「不安定版 (unstable) ディストリビューションのパッケージを見る」
・「Miscellaneous」
・「
cloop-src」パッケージを選択
(iii)記事執筆時点の最新版(と思われる)「
cloop_2.05~20060829-1.tar.gz」をダウンロード
(3)
cloopのソースの展開とコンパイル&インストール
(i)ソースコードの展開
任意の場所(手順では/tmp)にtarのデータを展開する。
$ cd /tmp $ tar -zxvf cloop_2.05~20060829-1.tar.gz $ cd cloop-2.05~20060829/ |
(ii)【
RHEL4のみ】
RHEL用にソースコードを修正
RHELの場合、そのままではコンパイルが通らないため一部のソースを修正する。
$ vi compressed_loop.c
29行目の"REDHAT_KERNEL"のdefineのコメントをはずす。 before: 29: /* #define REDHAT_KERNEL */ after: 29: #define REDHAT_KERNEL |
(iii)【任意】
cloopデバイス最大数の変更
必要に応じて、
cloopデバイスの最大数を変更する。デフォルトは、8。
$ vi compressed_loop.c
26行目の"CLOOP_MAX"の値を必要に応じ変更する。 before: 26 #define CLOOP_MAX 8 after: 26 #define CLOOP_MAX 16 |
(vi)コンパイル
# make KERNEL_DIR=/usr/src/redhat/BUILD/kernel-2.6.19/linux-2.6.19.i686/
|
※KERNEL_DIR:カーネルソースコードのディレクトリ
(v)モジュールのインストール
kernel2.6系の場合
cloop.koを使用する。
cloop.koをカーネルライブラリのディレクトリにコピーし、
モジュールの依存関係をチェックするする。
# mkdir -p /lib/modules/`uname -r`/misc && \ cp cloop.ko /lib/modules/`uname -r`/misc; # depmod -a |
(4)
cloopモジュールの組み込みテスト
正常に
cloopが組み込めるか確認する。
(i)モジュール情報の確認
cloopのモジュール情報が出力されることを確認
# modinfo cloop filename: /lib/modules/2.6.19-1.2288.2.1.fc5/misc/cloop.ko description: Transparently decompressing loopback block device author: Klaus Knopper (Kernel 2.4 and up, Knoppix version), Paul Russel (initial version) <以下略> |
(ii)モジュールの組み込みテスト
モジュールの組み込み可否を確認する。
(iii)
cloopデバイスの確認。
udev機能により、
cloopモジュール組み込みとき
cloopデバイスが自動的に生成される。
cloopデバイスの有無を確認する。
(5)
cloop関連コマンドのコピー
create_compressed_fsとextract_compressed_fs(
cloopソースコード内に梱包)をコピーする。
# install -m0755 create_compressed_fs /usr/local/bin/ # install -m0755 extract_compressed_fs /usr/local/bin/
|
3.手順(cloopファイルの作成とマウント)(1)
cloopファイルシステムの作成
下記コマンドで、
cloopの
ファイルシステムにしたいデータがあるディレクトリを
cloopのフォーマットに変換する。
# mkisofs -r datadir | \ create_compressed_fs - 65536 > datadir.iso.compressed ;
datadir : 対象データのディレクトリ名 datadir.iso.compressed : cloopフォーマットのファイル名
|
(2)
ファイルシステムのマウント
(i)
cloopファイルを
cloopデバイスにバインドする
下記コマンドで、生成した
cloopファイルと
cloopのデバイスをくくりつける。
<例:cloop0デバイスに、iso.compressedファイルを括り付ける> # losetup /dev/cloop0 /tmp/datadir.iso.compressed |
(ii)
cloopをマウントする
ファイルシステムをマウントする。
| # mount -o ro -t whatever /dev/cloop0 /mnt/compressed |
※OS起動停止時の
cloopファイルシステムの自動マウント・アンマウントシェル(rcシェル)はこちらを参照→ 【
Fedora/RHEL】cloop自動マウント用rcスクリプト −参考資料−
・
Landscape : Linuxの圧縮ファイルシステム・
knoppix.net : KNOPPIXドキュメント(情報古いです)
・
Network Project 3.0: KNOPPIX-5.0.1のカーネルを2.6.19に差し替える・
Knoppix Temporary Directory : cloopについての覚え書き