Linuxカーネルに独自のブートローダがあるのはなぜですか?

Linuxカーネルに独自のブートローダがあるのはなぜですか?

Linuxカーネルコードを操作しようとしていますが、次のメッセージが表示されます。このファイルBIOSで完全なブートローダが実行されているようです。私の印象は、通常、grubがMBRにあり、何とかカーネルを呼び出すことです。

私の質問は次のとおりです

  1. (私の知る限り)カーネルにブートローダが組み込まれているのはなぜですか?これが歴史的な理由なのか?
  2. 電源ボタンを押すことからカーネルを起動するまで、何が起こるのかを段階的に説明できる人はいますか?

答え1

  1. はい、これは歴史的な理由によるものです。以前は、フロッピーディスクにカーネルを書き、それを使ってPCを起動することができました。header.S誰かがこれを試みた場合は、カーネルがメッセージを表示できるようにブートセクタを提供してください。

    header.SカーネルがUEFIブートローダとして設定されている場合、PEヘッダも提供され、結果のカーネルイメージはUEFIから直接起動できます。すべての場合において、header.SGrubや他の人がカーネルを起動するために使用するマルチブートプロトコルを実装するヘッダが提供されています。

  2. 現在BMCがないx86システムでは、システムコントローラはシステムファームウェアを実行しているCPUを起動して初期化します。メモリ、さまざまなバスなどを初期化し、適切なシステムパーティションを持つディスクを見つけます。選択またはデフォルトのブートローダ(例えばGrub)をこのパーティションから取得します。その後、ブートローダはカーネルとinitramfs(通常は)をロードします。カーネルへの制御権の付与

    それ以上のものがあります。EFIブートプロセスの説明ELILO(今使っていない部分は無視してください)説明もありますDebian Wiki UEFI ページ、リムーバブルメディアの処理方法も説明します。

関連情報