centos 7 菜鸟第一天 找回win10

来源:互联网 发布:windows键怎么关闭 编辑:程序博客网 时间:2024/05/21 19:38

话说win10还是没有找到。

不写废话文章,直接写答案。不用跟我的错误思路瞎跑了。


总体思路:

grub2能找到windows10,前提是,把bootmgfw.efi 复制到efi分区的efi/microsoct/boot/bootmgfw.efi,

自然也不需要在/etc/grub.d/40_custom里面配置自定义系统。

关于启动顺序,修改 /etc/default/grub 文件,把 GRUB_DEFAULT=2 设置为需要的值。0开始。

然后用grub2-mkconfig -o 更新grub.cfg

grub.cfg里面就是最终所有启动项。


以前问题在以下几个方面。

1

grub2-mkconfig -o /boot/grub2/grub.cfg

是用来在传统BIOS 系统中使用的,而目前的配置是GPT+UEFI,应该使用

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

2

自定义项目----目前证明不需要自定义,加上也没错,多一项。

menuentry 'win10_x64'{
      set root=(hd0,1)
      chainloader +1
}

都不对,分区已经是gpt,要以gpt标示,windows10虽然安装在c盘(gpt1),但EFI分区在hda5上,即gpt5.

set root=(hd0,gpt5)

另外uefi启动不支持 chainloader +1,需要指出具体路径。


efi分区在centos7安装的时候挂在 /boot/efi/下面,并且复制了win10中 windows/boot/efi/bootmgfw.efi 到efi分区, 文件结构是这样的:

boot/efi/

        |----efi

             |------boot/bootx64.efi(复制时已改名)---当centos安装完成以后,把从windows复制来的文件覆盖了。

             |------centos/

             |------microsoft/boot


centos的启动文件在centos 目录下,win10启动文件在microsoft/boot目录下,chainloader写成如下

chainloader /efi/microsoft/boot/bootmgfw.efi 

结论是可行的。

之前出错是因为,bootmgfw.efi 从c:/windwos 复制到 boot/efi/efi/boot 后被centos覆盖,又把覆盖后的文件复制到了 microsoft/boot,导致提示找不到grubx64.efi。最后,只好从win10的iso中找到一个bootx64.efi,改名后复制回来。在centos中,挂在ntfs格式的windows分区,貌似也看不到 windows/boot/efi 文件夹。


另外,grub-mkconfig 时若没有找到windows系统,即使grub.cfg 中有windows的菜单项,启动时也时没有作用的。

# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-ccc49bedef7a48aa9f936dbb882faec3
Found initrd image: /boot/initramfs-0-rescue-ccc49bedef7a48aa9f936dbb882faec3.img
Found Windows Boot Manager on /dev/sda5@/efi/microsoft/boot/bootmgfw.efi
done

重启,希望找到win10.


1 2
原创粉丝点击