Linuxカーネルコードを操作しようとしていますが、次のメッセージが表示されます。このファイルBIOSで完全なブートローダが実行されているようです。私の印象は、通常、grubがMBRにあり、何とかカーネルを呼び出すことです。
私の質問は次のとおりです
- (私の知る限り)カーネルにブートローダが組み込まれているのはなぜですか?これが歴史的な理由なのか?
- 電源ボタンを押すことからカーネルを起動するまで、何が起こるのかを段階的に説明できる人はいますか?
答え1
はい、これは歴史的な理由によるものです。以前は、フロッピーディスクにカーネルを書き、それを使ってPCを起動することができました。
header.S
誰かがこれを試みた場合は、カーネルがメッセージを表示できるようにブートセクタを提供してください。header.S
カーネルがUEFIブートローダとして設定されている場合、PEヘッダも提供され、結果のカーネルイメージはUEFIから直接起動できます。すべての場合において、header.S
Grubや他の人がカーネルを起動するために使用するマルチブートプロトコルを実装するヘッダが提供されています。現在BMCがないx86システムでは、システムコントローラはシステムファームウェアを実行しているCPUを起動して初期化します。メモリ、さまざまなバスなどを初期化し、適切なシステムパーティションを持つディスクを見つけます。選択またはデフォルトのブートローダ(例えばGrub)をこのパーティションから取得します。その後、ブートローダはカーネルとinitramfs(通常は)をロードします。カーネルへの制御権の付与。
それ以上のものがあります。EFIブートプロセスの説明
ELILO
(今使っていない部分は無視してください)説明もありますDebian Wiki UEFI ページ、リムーバブルメディアの処理方法も説明します。