cramfsの話

NetBSDでのファイルシステムの扱いについて理解したいと考えているのだが、 いろいろなことが分からなくて、先に進まない。 そこで、既存の簡単なファイルシステムのサポートをNetBSDに追加してみることで 学習したいと考えている。

Linuxで最も簡単なファイルシステムは、cramfs (Compressed ROM file system) と言うものであるように見える。 なんで、Compressed ROM file systsmがcramfs と略されるのかというのは疑問ではあるが…。

とりあえず、既存のリトルエンディアンなcramfsのディスクイメージを 手元で作れるようにした。単にSUSE 13.1のutil-linux-2.23.2-34.1.x86_64.rpmを 展開し、NetBSD/amd64のcompat_linuxで動かしただけである。

ドキュメントがgnu-gpl-v2なソースコードを見ろとだけ書いてあって 困っているのだが、基本的には生成されたディスクイメージを見て、 パースするプログラムを書いている。 NetBSDカーネルでサポートする際にも、このコードは役立つものと考えている。

今のところ、ユーザーランドのプログラムであるパーザーでは、 Super blockとinodeをパースできるようにはなった。 後はzlib deflateで圧縮されたファイル本体のデータの取り扱いが できるようになれば良い。

今、イメージできないのは、zlibで圧縮されたデータをいつ展開するか と言う問題である。 例えば、これにはディスクイメージのマウント時に全てをRAMに展開しておく 方法と、個々のファイルにアクセスした際に展開する方法があると思う。 ユーザーランドのパーザーとしては、mmap(3)でイメージファイルを RAMのある範囲に割り当ててパースしてやれば良いのだが、 そもそもこう言う場合のNetBSDカーネルの流儀と言うのが分からない。

コマンドラインのユーティリティープログラムとしては、mount_cramfsと makefsでリトルエンディアンとビッグエンディアンの両方のディスクイメージを 作れるようにして置けば十分であろう。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

ハトリ・マーシャル株式会社を探る (その後)

前回 は、ハトリ・マーシャルが短資会社になったところまでを書いた。 今回は、その後の話題に触れたい。 短資会社となった後に、ハトリ・マーシャルが大きく活躍したような記事はあまり見付けることができなかった。 そもそも短資会社や外為ブローカーについての情報が少な...