initrdとRAMDISK

すでに先週いろいろ試したので忘れないうちに残しておきます。(起動方法が決まるまではL-Boxを使わずにVMWare環境でお試しを続けるつもり)

まずLinuxカーネルはコンフィグでBLK_DEV_INITRDをyにするとinitrdを使えるようになります。もともとinitrdは起動処理の途中でUSBメモリとかにアクセスしたいときに使うものっぽい。
起動が終わって運用状態に入る前に一時的に運用とは別のルートファイルシステムがほしいときに使うっぽい。

ややこしいのがRAMDISKとinitrdが微妙に違うってことだろうか。カーネルソースコードを見るとデバイスドライバが別々になってたりする。
initrdの方はカーネルの起動処理中にcpio.gzファイルからメモリ上にファイルを展開してルートファイルシステムにするみたい(ソースはinit/initramfs.c)。一方RAMDISKブートローダがメモリ上にあらかじめカーネルと一緒にロードしておいて、カーネルは起動処理中にgunzip処理でRAMDISK領域に展開してルートファイルシステムとしてmountするみたい(ソースはdrivers/block/rd.c)。

ちなみにRAMDISKはBLK_DEV_RAMをyにすると使える。