双启动 Ubuntu,无法加载 Windows 10

双启动 Ubuntu,无法加载 Windows 10

我知道之前有很多关于这个主题的问题,但我已经尝试了很多解决方案,但都没有奏效。我在 ubuntu 上运行了 boot-repair,这是它提供的 pastebin 链接:http://paste.ubuntu.com/p/VKwZsFmv7n/

在运行引导修复之前,我可以在 GRUB 上看到:Ubuntu、Ubuntu 的高级选项和 Windows 启动管理器。加载 Ubuntu 工作正常,但尝试加载到 Windows 10 时,屏幕会不断循环显示“无法启动 Windows”,并显示重新启动或转到高级选项的选项。最后,我决定通过高级选项执行出厂重置,但仍然无法启动 Windows 10。

运行引导修复后,GRUB 菜单上会出现更多带有“...windows..efi”标题的项目。启动其中一些项目时,屏幕上会显示黑屏,并显示“未找到图像”等文字,而其他一些项目会将我带到一个屏幕,让我再次恢复出厂设置,或尝试修复引导(这两种方法我都试过很多次,但尚未找到解决方案)。

现在迫切需要任何帮助才能再次启动 Windows 10,在此先感谢任何帮助。

编辑:sudo parted -l给予

Model: NVMe Device (nvme)
Disk /dev/nvme0n1: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size    File system  Name                          Flags
 1      1049kB  683MB  682MB   fat32        EFI system partition          boot, esp
 2      683MB   817MB  134MB                Microsoft reserved partition  msftres
 3      817MB   220GB  219GB   ntfs         Basic data partition          msftdata
 7      220GB   241GB  21.0GB  ext4
 4      241GB   242GB  1038MB  ntfs                                       hidden, diag
 5      242GB   255GB  13.3GB  ntfs                                       hidden, diag
 6      255GB   256GB  1152MB  ntfs                                       hidden, diag

grep -A10 -i 'Windows' /boot/grub/grub.cfg给出

menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D85B-0CB1
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D85B-0CB1
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "Windows Boot UEFI fbx64.efi" {
search --fs-uuid --no-floppy --set=root D85B-0CB1
chainloader (${root})/EFI/Boot/fbx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D85B-0CB1
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "EFI/ubuntu/mmx64.efi" {
--
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-D85B-0CB1' {
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  D85B-0CB1
    else
      search --no-floppy --fs-uuid --set=root D85B-0CB1
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
set timeout_style=menu

答案1

我遇到了与上述 Maciej 所说的类似的问题,只不过我的 Windows 分区是 UEFI,而我的 ubuntu 一直在旧版中安装,所以我只能通过更改 BIOS 设置才能进入 Windows。问题是我的 USB 棒是旧版,不支持 UEFI,因此安装只能运行旧版。一旦我在更好的 USB 上创建新的启动/安装磁盘,我就能让两者在同一个启动菜单上工作

答案2

这只是猜测,但可能有帮助。也许 GRUB 使用的是旧 GPT 启动,又名 BIOS,又名 Legacy 模式,而 Windows 是 EFI,又名 UEFI。因此,在 BIOS 模式下,无法启动 EFI Windows。

您可以进入 BIOS 并尝试强制 EFI 启动,或者设置“仅 EFI”,或者禁用“传统模式”、“BIOS 模式”或其他任何选项,具体取决于 BIOS。此外,禁用“快速启动”和其他可能的“改进”有时可能会有所帮助。

您也可以首先尝试调出 BIOS 启动菜单(有时按 F12),并检查它是否允许直接启动 EFI Windows,甚至无需启动 GRUB。

答案3

解决了在 BIOS 中从 AHCI 模式切换回 RAID 模式时无法从 GRUB 加载到 Windows 的问题。

答案4

好的。grub.cfg 中的最后一个选项,(菜单项“/dev/nvme0n1p1 上的 Windows 启动管理器”)是启动 Windows 的重要项。所有其他 Windows 项都是多余的。

缺少一行关键代码 - set root='X0,gpt1'。对于硬盘 x=hd,但在您的情况下,对于 NVMe,它可能不是 hd,但不确定符号,因为我不使用 M2 SSD。第一个磁盘的末尾始终有一个“0”,在 2 个磁盘驱动器中,第二个磁盘的符号为“1”。所以在我的情况下,我的 Windows 磁盘为 hd0,Linux 磁盘为 hd1,因为我有 2 个硬盘,每个系统一个。无论如何,那行缺失定义了 Windows 的 esp 的位置,应该是菜单项的第 4 行,所以可能是类似'设置根='nvme0,gpt1',或者它可能仍然被标记为,set root='hd0,gpt1'尽管我已经建议了。最简单的方法是查看 Ubuntu 菜单项中的文件,看看“设置根=...' 表示为 NVMe。我个人会先尝试使用 hd0。

还有一个问题,你可能损坏了 Windows 的系统启动分区。如果你从 BIOS 启动,你还能将 Windows 作为第一个启动项启动吗?

相关内容