bcdedit.exe weigert sich, den Systemspeicher zu öffnen

3851
Poma

Sieht aus, als wäre mein BCD irgendwie kaputt, aber ich kann nicht herausfinden, was falsch ist. Das System startet gut, verhindert jedoch, dass Windows Updates installiert:

MoSetupPlatform: Opening BCD store... CDlpActionDiskSpaceReq::CalculateRequiredDiskSpaceInstallReq(1752): Result = 0x8007001F 

Ich verwende Windows 10 auf einem MacBook (Bootcamp), es verwendet die EFI-Partitionstabelle. Wenn ich bcdedit /enumauf erhöhte Aufforderung renne, bekomme ich

The boot configuration data store could not be opened. A device attached to the system is not functioning. 

Wenn ich versuche, den Store direkt zu öffnen, wird der Vorgang problemlos geöffnet:

B:\>bcdedit.exe /store B:\EFI\Microsoft\Boot\BCD /enum  Windows Boot Manager -------------------- identifier  device partition=B: path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale en-US inherit  default  resumeobject  displayorder  toolsdisplayorder  timeout 30  Windows Boot Loader ------------------- identifier  device partition=C: path \WINDOWS\system32\winload.efi description Windows 10 locale en-US inherit  recoverysequence  displaymessageoverride Recovery recoveryenabled Yes isolatedcontext Yes allowedinmemorysettings 0x15000075 osdevice partition=C: systemroot \WINDOWS resumeobject  nx OptIn bootmenupolicy Standard 

Speichert Windows tatsächlich BCD an anderer Stelle? Woher weiß Windows, auf welcher Partition und auf welchem ​​Pfad nach BCD-Speicher des Systems gesucht werden soll?

Wie kann ich feststellen, was mit meinem BCD-Shop falsch ist?

Update: Ich habe vergessen, dass ich mit dem refindBootloader boote, der wahrscheinlich bootetbootmgfw.efi

1
„Speichert Windows tatsächlich BCD an anderer Stelle? ”- Nein, es ist auf der EFI-Partition gespeichert. Warum müssen Sie Ihrer EFI-Partition einen Laufwerksbuchstaben zuordnen und zuweisen? Ramhound vor 6 Jahren 0
Und der vollständige Pfad lautet immer `EFI \ Microsoft \ Boot \ BCD`? Poma vor 6 Jahren 0
Die EFI-Partition sollte keinen Laufwerksbuchstaben haben. Die Antwort auf Ihre Frage ist, dass dies für UEFI-Systeme in der Tat gilt: https://technet.microsoft.com/de-de/library/cc721886(v=ws.10).aspx Ramhound vor 6 Jahren 0
Ich habe es vorübergehend in B: installiert, um dieses Problem leichter beheben zu können. Aber wenn beide Befehle versuchen, dieselbe Datei zu öffnen, wie kommt es, dass einer erfolgreich ist und der andere fehlschlägt? Poma vor 6 Jahren 0

2 Antworten auf die Frage

1
Poma

Sieht aus wie OS X einige Änderungen vornimmt, die inkompatibel sind und bcdedit beschädigen. So konnte ich dieses Problem vorübergehend beheben: Setzen Sie das NVRAM mit + Alt+ P+ zurück R, und starten Sie es direkt in die Windows-Partition, indem Sie halten Alt. Ich konnte Windows-Updates installieren, aber nach dem Booten in OS X und dem Installieren von Updates wurde bcdedit erneut beschädigt.

-2
Vishukani

A Does Windows store actual BCD somewhere else? How does windows know on which partition and path to look for system BCD store?

EFI mode works with two legs;

1- a special BIOS (on chip writable area) partition where OS Loader Partition GUIDs are saved.
2- a system (hidden) partition with that GUID named EFI where Bootloader executable located (.efi extension files).

