本文转自:http://blog.csdn.net/aaazz47/article/details/78643355
不得不感叹一下,双系统下不能轻易升级更新啊 TT !继上次更新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
- 1
- 2
- 3
- 4
一般情况下系统会自动找到之前的 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
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
其中 —hint-bios=hd0,gpt2 —hint-efi=hd0,gpt2 —hint-baremetal=ahci0,gpt2
和 913B-D0CD
需要根据本地具体情况获取。方法如下
获取uuid
sudo grub-probe —target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# bootmgfw.efi 的路径根据具体情况填写,获得uuid:
913B-D0CD
- 1
- 2
- 3
获取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
- 1
- 2
- 3
2. 重新生成配置文件
sudo grub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg
# 或者下面这条命令,具体根据grub.cfg文件的位置来确定就好
sudo grub-mkconfig -o /boot/grub/grub.cfg
- 1
- 2
- 3
- 4
不得不感叹一下,双系统下不能轻易升级更新啊 TT !继上次更新win10 1709导致引导问题之后《修复GRUB:win10 1709 秋季创意者更新导致Linux双系统无法引导》今天又出现了因为更新 Linux 内核导致了GRUB 引导选择中的 Windows 启动项消失不见了…
哎~开始折腾吧。
一条命令修复启动项
我的硬盘分区是 gpt 分区,包括 win10 1709 秋季更新版和 Manjaro Linux 系统。
其实就修复之后的情况来看,造成启动项丢失主要是 GRUB 的启动配置文件发生的变动,而解决办法很简单重新生成配置文件就好了,命令如下:
sudogrub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg
# 或者下面这条命令,具体根据grub.cfg文件的位置来确定就好
sudogrub-mkconfig -o /boot/grub/grub.cfg
1
2
3
4
一般情况下系统会自动找到之前的 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,gpt2913B-D0CD
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
1
2
3
4
5
6
7
8
9
其中 —hint-bios=hd0,gpt2 —hint-efi=hd0,gpt2 —hint-baremetal=ahci0,gpt2 和 913B-D0CD 需要根据本地具体情况获取。方法如下
获取uuid
sudogrub-probe —target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# bootmgfw.efi 的路径根据具体情况填写,获得uuid:
913B-D0CD
1
2
3
获取hint-string
sudogrub-probe —target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# 路径同上,得到的信息如下:
—hint-bios=hd0,gpt2 —hint-efi=hd0,gpt2 —hint-baremetal=ahci0,gpt2
1
2
3
2. 重新生成配置文件
sudogrub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg
# 或者下面这条命令,具体根据grub.cfg文件的位置来确定就好
sudogrub-mkconfig -o /boot/grub/grub.cfg
1
2
3
4
全文完,参考资料:
https://wiki.archlinux.org/index.php/GRUB
(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)” rel=”nofollow” target=”blank”>https://wiki.archlinux.org/index.php/GRUB(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)