問題現象
擁有 Vista Enterprise/Ultimate 與 Linux 雙系統、且 Linux 開機載入程式(GRUB/LILO)安裝於 MBR 的使用者,升級 Vista SP1 (KB935509) 後將導致開機失敗,SP1 安裝中止。
根本原因
- SP1 更新了開機載入程式以支援 BitLocker 磁碟加密 的「信任開機」驗證流程:TPM 晶片 → MBR → 作業系統載入器。
- Linux 開機載入程式取代了 Microsoft 原版載入程式,導致信任鏈驗證失敗,BitLocker 拒絕存取加密分區。
- 即使未啟用 BitLocker,只要系統安裝了 BitLocker 元件(Enterprise/Ultimate 預設安裝),升級即會檢查信任鏈完整性。
微軟官方解釋
「BitLocker 不僅關乎加密,更關乎資料完整性。若發現開機載入程式不匹配,將拒絕存取。安裝 LILO/GRUB 會破壞原有信任體系。」—— Michael Kleef,微軟技術顧問
解決方案
情境 A:雙系統安裝於同一顆實體硬碟
- 使用 Vista 安裝光碟/USB 進入修復環境(Shift+F10 開啟命令提示字元)。
- 執行
bootrec /fixmbr 重寫 Microsoft 標準 MBR。
- 執行
bootrec /fixboot 修復開機磁區。
- 重新開機確認 Vista 正常啟動,再執行 SP1 升級。
- 升級完成後,若需恢復 Linux 開機選單,可使用 Live CD 重新安裝 GRUB 至 Linux 根分區(非 MBR),再透過 Vista 的
bcdedit 或 EasyBCD 新增 Linux 開機項目。
情境 B:雙系統安裝於不同實體硬碟
較簡單:進入 BIOS 調整開機優先順序,優先從 Vista 所在硬碟啟動,即可繞過 MBR 衝突完成 SP1 升級。
預防建議
- 雙系統建議安裝於不同實體硬碟。
- Linux 開機載入程式安裝至根分區(Partition Boot Sector),而非 MBR,配合 Vista BCD 引導。
- 升級 SP1 前務必備份重要資料與 MBR(
dd if=/dev/sda of=mbr.backup bs=512 count=1)。
影響範圍
僅限 Vista Enterprise 與 Ultimate 版本(預設安裝 BitLocker 元件),Home Basic/Premium/Business 不受影響。