If you have installed/reinstalled several OS'es on EFI mode, then chances are, BIOS SPI chip got cluttered with many records of old OS'es and eventually filled up space on that special 8MB (if I'm not wrong) on-chip partition and became read-only.

Microsoft has a Technet page where it's shown how to clean up EFI duplicate or unneeded guid records (for example OS deleted but EFI record is still there) .
It involves creating a backup of current configuration then resetting it without duplicate records.

on an elevated cmd prompt;

Bcdedit /export savebcd 

this will backup current bootloader configurations.
make a copy of it for recovery purposes (savebcd will be our backup);

Copy savebcd newbcd 

Then export current records to a text file in human-readable format;

Bcdedit /enum firmware > enumfw.txt notepad enumfw.txt 

Load that file with notepad and review it to point duplicate records.

to delete each duplicate/obsolete record:

Bcdedit /store newbcd /delete 

where 93cee840-f524-11db-af62-aa767141e6b3 is just an EXAMPLE guid
replace it with the guid which you think unneeded

once you have gone thru deletion of all unneeded guids;

Bcdedit /import newbcd /clean 

Clears current EFI records and imports the cleaned (file we just cleaned unneeded records from) configuration data.
If you still get "A device attached to the system is not functioning." error,
Then; I don't want to be a bad news bringer but You have two paths to follow;
- Stick to your current system; make a WHOLE disk image backup (including your EFI partition) ASAP, because most possibly your SPI (BIOS) chip has cluttered and you cannot flush it without reflashing/replacing it.
This means current Bootloader pointers on the chip are final and if you try to reinstall another OS in EFI mode, it simply won't finalize installation and installer will be interrupted with an error (Windows OS family) or will finalize but BIOS won't load it (Linux installers, e.g. openSUSE), moreover you'll lose your old config, you'll end up having no booting OS on your device.
- Considering you have a Mac, ask tech support to reflash/replace BIOS.
if that's not the case or not feasible; replace hard drive switch to legacy BIOS mode (if that switch in BIOS still works, for me it just didn't work (Lenovo Ideapad B50)

other than these there are some other options to be ruled out as follows: as they are offered as if they are safe tips in some videos on Youtube about this subject, so I just mention them as not to try, because they are dangerous and/or voids device warranty (removing laptop battery + disassembling device to expose motherboard then removing bios battery + waiting (hoping) bios to reset, or shorting (short-circuiting) SPI chip); especially bios battery removal method never works in most (if not all) laptops, while shorting SPI chip can cause even whole system to get bricked.

Hope these helped.

"Es gibt einige andere Optionen, die auszuschließen sind" - Was sind diese anderen Optionen? Sei präzise. Versuchen Sie, den Kommentar auf ein Minimum zu beschränken. Es ist eine unnötige Ablenkung. Ramhound vor 6 Jahren 0
`Bcdedit / export savebcd` funktioniert nicht wie alle anderen Befehle, die den aktuellen BCD-Speicher des Systems lesen. Es sieht so aus, als würde bcdedit an der falschen Stelle nach BCD suchen, weil es sich öffnet, wenn es direkt referenziert wird. Poma vor 6 Jahren 0
Und was genau ist auf einer speziellen BIOS-Partition gespeichert? Sie sagen zwar, es könnte unübersichtlich werden, beschreiben aber dann, wie Sie Einträge in der BCD-Datei bereinigen, die auf der Festplatte der EFI-Partition gespeichert ist. Poma vor 6 Jahren 0
@Poma - Das einzige, was ich weiß, das auf einem UEFI-ähnlichen Chip gespeichert ist, sind Secure Boot-Schlüssel. Welches ist natürlich eine optionale Funktion von Windows und gilt nicht für das von Ihnen beschriebene Problem. Apple ist bekannt dafür, die Hardware strenger zu kontrollieren, also Apple-Hardware, die die EFI-Konfiguration ihrer Hardware strenger kontrolliert. Ramhound vor 6 Jahren 0
Wie ich bereits gesagt habe, ist es ein zweibeiniges System, einer ist ein Zeiger, andere sind Lader, Zeigereinträge werden auf dem Chip (nicht auf der Festplatte) geschrieben. Wenn sich der zweite Teil der Loader auf einer EFI-Partition befindet, werden bei der Bcdedit-Reinigung doppelte / veraltete Zeigereinträge aus dem BIOS entfernt. Vishukani vor 6 Jahren 0
@Vishukani, was Sie damit sagen, ist, dass der Befehl bcdedit die Daten im BIOS bearbeitet und speichert und nicht in der Datei \ EFI \ Microsoft \ Boot \ BCD`? Poma vor 6 Jahren 0
Nein, das habe ich nie gesagt, wenn Sie meine Antwort sorgfältig gelesen haben, bekommen Sie sie; \ EFI <Dies ist der MOUNT-Pfad des EFI-Laufwerks, auf dem sich die BOOTLOADER-DATEIEN befinden, NICHT die BOTLOADER-POINTER-EINGABE (es befindet sich auf der OnFhip-UEFI-Partition mit BIOS). Vishukani vor 6 Jahren 0
Ich versuche es, aber es summiert sich immer noch nicht. Wenn bcdedit keine Daten im BIOS bearbeitet, wie kann es sein, dass bcdedit verwendet werden kann, um Speicherplatz im BIOS freizugeben, wie Sie oben beschrieben haben? Und was genau ist dann ein Bootloader-Zeiger-Eintrag? Poma vor 6 Jahren 0
@Poma - Es gibt eine Liste von Arbeitern auf Ihrem Schreibtisch, schreibt BILL-555-10-55, schreibt STEVE-555-20-50. Wenn Sie sie also erreichen möchten, haben Sie ihre Telefone in der Liste. Dies ist die Liste der Bootloader Ihr BIOS, Sie möchten BILL (WINDOWS) aufrufen, ruft 555-10-55 (dies ist der Mount-Punkt Ihres Bootloaders, der sich in einer versteckten Partition mit dem Namen EFI und Bootloader von Windows unter EFI \ Microsoft \ Boot \ befindet) auf diese Weise Die Daten befinden sich auf der Festplatte, die Adressen (Telefonnummern) sind jedoch im BIOS registriert, aber schließlich werden so viele Mitarbeiter eingestellt und gefeuert, die Liste wird unübersichtlich und Sie müssen Ihre Liste bereinigen. Vishukani vor 6 Jahren 0
Hier gibt es immer noch Widerspruch. Sie verweigern also nicht, dass `bcdedit` die Daten in der Datei \ EFI \ Microsoft \ Boot \ BCD` auf der EFI-Partition bearbeitet und speichert. Wie würde dann das Löschen von Einträgen in einer Datei auf der EFI-Partition helfen, Speicherplatz im BIOS zu löschen? Poma vor 6 Jahren 0
@Poma - Du verstehst, Vishukani trollt, an diesem Punkt richtig? Ramhound vor 6 Jahren 0
Sieht aus, als habe ich das, was Sie im Technet-Artikel zu sagen versuchen. Offensichtlich führt bcdedit auf einigen Systemen anscheinend eine 2-Wege-Synchronisation zwischen Einträgen in der BCD-Datei auf der EFI-Partition und Einträgen im BIOS durch, so dass die Reinigung in EFI auch den Platz im BIOS löscht. Ist das richtig? Wenn dies der Fall ist, erklärt dies nicht mein Problem - warum bcdedit keine Datensätze im Systemspeicher auflisten kann Poma vor 6 Jahren 0