2

Похоже, моя 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 bootloader, который, вероятно, загружает bootmgfw.efi

3 ответа3

1

Похоже, OS X делает некоторые изменения, которые несовместимы и ломают bcdedit. Вот как мне удалось временно решить эту проблему: сбросьте NVRAM с помощью +Alt+P+R, затем загрузитесь непосредственно в раздел Windows, удерживая Alt. Я смог установить обновления Windows, но после загрузки в OS X и установки обновлений bcdedit снова сломался.

0

Одна из ситуаций, при которой система будет загружаться, но 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 должна работать.

-2

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) загроможден, и вы не сможете сбросить его без перепрошивки / замены.
Это означает, что текущие указатели Bootloader на чипе являются окончательными, и если вы попытаетесь переустановить другую ОС в режиме EFI, она просто не завершит установку, а установщик будет прерван с ошибкой (семейство ОС Windows) или завершит работу, но BIOS не будет загрузите его (установщики Linux, например, openSUSE), более того, вы потеряете свой старый конфиг, у вас не будет загрузки ОС на вашем устройстве.
- Учитывая, что у вас Mac, попросите техподдержку перепрошить / заменить BIOS.
если это не так или не осуществимо; замените переключатель жесткого диска на прежний режим BIOS (если этот переключатель в BIOS все еще работает, для меня он просто не работает (Lenovo Ideapad B50)

кроме этих, есть и другие варианты, которые следует исключить следующим образом: так как они предлагаются, как если бы они были безопасными советами в некоторых видео на Youtube на эту тему, так что я просто упоминаю их, чтобы не пытаться, потому что они опасны и / или аннулирует гарантию на устройство (удаление батареи ноутбука + разборка устройства для выставления материнской платы, затем удаление батареи биоса + ожидание (ожидание) сброса биоса или короткое замыкание (короткое замыкание) микросхемы SPI); особенно метод удаления батареи bios никогда не работает на большинстве (если не на всех) ноутбуках, в то время как короткое замыкание SPI-чипа может привести к поломке даже всей системы.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .