用grub2修复Windows&Ubuntu双系统

来源:互联网 发布:java获取短信验证码 编辑:程序博客网 时间:2024/06/11 21:55

装完双系统的时候, 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" ]; thenmenuentry "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的方式.

阅读全文
0 0
原创粉丝点击