カーネル全体が、通常は initramfs
とともに、起動時にメモリにロードされます 近頃。 (initramfs
なしで起動するようにシステムをセットアップすることは可能です。 しかし、これはデスクトップやサーバーでは珍しいことです。)
initramfs
の役割は、「実際の」ファイルシステムをマウントし、システムの起動を続行するために必要な機能を提供することです。これには、カーネル モジュールとさまざまなバイナリが含まれます。少なくとも udev
が必要です。 、おそらくいくつかのネットワーキング、および kmod
モジュールをロードします。
モジュールは、起動するだけでなく、後でカーネルにロードできるため、initramfs
によるカーネルの特別な準備はありません。 .どこにでも保存できます:initramfs
、 /lib/modules
モジュールを開発している場合は、実際のファイルシステムで、開発ツリーで... initramfs
ルート ファイルシステムをマウントするために必要なモジュールのみを含める必要があります (残りは含まれます)。
カーネル全体 (モジュールは除く) がメモリにロードされます。ファイルシステムが利用可能になる前にカーネルが必要とするモジュールがある場合 (これは通常、ファイルシステムとそのデバイスのドライバーを意味します)、それらのモジュールは initramfs (メモリ内) にあり、カーネルはそこからそれらをロードします。他のモジュールは後でファイル システムからロードできます。
最新の Linux セットアップのカーネルは、かなりモジュール ベースです。つまり、適切なカーネル (起動時に RAM にロードされる) には最低限の機能のみが含まれ、残りはすべてモジュールとしてコンパイルされます (実行時にロード可能)。たとえば、次の場合でもこれを機能させるには。起動に必要なデバイスまたはファイルシステムはモジュール、initramfs
カーネルとともにロードされます (名前が示すように、これは単純なファイルシステムを備えた RAM 領域であり、ブート時にマウントされます)。この一時ファイルシステムは /
にマウントされています 、スタートアップ プログラムと必要なモジュールが含まれています。 initramfs
で起動したら 完了すると、Linux は pivot_root(8)
を実行します 、本物の /
をマウント そして initramfs
を投げます
この複雑さのポイントは、例えば。ディストリビューションは one をコンパイルできます カーネル (最小限のカーネルとモジュールの完全なセット)、およびカーネルのインストール時に initramfs
を作成します ターゲットマシンのハードウェアとセットアップに合わせて調整されています。 「パーソナル コンピュータ」のデバイスと構成は多種多様であるため、これらすべてが必要です。