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

Yasushi SHOJI email@hidden
2004年 12月 21日 (火) 13:34:49 JST


At Mon, 20 Dec 2004 21:38:05 +0900,
Morizzo wrote:
> 
> 初めまして、Morizzoと申します。
> 初歩的な質問で恐縮ですが、教えてください。
> 
> uC-Linuxでは、カーネルはどこから、どうやってルートファイルシステムの
> イメージを見つけるのでしょうか?
> オライリーの本とか買ってみたのですが、"uC-"じゃない方のLinuxの
> 説明だったのでちょっと違うようです。
> この本によれば、ブートローダがカーネルを起動するときに
> パラメータとしてルートイメージの場所を教える、ようなことを
> 書いてあったのですが、suzakuの場合は単にカーネルにジャンプしているだけで、
> ルートの位置は指定していないように思いました。

していません。もちろん、jffs2などを使う場合には指定する必要があります。
atagの実装は予定していますが、compiled-in parameterよりもcodeがはるか
に大きくなってしまうため、まだやっていません。

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

デフォルトの状態だと、暗黙のルールがあります。

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

jffs2の場合は、また違うルールだからですね。

> そのうちいろいろ改造してCF/HDDからのブートとかもやってみたいので、
> ソースコードで言ってどのあたりが該当する場所なのか教えていただけると
> 今後いろいろ楽しめそう(?)なのですが・・・

現在の 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()の中です。
--
          yashi




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