再次修复,双系统找回 Windows 启动引导

不得不感叹一下,双系统下不能轻易升级更新啊 T_T !继上次更新win10 1709导致引导问题之后《修复GRUB:win10 1709 秋季创意者更新导致Linux双系统无法引导》今天又出现了因为更新 Linux 内核导致了GRUB 引导选择中的 Windows 启动项消失不见了…
哎~开始折腾吧。

一条命令修复启动项

我的硬盘分区是 gpt 分区,包括 win10 1709 秋季更新版和 Manjaro Linux 系统。
其实就修复之后的情况来看,造成启动项丢失主要是 GRUB 的启动配置文件发生的变动,而解决办法很简单重新生成配置文件就好了,命令如下:

sudo grub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg

# 或者下面这条命令,具体根据grub.cfg文件的位置来确定就好
sudo grub-mkconfig -o /boot/grub/grub.cfg

一般情况下系统会自动找到之前的 Windows 分区,然后全部重新创建启动项。

手动创建 Windows 启动项

博主我开始不知道一条命令就好,所以还尝试手动编辑了 Windows 启动配置信息,详情记录如下

1. 编辑 Windows 启动配置文件
/etc/grub.d/40_custom 增加下面的内容 (注意不要删除 exec tail 行的内容)

menuentry "启动 Windows 10" {
    echo "正在启动 Windows 10..."
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 913B-D0CD
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

其中 --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2913B-D0CD 需要根据本地具体情况获取。方法如下
获取uuid

sudo grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# bootmgfw.efi 的路径根据具体情况填写,获得uuid:
913B-D0CD

获取hint-string

sudo grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# 路径同上,得到的信息如下:
--hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2

2. 重新生成配置文件

sudo grub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg

# 或者下面这条命令,具体根据grub.cfg文件的位置来确定就好
sudo grub-mkconfig -o /boot/grub/grub.cfg

全文完,参考资料:
https://wiki.archlinux.org/index.php/GRUB_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

你可能感兴趣的:(Linux,教程)