使用 Bitlocker 全磁碟機加密對 Windows 啟動時出現的錯誤 0xc000000e 進行故障排除

使用 Bitlocker 全磁碟機加密對 Windows 啟動時出現的錯誤 0xc000000e 進行故障排除

筆記:本來以為是BCD的問題,結果錯了。


我最初的筆記型電腦設定如下:

  • 具有 OS X 10.10 和本機全磁碟機加密 (FileVault) 的 300 GB 分割區。
  • 具有 Windows 10 和本機全磁碟機加密 (BitLocker) 的 200 GB 分割區。
  • 安裝在 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,而且我現在還能夠從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

我嘗試在解密驅動器之前和之後進行設置deviceosdevice結果W:相同。
設定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%。

相關內容