2022年6月5日 星期日

修復 Windows 10 的開機磁區

因為我要幫家人升級電腦,這次升級會連系統碟都換成 SSD,所以需要把舊硬碟裡的資料一起搬移到新的 SSD 上。本來我想說應該只需要把 C 槽裡的資料備份起來就好,就找了個備份軟體 Macrium Reflect [1] 來做硬碟備份,然後把映像檔放進隨身碟裡以後帶回我家,開始裝主機跟用映像檔還原系統碟出來。

不過實際要執行還原時,發現一個問題是我沒有備份開機磁區出來...。於是那時想了個方法是,先安裝一個全新的 Windows 10,這樣安裝過程就會重新切割硬碟,並且切出應該要有的開機磁區等等的。畢竟我也不太清楚裡面裝了什麼,讓 Windows 10 安裝程式幫忙弄應該比較安全。等到裝好以後,我再用 Macrium Reflect 把映像檔裡的資料蓋到 C 槽上!完美!

結果幻想很美好、現實很殘酷,實際蓋上去以後,發生了 Windows 根本開不了機的問題。事後看起來應該是因為開機磁區(這裡用的是 GPT,因為我想用 UEFI 開機)裡的設定是用 UUID 在辨識系統碟的,所以應該是遇到開機磁區上寫的 UUID 跟實際 C 槽的 UUID 不同的關係,畢竟我把映像檔的資料蓋到 C 槽裡了。於是就進入了研究如何修復開機磁區的過程。

其實我也沒有搞很懂步驟到底在幹麻 XD。不過簡要來說,就是在啟動修復的畫面裡打開命令提示字元,然後把隱藏的開機磁區掛載上去,這樣我們才能夠存取裡面的檔案。接著執行 bootrec /fixboot 來修復 [2]。但我記得我的這個步驟好像是失敗了就是,會遇到 access denied 的問題,然後我好像沒有成功解決它。

最後我實際有做成功的,應該是把開機磁區掛載到 V: 後,執行 bcdboot C:\windows /s V: /f UEFI 這個指令 [3],這應該是在開機程序裡新增一個開機碟吧。所以我再重開機時,Windows 會跑出有兩個 Windows 要我選擇。接著在 Windows 裡再用 msconfig [4] 把非現在使用的開機系統移除就好了。

參考資料

  1. Macrium Reflect
  2. How to Fix Startup Repair in Windows 10 | System Reserved
  3. windows10 Bootrec /Fixboot 存取被拒(Access Is Denied) 
  4. Delete Boot Menu Entry in Windows 10