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:

https://www.tenforums.com/general-support/187123-bcdedit-command-not-working-since-i-rebuilt-bcd.html

измените флаг раздела с помощью 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-чипа может привести к поломке даже всей системы.

Надеюсь, что это помогло.

Другие вопросы по тегам