[解决]Leap 15.0 grub2-mkconfig 无法找到Win10

只能开机按F11(华擎Z87极限玩家6主板)从启动菜单启动Win10,在Linux下运行 grub2-mkconfig 找不到Win10。

yast 里面找一下,随便改个启动时间刷新一下

yast里面管bootloader的里面有一项叫"probe foreign os”,翻译过来就是检测外来操作系统,把他开启之后重新生成grub配置文件应该就可以了

对比一下ubuntu,ubuntu有一个包叫os-prober,包内的东西其实就是/etc/grub.d/里面的一个脚本,也叫probeos什么的。这个包其实opensuse也有,装完后sudo os-prober,再grub-mkconfig

再不行就自己手写一个吧

menuentry "Windows 7 UEFI/GPT" {
    insmod part_gpt
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --no-floppy --set=root 28cf-35de
    chainloader ($root)/EFI/MICROSOFT/BOOT/bootmgfw.efi
}

uuid改到NT loader的分区(不是C盘)
这是隔壁gentoo的wiki
arch的wiki也很有参考价值

那个选择默认是选的,sudo os-prober 也 试了,还是不行

menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-1115-1136' {
	insmod part_gpt
	insmod fat
	set root='hd0,gpt1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  1115-1136
	else
	  search --no-floppy --fs-uuid --set=root 1115-1136
	fi
	chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

上面那个是我以前的,现在用不了了,提示 1115-1136 这个有问题

1115-1136应该是uuid,你可以到linux下看一眼带windows的那个盘或者分区的uuid,记下来之后到grub里试一下

或者我觉得你直接把if那几行删掉得了,那几行看起来没什么用,启动windows指定root之后直接chainloader就完事了

其实我个人还是用F11启动的,因为我主系统用的是Windows,在一款nvme盘上,两个linux在另一块sata盘上用一个grub引导。
而且我还开了secureboot,这么做冲突最小

可以了,把 1115-1136 改为现在用的磁盘 UUID 就能启动了