Wie lokalisiert der Windows Boot Manager die BCD?

468
Sergei Tachenov

Ich versuche den Windows-Startvorgang zu verstehen. Ich bin so weit gekommen, dass der EFI-Bootmanager den Windows-Bootmanager geladen hat. Dann muss jedoch auf die BCD zugegriffen werden, um mit dem Laden des Betriebssystems oder dem Chainloading des nächsten Boot-Managers fortzufahren. Wie genau findet es die BCD?

In meinem System befinden sich beispielsweise zwei BCDs auf einer GPT-Platte: eine auf dem ESP und eine auf der Systemreserved-Partition, die von der alten MBR-Platte geklont wurde. Schaut der Boot-Manager auf das ESP, nur weil das Laufwerk GPT ist? Schaut es in den "aktuellen" Ordner (gibt es zu diesem Zeitpunkt überhaupt so etwas, wenn noch kein Betriebssystem geladen ist)? Oder ist ein komplizierterer Algorithmus beteiligt?

Eine merkwürdige Tatsache: Wenn ich die Partition mit Systemreservierung entferne, startet der Boot-Manager nicht und beschwert sich, dass die BCD fehlt. Wenn ich jedoch an beiden BCDs einige Änderungen vornehme (z. B. unterschiedliche Timeouts), werden die ESP-BCD-Einstellungen wie erwartet verwendet.

1
@Johan, sollte es nicht eine Antwort statt eines Kommentars sein? Sergei Tachenov vor 6 Jahren 0
Ich habe den Kommentar in eine Antwort geändert. Johan Myréen vor 6 Jahren 0
BCD von einer MBR-Festplatte wird nicht von einem Windows verwendet, das gestartet wird, während UEFI auf einer GPT-Festplatte installiert ist. Ramhound vor 6 Jahren 0
@ Ramhound, würde man so denken. Mein System weigert sich jedoch, ohne diese ex-aktive Partition zu booten, und beschwert sich darüber, dass BCD fehlt. Ich versuche herauszufinden, warum, unter allen Dingen. Sergei Tachenov vor 6 Jahren 0
Es fehlt also an diesem Punkt eine Partition erstellt und erstellt werden. Tonnenweise Fragen, wie das geht. Ramhound vor 6 Jahren 0
@Ramhound, das Wiederherstellen einer Partition ist kein Problem, ich habe eine vollständige Sicherung. Ich habe das gleich gemacht. Das Problem ist, herauszufinden, warum * es überhaupt gebraucht wird. Sergei Tachenov vor 6 Jahren 0

1 Antwort auf die Frage

2
Johan Myréen

Der Boot-Manager sucht auf dem ESP nach der BCD, da dies die einzige zu diesem Zeitpunkt bekannte Partition ist und die Firmware wahrscheinlich nur FAT-Partitionen lesen kann. Der Pfad zur BCD ( /EFI/Microsoft/Boot/BCD) auf dem ESP ist wahrscheinlich hartcodiert. UEFI wurde von Anfang an zur Unterstützung der Koexistenz von Software verschiedener Hersteller entwickelt und /EFI/Microsoftist der "Spielplatz" von Microsoft auf dem ESP.

Die Firmware kann ja, aber der Bootmanager kann zwar NTFS lesen. Andernfalls kann Windows nicht geladen werden. Wenn ich außerdem die NTFS-Partition (System Reserved) lösche, lehnt der Boot-Manager die Arbeit ab und beschwert sich darüber, dass die BCD fehlt. Und doch verwendet es sicherlich die ESP-BCD. Zahlen Sergei Tachenov vor 6 Jahren 0
Sie haben Recht damit, dass der Boot-Manager NTFS aus den angegebenen Gründen lesen kann. Trotzdem ist es sinnvoll, die BCD zusammen mit dem Boot-Manager auf dem ESP zu speichern, da die BCD bestimmt, was der Boot-Manager als Nächstes tun soll, möglicherweise basierend auf den Eingaben des Benutzers. Die Firmware wird gestartet (durch Variablen im nichtflüchtigen RAM gesteuert) `bootx64.efi`, die` bootmgr.efi` startet, die die BCD liest, und lädt normalerweise `winload.exe`, die sich auf dem Laufwerk C: befindet. Theoretisch könnte `bootx64.efi` von NTFS geladen werden, aber dann müsste` bootx64.efi` wissen, wie man NTFS liest. Johan Myréen vor 6 Jahren 0
Ja, macht Sinn. Was nicht ist, dass mein System ohne die NTFS-Bootpartition (System Reserved) nicht startet. Sergei Tachenov vor 6 Jahren 0