Linuxの起動プロセスを語る上で重要なinitrdについて解説する。

initrdとは何か?

kbootの構成の中にinitrdが存在したが、その後の起動シークエンスにもinitrdが出てくる。

initrdは「起動RAMディスク」とも呼ばれ、通常カーネルと一緒に読み込まれ一番最初にマウントされるファイルシステムである。最近のLinuxシステムでは必ず使われており、/bootのあたりにカーネルと一緒に置かれていることが多い。

initrdの正体はルートファイルシステムをgzipで圧縮したものであり、このファイルを展開してみると最低限のツールとカーネルドライバが入っている。Linuxカーネルはこのinitrdを展開することで、ひとまず最低限のドライバモジュールをロードする。

なぜそのような手順を踏むかというと、ドライバモジュールをロードしないとHDDなどのドライブにアクセスできないから、というのが主な理由となる。

PCなどでは、ユーザーが使っているマシンの構成が多岐に渡り、どのドライバモジュールが必要になるのかといったことがなかなか分かりにくい。あらゆるユーザーのマシンを想定して必要なドライバを全て静的にリンクしてしまうと、とてもサイズの大きなカーネルとなってしまう。かといって、すべてのユーザーにカーネルリビルドをさせるわけにもいかない。

そこで、最初に必要なドライバを探してロードし、それからドライブ内のシステムへとアクセスする仕組みが考えられた。それがinitrdである。