GNU/Linux >> Linux の 問題 >  >> Linux

ブート時にカーネル全体がメモリにロードされますか?

カーネル全体が、通常は initramfs とともに、起動時にメモリにロードされます 近頃。 (initramfs なしで起動するようにシステムをセットアップすることは可能です。 しかし、これはデスクトップやサーバーでは珍しいことです。)

initramfs の役割は、「実際の」ファイルシステムをマウントし、システムの起動を続行するために必要な機能を提供することです。これには、カーネル モジュールとさまざまなバイナリが含まれます。少なくとも udev が必要です。 、おそらくいくつかのネットワーキング、および kmod モジュールをロードします。

モジュールは、起動するだけでなく、後でカーネルにロードできるため、initramfs によるカーネルの特別な準備はありません。 .どこにでも保存できます:initramfs/lib/modules モジュールを開発している場合は、実際のファイルシステムで、開発ツリーで... initramfs ルート ファイルシステムをマウントするために必要なモジュールのみを含める必要があります (残りは含まれます)。


カーネル全体 (モジュールは除く) がメモリにロードされます。ファイルシステムが利用可能になる前にカーネルが必要とするモジュールがある場合 (これは通常、ファイルシステムとそのデバイスのドライバーを意味します)、それらのモジュールは initramfs (メモリ内) にあり、カーネルはそこからそれらをロードします。他のモジュールは後でファイル システムからロードできます。


最新の Linux セットアップのカーネルは、かなりモジュール ベースです。つまり、適切なカーネル (起動時に RAM にロードされる) には最低限の機能のみが含まれ、残りはすべてモジュールとしてコンパイルされます (実行時にロード可能)。たとえば、次の場合でもこれを機能させるには。起動に必要なデバイスまたはファイルシステムはモジュール、initramfs カーネルとともにロードされます (名前が示すように、これは単純なファイルシステムを備えた RAM 領域であり、ブート時にマウントされます)。この一時ファイルシステムは / にマウントされています 、スタートアップ プログラムと必要なモジュールが含まれています。 initramfs で起動したら 完了すると、Linux は pivot_root(8) を実行します 、本物の / をマウント そして initramfs を投げます

この複雑さのポイントは、例えば。ディストリビューションは one をコンパイルできます カーネル (最小限のカーネルとモジュールの完全なセット)、およびカーネルのインストール時に initramfs を作成します ターゲットマシンのハードウェアとセットアップに合わせて調整されています。 「パーソナル コンピュータ」のデバイスと構成は多種多様であるため、これらすべてが必要です。


Linux
  1. Linuxカーネル:イノベーショントップ5

  2. デバイスからユーザー空間メモリーへの DMA への Linux カーネル デバイス ドライバー

  3. mmap:マップされたファイルはすぐにメモリにロードされますか?

  1. ブート パーティションのサイズ変更

  2. 起動時にカーネル モジュールをスキップする

  3. カーネル専用のメモリの使用状況を監視するには?

  1. CentOS/RHEL 8 でデフォルトのカーネル (古いカーネルから起動) を変更する方法

  2. initrd イメージを作成せずに Linux カーネルを起動することはできますか?

  3. Linux プロセスの仮想メモリ空​​間にカーネル部分があることの用途は何ですか?