initramfs

Linuxが起動する際、カーネルは最終的にストレージ上のルートファイルシステムをマウントして通常の動作環境へ移行する。しかし、その過程では、ストレージコントローラのドライバ読み込みや暗号化ボリュームの復号、RAIDアレイの構成など、カーネル単体では対処しきれない処理が必要になる場合がある。initramfsはこうした処理をカーネルが実行できるよう、起動の初期段階に限定した最小限の環境を提供するために用意される。
initramfsの実体はcpioアーカイブ形式で圧縮されたファイルであり、カーネルイメージと並んでブートローダによってメモリ(RAM)に読み込まれる。カーネルはこのアーカイブを展開してメモリ上に一時的なルートファイルシステムとして構築し、その中に含まれる初期化スクリプトや必要なツール、ドライバモジュールを使って起動処理を進める。必要な準備が整うと、本来のルートファイルシステムへの切り替え(pivot_root)が行われ、initramfsの役割は終了する。
initramfsが特に重要な役割を果たすのは、暗号化されたディスクを使用している場合や、NFS経由でネットワーク上のルートファイルシステムをマウントする場合、LVMやソフトウェアRAIDで構成されたストレージを扱う場合などである。これらは、いずれも通常のカーネル起動処理だけでは対応できない処理が必要であり、initramfsの環境で先行して処理を行うことで起動の準備が整えられる。
initramfsの前身に「initrd」というシステムがあるが、両者は仕組みが異なる。initrdはブロックデバイスとしてマウントされる方式であったのに対し、initramfsはtmpfsベースのメモリファイルシステムに直接展開される方式で、より柔軟で効率的な設計となっている。現在の主要なLinuxディストリビューションではinitramfsが標準的に採用されている。