[Suzaku:00193] Re: カーネルはどうやってrootファイルシステムイメージを探すか?

Morizzo email@hidden
2004年 12月 21日 (火) 17:40:33 JST


yashi様、ありがとうございます。

> > make image で何をやってるのか調べたところ、カーネルイメージとROMFSの
> > イメージを単純にcatしているだけのようでしたけど、
> > 「ルートFSイメージはカーネルのすぐ後」という暗黙のルールがあるんでしょうか?
> デフォルトの状態だと、暗黙のルールがあります。

suzakuでそういうルールが定義されているなら、それはそれで納得しました。

> > その割には、jffs2の場合はddを使って少し違う方法で書き込みイメージを
> > 生成しているようなので、いまいちルールが読み切れないです。
> jffs2の場合は、また違うルールだからですね。

だとすると、以前[Suzaku-ML:00142]で

> jffs2を試してみたいかたは、vendor/AtmarkTechno/SUZAKU/*.jffs2を使って
> みてください。

なんて書かれていましたけど、
単純にgenromfsの代わりに、mkfs.jffs2を使ってイメージだけ作っても
改造しなければカーネルはルートFSを見つけてくれない、
ということなんですね。

> 現在の suzakuでは、m68knommuで採用している方法をとっています。この方法
> は、bss sectionの部分に romfsの magic numberを見付けた場合、romfsを
> bssの後にずらし、ずらした場所をmtdの partionに割り当てます。
> 
> kernelは、root filesystemをマウントする場合に、この mtdのパーティショ
> ンを mountするようになっています。
> 
> code的には、romfsを移動する場所は、mach_early_init()の中。mtdの部分は、
> drivers/mtd/maps/uclinux.c::uclinux_mtd_init()の中です。

ありがとうございます。
具体的な説明でだいぶん頭の中では動作のイメージができてきました。
ソースも見てみましたが、その部分だけの短絡的な理解は難しそうで
やはり関連する部分のソースも追いかけないとダメですね。

ブートローダやドライバがハードウェア依存・実装依存になるのは
仕方ないと思いますが、
カーネルに飛び込んだ後でもルートFSを探すのにもけっこうハード依存(?)な
コードを書かなければいけない、というのはちょっとオドロキです。
SuzakuでCFブートなんてもくろんでますが、config変更+ちょこっとドライバ書く
だけではダメで、ドロドロした改造が続きそうな予感がしています・・・

 --- Morizzo ---





suzaku メーリングリストの案内