web-dev-qa-db-ja.com

Windows Boot ManagerはどのようにしてBCDを見つけますか?

Windowsの起動プロセスを理解しようとしています。 EFIブートマネージャーがWindowsブートマネージャーをロードするところまで到達しました。ただし、OSのロードまたは次のブートマネージャーのチェーンロードをさらに進めるには、BCDにアクセスする必要があります。 BCDをどの程度正確に見つけますか?

たとえば、私のシステムでは、GPTディスクに2つのBCDがあります。1つはESPにあり、もう1つは古いMBRディスクから複製されたシステム予約済みパーティションにあります。ブートマネージャーはESPドライブがGPTであるという理由だけで見ていますか?それは「現在の」フォルダーを調べますか(OSがまだロードされていない場合、この段階ではそのようなことはまったくありませんか? )?または、より複雑なアルゴリズムが含まれていますか?

不思議な事実:システム予約済みパーティションを削除すると、ブートマネージャーが起動せず、BCDが欠落していると文句を言います。それでも、両方のBCDにいくつかの変更を加えると(たとえば、異なるタイムアウトを設定する)、期待どおりにESP BCD設定が使用されます。

1
Sergei Tachenov

ブートマネージャーはESPでBCDを探します。これは、この段階で認識されている唯一のパーティションであり、ファームウェアはおそらくFATパーティションのみを読み取ることができるためです。BCDへのパス(/EFI/Microsoft/Boot/BCD)on ESPはおそらくハードコーディングされています。UEFIは最初から、さまざまなベンダーのソフトウェアの共存をサポートするように設計されており、/EFI/Microsoftは、ESPにおけるMicrosoftの「遊び場」です。

2
Johan Myréen