Устранение ошибок 0xc000000e при загрузке Windows с полным шифрованием диска Bitlocker
Примечание: я изначально думал, что проблема в BCD, что оказалось не так.
Первоначально мой ноутбук был настроен следующим образом:
- Раздел объемом 300 ГБ с OS X 10.10 и встроенным шифрованием полного диска (FileVault).
- Раздел объемом 200 ГБ с Windows 10 и встроенным шифрованием полного диска (BitLocker).
- REFInd менеджер загрузки установлен на ESP в
/EFI/boot
, - Менеджер загрузки Microsoft, установленный на ESP в
/EFI/Microsoft/Boot
,
Два дня назад я сократил раздел OS X до 200 ГБ и добавил раздел 100 ГБ, на котором я установил Ubuntu.
С тех пор я не могу загрузить Windows.
При входе в диспетчер загрузки Windows мне все равно предлагается пароль, но после этого я получаю экран с надписью
Ваш ПК / Устройство нуждается в ремонте
Произошла непредвиденная ошибка.
Код ошибки: 0xc000000e
Затем я вставил установочный диск Windows 10 и начал проверять раздел из командной строки (Shift F10).
Но diskpart
оказалось не в состоянии смонтировать раздел, потому что он, очевидно, работает на MBR.
(Я удостоверился, что загрузил установочный диск в режиме EFI (через раздел загрузки вручную в rEFInd), и поэтому я ожидал diskpart
оперировать на GPT, ну да ладно...)
Изначально MBR содержит четыре раздела:
- ESP
- Macintosh HD
- Восстановление HD
- УЧЕБНЫЙ ЛАГЕРЬ
GPT дополнительно содержал раздел восстановления BitLocker после BOOTCAMP.
Оказалось, что добавление раздела Linux изменило, вытолкнуло BOOTCAMP из списка и сделало "Linux HD" четвертым разделом.
Я просто настроил MBR, чтобы снова иметь последнюю точку входа в BOOTCAMP, таким образом "пропуская" раздел Linux.
После этого я все еще мог загружать OS X и Ubuntu, и теперь я мог также смонтировать раздел Windows из diskpart
,
И мне удалось разблокировать раздел с
manage-bde -unlock W: -Password
доказывая, что 1) я не испортил MBR, и 2) раздел все еще не поврежден.
В свете этого я почти уверен, что проблема заключается в BCR.
По причинам, которые до сих пор неясны для меня, я не могу смонтировать ESP с установочного диска - попытка назначить букву диска первому разделу диска 0 говорит мне, что "Том не указан", но list volume
только перечисляет все, что уже установлено. bootrec /rebuildbcd
также ужасно терпит неудачу, удаляя файл BCD с установочного диска.
Однако я могу просто скопировать BCD на установочный диск и использовать bcdedit
в теме.
bcedit /store BCD
печатает:
Windows Boot Manager
--------------------
identifier {bootmgr}
device unknown
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {default}
resumeobject {cc3e7046-4857-11e5-a015-f353893f9a4c}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {default}
device unknown
path \Windows\system32\winload.efi
description Windows 10
locale en-US
inherit {bootloadersettings}
recoveryenabled No
custom:16000060 Yes
custom:17000077 352321653
osdevice unknown
systemroot \Windows
resumeobject {cc3e7046-4857-11e5-a015-f353893f9a4c}
nx OptIn
custom:250000c2 1
Теперь эти unknown
не выглядело так хорошо для меня, поэтому я изменил их на partition=W:
с помощью
bcdedit /store BCD /set {default} device partition=W:
bcdedit /store BCD /set {default} osdevice partition=W:
И я проверил результат:
Windows Boot Manager
--------------------
identifier {bootmgr}
device unknown
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {default}
resumeobject {cc3e7046-4857-11e5-a015-f353893f9a4c}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {default}
device partition=W:
path \Windows\system32\winload.efi
description Windows 10
locale en-US
inherit {bootloadersettings}
recoveryenabled No
custom:16000060 Yes
custom:17000077 352321653
osdevice partition=W:
systemroot \Windows
resumeobject {cc3e7046-4857-11e5-a015-f353893f9a4c}
nx OptIn
custom:250000c2 1
Но после помещения этого BCD-файла обратно на мой ESP, менеджер загрузки Windows даже не запрашивает у меня пароль, а вместо этого сразу отображает другую ошибку, говоря:
Ваш ПК / Устройство нуждается в ремонте.
Не удалось загрузить приложение или операционную систему, поскольку требуемый файл отсутствует или содержит ошибки.
Файл: \Windows\system32\winload.efi Код ошибки: 0xc0000225
Я пробовал настройку device
а также osdevice
до и после расшифровки W:
диск, с тем же результатом.
настройка device
за {bootmgr}
также не имеет значения. Теперь я почти уверен, что это был шаг назад, потому что он даже не запрашивает мой пароль.
Я также заметил, что даже работает bcdedit /store BCD
внесено довольно много изменений в файл, учитывая тот факт, что не было никаких изменений данных.
Среди прочего, файл, очевидно, будет содержать свой собственный путь, будучи Volume1\EFI\Microsoft\Boot\BCD
для исходного файла BCD, и ??\C:\BCD
для моего измененного файла.
Сначала я волновался, что это каким-то образом "испортит" файл, но я запустил тест, меняя description
из {default}
в Windows 42
, что, опять же, вызвало довольно много изменений в файле, но менеджер загрузки Windows по-прежнему запрашивал у меня пароль при использовании этого файла, поэтому ни пользовательское расположение файла не "загрязняет" файл, ни bcdedit
Я пользуюсь битым.
Теперь наконец мой вопрос:
Как я могу восстановить мой BCD?
Или, если это не проблема, тогда что и как я могу это исправить?
Дополнительная информация:
diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_CoreStorage 200.4 GB disk0s2
3: Apple_Boot Recovery HD 650.1 MB disk0s3
4: Microsoft Basic Data 99.0 GB disk0s4
5: Microsoft Basic Data 199.7 GB disk0s5
6: DE94BBA4-06D1-4D40-A16A-BFD50179D6AC 363.9 MB disk0s6
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: Apple_HFS Macintosh HD *200.0 GB disk1
Logical Volume on disk0s2
4A45027B-2703-4C7D-816E-3419DE0F0F61
Unlocked Encrypted
sudo gpt show -l /dev/disk0
gpt show: /dev/disk0: Suspicious MBR at sector 0
start size index contents
0 1 MBR
1 1 Pri GPT header
2 32 Pri GPT table
34 6
40 409600 1 GPT part - "EFI System Partition"
409640 391334208 2 GPT part - "Customer"
391743848 1269760 3 GPT part - "Recovery HD"
393013608 1688
393015296 193355776 4 GPT part - "Linux HD"
586371072 2048
586373120 390019148 5 GPT part - "BOOTCAMP"
976392268 1972
976394240 710656 6 GPT part - ""
977104896 131
977105027 32 Sec GPT table
977105059 1 Sec GPT header
sudo fdisk /dev/disk0
Disk: /dev/disk0 geometry: 60821/255/63 [977105060 sectors]
Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
1: EE 0 0 2 - 1023 254 63 [ 1 - 409639] <Unknown ID>
*2: DA 1023 254 63 - 1023 254 63 [ 409640 - 391334208] <Unknown ID>
3: AF 1023 254 63 - 1023 254 63 [ 391743848 - 1269760] HFS+
4: 07 1023 254 63 - 1023 254 63 [ 586373120 - 390019148] HPFS/QNX/AUX
Менеджер загрузки Windows с оригинальной BCD:
Менеджер загрузки Windows с оригинальной BCD после ввода моего пароля:
Диспетчер загрузки Windows с измененным BCD:
Обновление 1:
Я попытался пометить BOOTCAMP как "загрузочный" в MBR, без каких-либо изменений.
1 ответ
BCD на самом деле был в порядке, именно MBR вызывал все проблемы.
Я уже расшифровал свой диск[1] и пытался переустановить Windows, но при выборе диска у меня появилось всплывающее окно: "Этот жесткий диск использует MBR, но системы на основе EFI могут быть установлены только на GPT-диски".
Очевидно, что в Windows MBR имеет преимущество перед GPT.
Я пошел дальше и заменил мой MBR на "защитный", используя
sudo gdisk /dev/disk0 # On Linux, use /dev/sda
r # Recovery/transformation
x # Expert mode
n # New protective MBR
w # Write changes to disk
y # Yes (confirm)
(В Linux gdisk
должен быть установлен по умолчанию (в противном случае попробуйте sudo apt-get install gdisk
), на Mac вы можете получить его отсюда.)
Это наконец решило мою проблему.
[1] Кажется, что на самом деле это не нужно, но для записи: предполагается, что ваш зашифрованный диск помечен W:
, сначала разблокируйте его из командной строки install drive, затем запустите manage-bde -off W:
, проверьте прогресс время от времени с manage-bde -status W:
и перезагрузите компьютер, когда шифрование достигнет 0%.