megrxu

Windows 啟動修復

Apr 18, 2022  「DevOps」  

為了體驗新 WSL2 的 GUI ,後來一直是慢圈Slow Ring使用者,所以更新 Windows 的時候它把自己更死了,我也怪不得別人。只記得一覺醒來的時候,就發現自己的電腦啟動不了了。

首先嚐試了自帶的啟動修復,真的是毫無用處,即便是去網路上檢索相應的錯誤程式碼,也沒找到什麼有用的資訊。同時,由於我開啟了 BitLocker,每次修復還需要輸入一大串金鑰才可以使用這個功能,因此試了兩次都無效之後就放棄了。

初步懷疑是現在 Windows 的啟動修復已經找不到對應的檔案造成的修復失敗,遂跟同學要了 Windows 10 的啟動盤,發現依然如故:啟動盤裡的啟動修復仍然是無法正常工作的(可見自動程式的不可靠性)。

接著透過大量的網路檢索,看到有些帖子使用了 Windows 命令列中的 bcdboot 命令進行修復。於是開始嘗試使用這個方法來手動修復。步驟大概如下:

  1. 進入到啟動介面的命令列部分。這個步驟如果磁碟是 BitLocker 加密的話,需要去找到金鑰手動輸入一下,然後才能正常使用。一般來說解鎖 Windows 系統所在的磁碟(C:/)就可以了。
  2. 使用 diskpart 來掛載 ESP 分割槽,並分配磁碟符。
    1. list disk 並且 select disk ? 選擇所選的磁碟。
    2. list partition 並且 select partition 選擇 ESP 恢復分割槽。
    3. assign letter=F 分配磁碟符。
  3. 然後使用如下命令:
    1
    2
    
    bcdboot C:\Windows /s F: /f uefi /l zh-cn
    # /s F: 表示 ESP 分割槽掛載的地方
    
  4. 顯示成功重建了啟動檔案。

按照以上步驟操作後,重新啟動,就看到熟悉的 Windows 介面了。 十分驚訝的是就這麼一條簡單的命令就解決了這個問題,而所謂的「自動修復」工具甚至給不到任何有用的資訊。 去看了 bcdboot 的使用說明:「bcdboot.exe 命令列工具用於將關鍵啟動檔案複製到系統分割槽以及建立新的系統 BCD 儲存」。所以實際上差不多隻是複製了一點檔案咯?


後續其實還有點小插曲,我決定再給 Windows 更新一次機會,然後它仍然把自己的啟動弄壞了。接著,我猜想即使不用啟動盤,剛剛的方法也是有效的,進入命令列試了下果然如此