        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 を参照
してください。
======================================================================
日本語訳：野本浩一 <hng@ps.ksky.ne.jp>
    校正：azureさん <azure@kcc.zaq.ne.jp>
          境真太郎さん <s_sakai@mxn.mesh.ne.jp>
          中谷千絵さん <jeanne@mbox.kyoto-inet.or.jp>
