如何从 Grub 启动现有的 Windows 10?

如何从 Grub 启动现有的 Windows 10?

我有一台联想 Ideapad 710s-14IKB,我想双启动,但遇到了麻烦。很抱歉发了这么长的信息,但我相信这些信息对于理解我所尝试过的方法都很重要,如果我没有尝试过在这个网站上能搜索到的所有方法,我就不会在这里发帖。

发行前

笔记本电脑预装了 Windows 10。拿到机器后,我将 Windows 10 的分区缩小到 100GB,为 Ubuntu 留出大约 400GB。我不得不更改 UEFI 设置以禁用快速启动,将磁盘控制器从 RAID 更改为 AHCI,因为我被告知 Ubuntu 不支持 RAID。然后我启用了传统启动模式。我用启动盘安装了 Ubuntu,从那时起我就一直在运行 Ubuntu。

问题

我现在需要重新启动 Windows 10 来完成一份兼职工作。我偶尔需要启动它,所以我希望它是双启动和 grub 菜单的一部分。我使用笔记本电脑侧面的硬件按钮启动 BIOS 设置,启用 RAID 模式,重新启动并进入 Windows。然后我更新了 Windows 以启用对 AHCI 的支持。我进入 BIOS,改回 AHCI 模式,重新启动并获得了带有 Windows 选项的 grub 菜单。

现在我尝试让 grub 识别 Windows 启动分区,但没有成功。

尝试 1

我按照我搜索到的教程尝试了一下。

mmachenry@mmachenry-laptop:~$ sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.13.0-37-generic
Found initrd image: /boot/initrd.img-4.13.0-37-generic
Found linux image: /boot/vmlinuz-4.13.0-36-generic
Found initrd image: /boot/initrd.img-4.13.0-36-generic
Found linux image: /boot/vmlinuz-4.13.0-32-generic
Found initrd image: /boot/initrd.img-4.13.0-32-generic
Found linux image: /boot/vmlinuz-4.13.0-21-generic
Found initrd image: /boot/initrd.img-4.13.0-21-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done 
mmachenry@mmachenry-laptop:~$ sudo grub-install /dev/nvme0n1
Installing for i386-pc platform.
Installation finished. No error reported.

但这并没有注意到任何 Windows 分区。

第二次尝试

我尝试了从另一个教程安装的启动修复,但当我选择推荐的修复选项时,它给了我这个消息:“当前会话处于传统模式。请重新启动计算机,并在 EFI 会话中使用此软件。这将启用此功能。例如,在确保您的 BIO 设置为在 EFI 模式下启动 USB 后,使用 Boot-Repair-Disk-64bit 的实时 USB。”问题是,当我将 BIOS 更改为启用 UEFI 模式而不是传统模式时,计算机变砖了,我收到联想蓝屏提示出现问题,它给了我几个选项,其中一个是返回 BIOS 设置,我可以在那里改回传统模式。所以看起来 Ubuntu 不支持 UEFI 模式,但也许这是不正确的。如果 Ubuntu 不支持 UEFI 模式,启动修复会要求 UEFI 模式,这似乎很奇怪。我理想情况下应该在传统模式还是 UEFI 模式下运行?

第三次尝试

最后,我尝试根据第三个教程添加它:

mmachenry@mmachenry-laptop:~$ cat /etc/grub.d/40_custom 
#!/bin/sh
exec tail -n +3 $0
# 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.
menuentry "Windows" {
set root=(hd0,2)
chainloader +1
}

我认为那里的数字应该是 0 和 2,因为:

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048     534527    532480   260M EFI System
/dev/nvme0n1p2    534528     567295     32768    16M Microsoft reserved
/dev/nvme0n1p3    567296  217036799 216469504 103.2G Microsoft basic data
/dev/nvme0n1p4 945737728  998166527  52428800    25G Microsoft basic data
/dev/nvme0n1p5 998166528 1000214527   2048000  1000M Windows recovery environment
/dev/nvme0n1p6 217036800  217038847      2048     1M BIOS boot
/dev/nvme0n1p7 217038848  945737727 728698880 347.5G Linux filesystem

但我可能错了。即使我将数字设置为不同的值(例如 0 3),它基本上也没有做任何事情。Windows 甚至没有出现在菜单上。我运行了 sudo update-grub,得到了与上次运行相同的输出,现在 Windows 菜单选项甚至在启动时出现。

第四次尝试

我将条目改为

menuentry 'Windows 10' {
    search --fs-uuid --no-floppy --set=root 9CC3-B528
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

复印本教程我收到 Grub 的错误消息“错误:无效签名”,并再次显示 Grub 菜单,我可以在其中重新启动 Linux。

结束语

有人知道我该如何让这台机器实现双启动吗?谢谢你的帮助。我想知道 Windows 的 UEFI 模式和 Ubuntu 的传统模式是否不匹配。我需要两者匹配的安装吗?

答案1

  1. 使用您选择的编辑器编辑 /etc/default/grub 并添加GRUB_DISABLE_OS_PROBER=false并保存文件
  2. sudo update-grub
  3. 重启

希望这次能够检测到 Windows。

答案2

您还可以使用 Windows 启动管理器查找有关我以相同方式运行 ubuntu 和 Windows 10 双启动的说明。

相关内容