使用 Bitlocker 完整驱动器加密对 Windows 启动时的错误 0xc000000e 进行故障排除

使用 Bitlocker 完整驱动器加密对 Windows 启动时的错误 0xc000000e 进行故障排除

笔记:我原本以为BCD是问题所在,但结果却是错误的。


我最初的笔记本电脑设置如下:

  • 一个 300 GB 的分区,带有 OS X 10.10 和本机全驱动器加密(FileVault)。
  • 一个 200 GB 的分区,带有 Windows 10 和本机全驱动器加密(BitLocker)。
  • 在 ESP 上安装的 rEFInd 启动管理器/EFI/boot
  • 在 ESP 上安装的 Microsoft 启动管理器/EFI/Microsoft/Boot

两天前,我将 OS X 分区缩小到 200GB,并在中间添加了一个 100GB 的分区,并在其中安装了 Ubuntu。
从那时起,我就无法启动 Windows。
进入 Windows 启动管理器时,系统仍会提示我输入密码,但之后,屏幕上会显示

您的电脑/设备需要维修

发生意外的错误。

错误代码:0xc000000e

然后,我插入了 Windows 10 安装驱动器,并从命令行 ( ShiftF10) 检查了分区。
diskpart事实证明无法安装该分区,因为它显然在 MBR 上运行。
(我确保以 EFI 模式启动了安装驱动器(通过 rEFInd 中的手动启动节),因此我希望diskpart在 GPT 上运行,但是哦,好吧......)

MBR 最初包含四个分区:

  • ESP
  • 麦金塔高清
  • 高清恢复
  • 新兵训练营

GPT 在 BOOTCAMP 之后还包含一个 BitLocker 恢复分区。
结果发现,添加 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和,结果相同。 设置也没有任何区别。现在,我很确定这是退步,因为它甚至不再要求我输入密码。osdeviceW:
device{bootmgr}

我还注意到,即使运行 也会bcdedit /store BCD对文件进行大量更改,因为实际上没有数据更改。
除其他事项外,该文件显然会包含自己的路径,既有Volume1\EFI\Microsoft\Boot\BCD原始 BCD 文件的路径,也??\C:\BCD有我修改过的文件的路径。
起初我担心这会以某种方式“污染”文件,但我进行了测试,将 更改为description,这再次导致文件发生大量更改,但 Windows 启动管理器在使用该文件时仍要求我输入密码,因此自定义文件位置不会“污染”文件,我使用的 也不会损坏。{default}Windows 42bcdedit

现在,最后我的问题来了:

我该如何修复我的 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

带有原始 BCD 的 Windows 启动管理器:

要求输入密码

输入我的密码后,带有原始 BCD 的 Windows 启动管理器:

错误 0xc000000e

修改了 BCD 的 Windows 启动管理器:

错误 0xc0000225

更新 1:

我尝试在 MBR 中将 BOOTCAMP 标记为“可启动”,但没有任何变化。

答案1

BCD 实际上是没有问题的,是 MBR 导致了所有的麻烦。

我已经解密了我的驱动器[1]并试图重新安装 Windows,但在选择驱动器时弹出一个窗口,上面写着“此硬盘使用 MBR,但基于 EFI 的系统只能安装在 GPT 驱动器上”。
因此,显然在 Windows 上,MBR 优先于 GPT。

我继续用“保护性” MBR 替换我的 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:,首先从安装驱动器命令行将其解锁,然后运行manage-bde -off W:,不时使用检查进度manage-bde -status W:,并在加密达到 0% 后重新启动。

相关内容