写真1 initrdのディレクトリ構成例。これは,Fedora Core 6に付属するinitrdの内容を展開したもの。
写真1 initrdのディレクトリ構成例。これは,Fedora Core 6に付属するinitrdの内容を展開したもの。
[画像のクリックで拡大表示]

 initrdは,Linuxが起動する際に一時的に利用されるファイル・システムのイメージです。initrdは通常,/boot/initrd-xxxx.imgというファイルとして,Linuxシステム内に保管されています。initrdの内容を展開すると,写真1のように,必要最小限のファイルやコマンドを備えたファイル・システムであることが分かります。

 initrdはシステム起動時に,カーネルによってメモリー上に展開されます。具体的には,メイン・メモリー内に確保したRAMディスク領域のファイル・システムとして使われます。ハード・ディスク上のファイル・システムをマウントした後はメモリーから消去されます。

 なぜ,initrdのような仕組みが必要なのでしょうか。その理由は,Linuxを柔軟に起動できるようにするためです。起動するシステムのハードウエア構成が決まっていれば,initrdは不要です。しかし,さまざまなシステム構成に対応するには,カーネルに含まれていないモジュールを,システム起動時に組み込む仕組みが不可欠です。initrdを利用すると,カーネルに含まれていないモジュールをinsmodコマンドでシステム起動時に組み込むことができます。

 例えばカーネルがSCSIやRAID構成,USBに対応していなかったとしても,このような装置に対応するモジュールを用意しておけば,(そのカーネルを用いた)LinuxディストリビューションをSCSIハード・ディスク上にインストールし,そこから起動して利用することが可能です。

 写真1からは,initrdが/bin,/dev,/etc,/lib,/loopfs,/proc,/sys,/sysrootといったディレクトリを含むことが分かります。さらに,/binにはカーネル・モジュールをロードするinsmodコマンドなどが,/libにはカーネル・モジュール(*.ko)が,存在することも分かります。

 一部の組み込みシステムのようにハード・ディスクを備えていない場合は,initrdが展開されたRAMディスクのまま,Linuxシステムとして利用されることもあります。