ブート マネージャーはどのように機能し、BIOS マシンと UEFI マシンでは動作が異なりますか?

ブート マネージャーはどのように機能し、BIOS マシンと UEFI マシンでは動作が異なりますか?

オンラインでいろいろ読んでいるうちに、ブート マネージャーの仕組みについてますます混乱し始めました。rEFInd などのブート マネージャーは、アップデートやファームウェアに関連するものではない (間違っていたら訂正してください) ことに気付きました。現在、私は次のように理解しています。

BIOS マシンの場合、BIOS ファームウェアがコンピュータに存在するすべてのディスクを認識することが期待されます (ディスク上のパーティションは認識しません)。マシンに内蔵ハード ドライブと外付け CD が接続されているとします。この場合、BIOS ではそのうちの 1 つを選択して、ハード ドライブまたは CD の MBR にあるブート ローダーを読み取ることができます。ここで、ハード ドライブに Windows と Linux の両方がインストールされているとします。ここで、よくわからない部分があります。ブート マネージャーとブート ローダーの両方である GRUB をインストールした場合、ハード ドライブからのブートを選択した後、GRUB ブート ローダーが読み込まれて実行され、GRUB ブート マネージャーが呼び出されるということですか? その後、GRUB ブート マネージャーはマシン上のさまざまなシステムを認識し、Windows 用のブート ローダーまたは Linux 用のブート ローダー (どちらも GRUB の一部) を呼び出しますか?

UEFI マシンの場合、ファームウェアはパーティション テーブルとコンピューターに接続されているすべてのディスクを認識するため、すでにブート マネージャーになっているようです。したがって、必要なのは、EFI システム パーティションにブート ローダーを書き込むことだけです。ファームウェアによって、ブート時に使用するブート ローダーを選択できるようになります。これで正しいですか? ただし、UEFI マシンで使用できる rEFInd などのブート マネージャーがまだあることに気付きました。ファームウェアがすでにブート マネージャーのように動作している場合、それらのブート マネージャーは何のためにあるのでしょうか。さらに、rEFInd はファームウェアのものと見なされますか、それとも特定のディスクの EFI システム パーティションにインストールされたアプリケーションだけと見なされますか?

答え1

メインのオペレーティング システムが起動する前に実行され、他のプログラムの起動に関係するコードは、すべてブートローダです。ほとんどのコンピューター、さらにはほとんどの組み込みデバイスには、ブートローダのチェーンがあります。ROM またはフラッシュ メモリ内のコードがフラッシュ メモリまたはディスク ドライブから別のコードを読み込み、それがまた別のコードを読み込む、というように続きます。BIOS はブートローダです (実際にそうである場合もあります)。reFInd はブートローダ、Grub はブートローダなどです。

一部のブートローダは、別のコードを読み込んでそのコードに分岐するだけですが、ほとんどのブートローダは、構成データの読み取り、接続された周辺機器の検出、ハードウェアのテスト、デバイスの初期化、次に何を読み込むかを決定するためのストレージおよびネットワーク デバイスの列挙、画面へのメッセージの表示、ユーザー入力の聴取によるユーザーのブート プロセスへの影響の許可などの追加タスクを実行します。

ブート マネージャーは、ユーザーが複数のオペレーティング システムから選択できる機能を備えた、特定の種類のブートローダーです。Grub ブートローダーは実際には Grub ブート マネージャーを「呼び出す」わけではなく、ブート マネージャー機能は Grub の 1 つの側面です。

一部の PC のレガシー BIOS には、ユーザーがいくつかのデバイスを選択できるという点で、粗雑なブート マネージャー機能があります。レガシー BIOS はディスクの最初の 512 バイトしかロードできず、そこでコードを実行できないため、制限があります。UEFI には、ユーザーが FAT パーティション上のファイルを選択できる、より強力なブート マネージャーがあります。

ブートローダがファームウェアとしてカウントされるかどうかは、ファームウェアをどのように定義するかによって異なります。「ストレージ デバイスにインストールされるのではなく、コンピューターのハードウェアに付属している」という定義では、BIOS と UEFI はファームウェアですが、reFInd と Grub はファームウェアではありません。「オペレーティング システムから独立している」という定義では、reFInd と Grub はファームウェアです。

関連情報