本文主要是介绍用grub2修复WindowsUbuntu双系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
装完双系统的时候, grub里面有Windows和Ubuntu, 但是重启之后(忘了重启了几次)只剩下了Ubuntu. 于是我就从Grub里修复了Windows的引导.
修复方式
先放上修复方式:
在/etc/grub.d/40_custom里加入非#部分的代码
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.if [ "${grub_platform}" == "efi" ]; then
menuentry "Windows Boot Manager" {set root='(hd1,gpt1)'chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
fi### END /etc/grub.d/40_custom ###
接着在命令行里执行
grub2-mkconfig -o /boot/grub/grub.cfg
解释
set root='(hd1,gpt1)'
是设置目录. 一开始我设置的是Windows启动盘(C盘)的分区, 为(hd0, gpt3), 但是报错. 这里出现了两个问题, 一个是盘符问题, 一个是chainloader问题.
盘符问题
我设置为hd0的时候, 报错:
error: disk 'hd0,3' not found
我不知道为什么Grub识别出来我的硬盘是hd1, 因为我只有一个盘, 而且更奇怪的是/boot/grub2/grub.cfg里, Ubuntu启动盘的目录就是hd0. 并且输入ls -l
时, hd0报错. 这里还要在查一下.
chainloader问题
当我设置为
set root='(hd1,gpt3)' //这是Windows的系统盘(C盘)
chainloader +1
时, 报错:
Invalid EFI file path
然后改为
set root='(hd1,gpt1)' //这是EFI启动分区
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
成功.
修改完/etc/grub.d/40_custom之后, 运行如下命令:
grub2-mkconfig -o /boot/grub/grub.cfg
这句命令是把/etc/grub.d/ 里面的所有文件一起生成一个文件, 通过-o /boot/grub/grub.cfg
覆盖掉grub.cfg, 而真正对启动有作用的正式这个grub.cfg, 而/etc/grub.d/ 里面的文件仅仅是提供了一种方便修改grub.cfg的方式.
这篇关于用grub2修复WindowsUbuntu双系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!