很多使用者會在同一台電腦上安裝 Windows 和 Linux,這種配置稱為 Dual Boot。 這種方式很方便,但在更新、分割區調整或 bootloader 出問題之後,系統就有可能無法正常啟動。
有時候電腦會直接進入 Windows,有時會卡在 GRUB,還有時候 Windows 和 Linux 都無法進入。 下面整理了最常見的原因與修復方式。
1. 先確認具體症狀
- 電腦直接進入 Windows
- GRUB 選單有出現,但 Linux 無法啟動
- GRUB 選單有出現,但 Windows 無法啟動
- 只顯示
grub rescue - 出現
no bootable device或類似錯誤 - 黑畫面或卡在廠商 Logo 畫面
2. 最常見的原因
- Windows 更新改變了開機順序
- GRUB 損壞或被覆蓋
- EFI 分割區出現問題
- BIOS/UEFI 啟動順序被改動
- Fast Startup 讓分割區狀態異常
- 調整分割區後,啟動資訊不再對應
- Windows Boot Manager 或 Linux 設定損壞
3. 先檢查 BIOS/UEFI 的啟動順序
如果電腦總是直接進入 Windows,第一步就是檢查啟動順序。 Windows 大更新之後,Windows Boot Manager 常常會重新回到第一順位。
- 重新啟動電腦
- 開機時按 F2、Del、Esc 或 F12 進入 BIOS/UEFI
- 找到 Boot 設定
- 確認第一啟動項是什麼
4. 如果只能進入 Windows
這不一定表示 Linux 被刪除了。 很多時候只是 GRUB 沒有被優先呼叫而已。
- 確認 Linux 分割區是否還存在
- 確認 BIOS/UEFI 中是否還有 Linux 啟動項
- 確認啟動模式是否仍然是 UEFI
5. 使用 Live USB 修復 GRUB
sudo fdisk -l
假設 Linux 根分割區是 /dev/sda3,EFI 分割區是 /dev/sda1:
sudo mount /dev/sda3 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
sudo grub-install --boot-directory=/mnt/boot /dev/sda
sudo update-grub
如果一般方式沒有效果,也可以用 chroot 修復:
sudo mount /dev/sda3 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
update-grub
exit
6. 如果 Windows 無法啟動
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
修復 Windows 之後,有時 GRUB 也需要重新修復。
7. 注意 Fast Startup 與 UEFI/Legacy 模式
- 請先關閉 Windows 的 Fast Startup
- Windows 和 Linux 盡量都使用 UEFI
- 或都使用 Legacy BIOS
如果一個是 UEFI、另一個是 Legacy,雙系統很容易發生啟動異常。
8. 總結
Dual Boot 無法開機時,通常不代表整個系統都消失了。 更常見的是啟動順序、GRUB、EFI 分割區,或 Windows 更新造成的引導異常。
- 先檢查 BIOS/UEFI 的啟動順序
- 確認 Windows 與 Linux 分割區是否還在
- 使用 Live USB 修復 GRUB
- 必要時再修復 Windows Boot Manager