Cramfs - 小さな ROM 上にファイルシステムを詰め込む cramfs は単純で小さいもので、目的のものを効果的に圧縮するよう設計され ています。 一度にファイルの一ページを圧縮するために、zlib ルーチンを使用し、任意 のページアクセスを行います。メタデータは圧縮されませんが、従来のファイ ルシステムより少ないディスクスペースを使うようにするために、とても簡素 な表記で書かれます。 cramfs ファイルシステムに書き込みはできません (それを圧縮可能で小型に し、さらに動作中に更新することは *とても* 困難です)。したがって scripts/cramfs の中 "mkcramfs" ユーティリティを使用してディスクイメー ジを作成しなければなりません。 使用上の注意 ------------ ファイルサイズは 16MB 未満に制限されます。 ファイルシステムの最大サイズは 256MB 強です。(ファイルシステムの最後の ファイルは 256MB を超えることができます。) (mkcramfs.c のコメント行に は、ROM サイズは 64MB までの制限がある場合があると書かれていますが、こ の制限はcramfs コードにはあてはまりません。) gid の下位 8 ビットだけが格納されます。mkcramfs の現行版は単純に 8 ビッ トに切り詰めるので、潜在的なセキュリティ問題があります。 ハードリンクはサポートされていますが、ハードリンクされたファイルは、 cramfs イメージ内で 1 のリンクカウントのままです。 Cramfs ディレクトリは `.' もしくは `..' を持ちません。(cramfs 上のすべ てのファイルと同様に) ディレクトリのリンクカウントは常に 1 です。(余談 ですが `find' で -noleaf を使う必要はありません。) cramfs でタイムスタンプは格納されていないので、自動的に紀元 (1970 GMT) になります。アクセスして間もないファイルはタイムスタンプが更新されてい るかもしれませんが、その更新が持続するのは inode がメモリにキャッシュ されている間だけで、その後タイムスタンプは 1970 に戻ります。つまり時間 が逆行します。 現在、cramfs は同じエンディアンのアーキテクチャで書き込みおよび読み出 しされなければならず、PAGE_CACHE_SIZE == 4096 なカーネルだけ読むことが できます。これらのうち少なくとも後者はバグですが、最良の修正方法はまだ 定まっていません。さしあたり、大きなページが必要な場合、将来のカーネル でファイルシステムが読み出せなくなることを気にしなければ、mkcramfs.c の中の #define のちょっとした変更でできます。 /usr/share/magic 用 ------------------- 0 long 0x28cd3d45 Linux cramfs >4 long x size %d >8 long x flags 0x%x >12 long x future 0x%x >16 string >\0 signature "%.16s" >32 long x fsid.crc 0x%x >36 long x fsid.edition %d >40 long x fsid.blocks %d >44 long x fsid.files %d >48 string >\0 name "%.16s" ハッカーへの注意 ---------------- ファイルシステムのレイアウトおよび実装の注意は fs/cramfs/README を参照 してください。 ====================================================================== 日本語訳:野本浩一 校正:azureさん 境真太郎さん 中谷千絵さん