先介绍一下电脑的基本情况:原本安装了 Fedora 26 和 Windows 10 双系统,通过 UEFI 启动,并使用 GRUB 来引导。然后,我就开始作死了本想将 Fedora 26 升级成 Fedora 27,结果不仅升级失败了,内核还坏掉了…… 于是就非常暴力地重装了 Fedora 27。结果装完一启动,发现 Windows 10 又不见了…… 后来想了想,应该是在分盘的时候我把原本的 EFI 系统分区删了,结果新的 EFI 分区里没有 Windows 的记录的原因。于是就开始了漫长的修复过程。
首先我们要知道是 EFI 下的 Microsoft 记录缺失导致的启动失败,这个过程可以从 Fedora 里面去找 /boot/efi/ 路径,查看是否存在 Microsoft 文件夹。如果的确缺失的话,就需要重做安装盘 / PE 盘来提供一个 Windows 环境了。
开机时进入 BIOS ,使用 Win10 安装盘启动。进入界面后按 Shift + F10 进入命令提示符,输入 diskpart 运行磁盘程序。
将原 Windows 的系统盘挂为 C:/,将目标 EFI 分区挂为 Q:/。其实也无所谓,最后在 bcdboot 写对位置也行
diskpart 常用命令:
- list disk 查看磁盘列表
- select disk [num] 选择磁盘
- list partition 查看选定的磁盘分区
- select partition [num] 选择分区
- assign letter = [letter] 挂载选定的分区到目标字母下
- remove letter = [letter] 从目标字母下卸载分区
分配好盘符后,输入 exit 退出 diskpart 程序。
复制 Windows 10 的 EFI 分区文件到目标 EFI 分区:
bcdboot c:\windows /s q: /f uefi /l zh-cn
重启,就可以在 UEFI 启动项中找到 Windows Boot Manager 了。
找到 Windows 10 的 EFI 的引导后,我希望通过 Fedora 来引导 Windows 10,这时候,就需要更新 Grub 了:
$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
要确保你使用 EFI 模式启动,否则是 /boot/grub2/grub.cfg 文件。 若需要更多的 Grub 使用信息,请参照 GRUB 2 - Fedora Project Wiki。
重启计算机后,就能够通过 Grub 来引导系统啦 :)