bcdedit.exe отказывается открывать системный магазин
Похоже, моя BCD как-то сломана, но я не могу понять, что не так. Система загружается просто отлично, но она не позволяет Windows устанавливать обновления:
MoSetupPlatform: Opening BCD store...
CDlpActionDiskSpaceReq::CalculateRequiredDiskSpaceInstallReq(1752): Result = 0x8007001F
Я запускаю Windows 10 на MacBook (bootcamp), он использует таблицу разделов EFI. Когда я бегу bcdedit /enum
в приподнятом стремлении я получаю
The boot configuration data store could not be opened.
A device attached to the system is not functioning.
Когда я пытаюсь открыть магазин напрямую, он открывается просто отлично:
B:\>bcdedit.exe /store B:\EFI\Microsoft\Boot\BCD /enum
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=B:
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {default}
resumeobject {8b3fea76-03c8-11e6-8f47-dc08058a457d}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {default}
device partition=C:
path \WINDOWS\system32\winload.efi
description Windows 10
locale en-US
inherit {bootloadersettings}
recoverysequence {8b3fea78-03c8-11e6-8f47-dc08058a457d}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {8b3fea76-03c8-11e6-8f47-dc08058a457d}
nx OptIn
bootmenupolicy Standard
Windows хранит фактический BCD где-нибудь еще? Как Windows узнает, на каком разделе и пути искать системное хранилище BCD?
Как мне диагностировать, что не так с моим магазином BCD?
обновление: забыл, что я загружаюсь с помощью refind
загрузчик, который, вероятно, загружается bootmgfw.efi
4 ответа
Одна ситуация, в которой система будет загружаться, но bcdedit /enum
потерпит неудачу, если загрузочный раздел EFI имеет неправильный тип раздела. Как примечание стороны, это может также вызвать reagentc /enable
не удается и может дополнительно помешать успешной установке обновлений Windows.
Вы можете проверить, является ли это вашей проблемой с diskpart
команда. Если у вас есть только один жесткий диск,
select disk 0
list partition
Вы должны увидеть что-то вроде этого:
Partition ### Type Size Offset
------------- ---------------- ------- -------
Partition 1 System 500 MB 1024 KB
Partition 2 Primary 445 GB 501 MB
(Может быть или не быть третьего раздела "Восстановление".)
Меньший раздел с именем "System" - это тот, который вам нужен, обычно это раздел 1, поэтому
select partition 1
detail partition
И вы должны увидеть что-то вроде этого
Partition 1
Type : c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Hidden : Yes
Required: No
Attrib : 0XC000000000000000
Offset in Bytes: 1048576
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
* Volume 3 FAT32 Partition 500 MB Healthy System
Если файловая система не FAT32, то вы не смотрите на правильный раздел. Он также должен быть скрытым, и обычно ему не назначается буква диска, если (как в первоначально опубликованном вопросе) он не был явно указан в целях устранения неполадок. Это может быть не совсем 500 МБ, но должно занимать лишь небольшую часть жесткого диска.
Тип раздела EFI должен быть c12a7328-f81f-11d2-ba4b-00a0c93ec93b
как показано выше. Если это не так, и в частности, если это ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
(см. раздел "Основные данные Microsoft" в Википедии), вероятно, это является причиной проблемы.
Если тип раздела неправильный, вы можете исправить это с помощью set id
команда,
set id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
bcdedit /enum
команда должна тогда работать.
Похоже, OS X делает некоторые изменения, которые несовместимы и ломают bcdedit. Вот как я смог временно решить эту проблему: сбросьте NVRAM с помощью ⌘ + Alt + P + R , затем загрузитесь непосредственно в раздел Windows, удерживая Alt . Мне удалось установить обновления Windows, но после загрузки в OS X и установки обновлений bcdedit снова сломался.
Та же проблема после перехода на новый SSD (загрузка через efi-раздел \efi\microsoft\boot\bcd для win10)
bcdedit /enum не может открыть системное хранилище (BCD), ошибка:
Невозможно открыть хранилище данных конфигурации загрузки. Запрошенное системное устройство не найдено.
(немецкий: Der Speicher für die Startkonfigurationsdaten konnte nicht geöffnet werden. Das angeforderte Systemgerät kann nicht gefunden werden.)
ПРОБЛЕМА:
тип раздела efi-раздела неправильный
(часто msftdata, идентификатор раздела=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7)
должен быть esp (начальный раздел efi, идентификатор раздела =c12a7328-f81f-11d2-ba4b-00a0c93ec93b)
дополнительные симптомы:
Гибернация не работает.
BCD не загружен в реестр (HKEY_LOCAL_MACHINE\BCD00000000), не в список кустов (HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\hivelist).
ПРОСТОЕ РЕШЕНИЕ:
откройте cmd > diskpart > выберите efi-раздел (fat32, в моем случае 360 МБ)
установите id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b (начальный раздел efi), выйдите из diskpart
после этого Windows распознает стартовый раздел efi и загружает BCD в реестр, BCD появляется в списке ульев, bcdedit /enum работает, спящий режим работает
аналогичное решение под Linux:
измените флаг раздела с помощью gparted с msftdata на загрузку, esp
A Хранит ли Windows настоящий BCD где-то еще? Как Windows узнает, на каком разделе и пути искать системное хранилище BCD?
Режим EFI работает с двумя ногами;
1- специальный раздел BIOS (в области записи на чипе), в котором сохраняются GUID раздела загрузчика ОС.
2- системный (скрытый) раздел с этим GUID с именем EFI, в котором находится исполняемый файл Bootloader (файлы расширений.efi).
Если вы установили / переустановили несколько ОС в режиме EFI, то есть вероятность, что микросхема BIOS SPI загромождена множеством записей старых ОС и в конечном итоге заняла место на этих специальных 8 МБ (если я не ошибаюсь) на раздел микросхемы и стал доступен только для чтения.
У Microsoft есть страница Technet, на которой показано, как очистить дубликаты EFI или ненужные записи guid (например, ОС удалена, но запись EFI все еще там).
Это включает в себя создание резервной копии текущей конфигурации, а затем ее сброс без дублирования записей.
на повышенном приглашении cmd;
Bcdedit /export savebcd
это создаст резервную копию текущих конфигураций загрузчика.
сделайте его копию в целях восстановления (savebcd будет нашей резервной копией);
Copy savebcd newbcd
Затем экспортируйте текущие записи в текстовый файл в удобочитаемом формате;
Bcdedit /enum firmware > enumfw.txt
notepad enumfw.txt
Загрузите этот файл с помощью блокнота и просмотрите его, чтобы указать дубликаты записей.
удалить каждую дубликат / устаревшую запись:
Bcdedit /store newbcd /delete {93cee840-f524-11db-af62-aa767141e6b3}
где 93cee840-f524-11db-af62-aa767141e6b3 - просто пример
замените его на гид, который вы считаете ненужным
как только вы удалили все ненужные руководства;
Bcdedit /import newbcd /clean
Очищает текущие записи EFI и импортирует очищенные (файл, из которого мы только что удалили ненужные записи) данные конфигурации.
Если вы по-прежнему получаете сообщение "Устройство, подключенное к системе, не работает". ошибка,
Затем; Я не хочу быть доносчиком плохих новостей, но у вас есть два пути, по которым нужно следовать;
- придерживайтесь своей текущей системы; Создайте ВЕСЬ резервную копию образа диска (включая раздел EFI) КАК МОЖНО СКОРЕЕ, потому что, скорее всего, ваш чип SPI (BIOS) загроможден, и вы не сможете сбросить его без перепрошивки / замены.
Это означает, что текущие указатели загрузчика на чипе являются окончательными, и если вы попытаетесь переустановить другую ОС в режиме EFI, она просто не завершит установку, а установщик будет прерван с ошибкой (семейство ОС Windows) или завершит работу, но BIOS не сможет загрузите его (установщики Linux, например, openSUSE), более того, вы потеряете свой старый конфиг, у вас не будет загрузки ОС на вашем устройстве.
- Учитывая, что у вас Mac, попросите техподдержку перепрошить / заменить BIOS.
если это не так или не осуществимо; замените переключатель жесткого диска на прежний режим BIOS (если этот переключатель в BIOS все еще работает, для меня он просто не работает (Lenovo Ideapad B50)
кроме этих, есть и другие варианты, которые следует исключить следующим образом: так как они предлагаются, как если бы они были безопасными советами в некоторых видео на Youtube на эту тему, так что я просто упоминаю их, чтобы не пытаться, потому что они опасны и / или аннулирует гарантию на устройство (удаление батареи ноутбука + разборка устройства для выставления материнской платы, затем удаление батареи bios + ожидание (ожидание) сброса BIOS или короткое замыкание (короткое замыкание) SPI-чипа); особенно метод удаления батареи bios никогда не работает на большинстве (если не на всех) ноутбуках, в то время как короткое замыкание SPI-чипа может привести к поломке даже всей системы.
Надеюсь, что это помогло.