解决Arch grub2检测不到Windows的问题


最好是有系统备份,之前我没想到我还有个系统备份,折腾了很久始终没有进展,我的是win7,需要根目录下有一个bootmgr和/boot/BCD,没有的话无法被检测引导开机。

有了之后,执行

 grub-probe --target=fs_uuid /run/media/lckiss/64Win7/bootmgr

会显示:52DA0AD9DA0AB96D

grub-probe --target=hints_string /run/media/lckiss/64Win7/bootmgr

会显示:--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1

然后

sudo gedit /etc/grub.d/40_custom

将以下代码粘贴进去,用上面的结果替换

if [ "${grub_platform}" == "pc" ]; then
 menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {
 insmod part_msdos
 insmod ntfs
 insmod search_fs_uuid
 insmod ntldr 
 search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
 ntldr /bootmgr
 }
fi

改完是这样的

if [ "${grub_platform}" == "pc" ]; then
 menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {
 insmod part_msdos
 insmod ntfs
 insmod search_fs_uuid
 insmod ntldr 
 search --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 52DA0AD9DA0AB96D
 ntldr /bootmgr
 }
fi

然后运行

sudo grub-mkconfig

后来发现,其实有bootmgr和bcd后,什么都不用做,直接也可以检测到,我是手贱自己删除了。

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

此生不再折腾启动问题。多系统已经玩腻了。

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - 解决Arch grub2检测不到Windows的问题


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.