将 Windows 10 添加到 Grub

将 Windows 10 添加到 Grub

我在这里查看了其他几个问题(例如GRUB 未检测到 Windows),然而,很多被投票通过的选项并不奏效。

目前我的40_custom文件如下所示(经过几次不同的尝试):

#8AEC5322EC5307B9
menuentry "Windows 10" --class windows --class os {
   insmod ntfs
   search --no-floppy --set=root --fs-uuid 88F44DC9F44DB9E8
   #chainloader +1
   ntldr /bootmgr
}

当使用这个时我收到错误cannot find command ntldr。如果我注释掉上面的内容并更改为chainloader +1我收到错误invalid efi file path

怀疑问题是,当我安装 Windows 10 时,它很“好心”地使用与我安装 Windows 时不同的存储设备作为位置System Reserved。我不会撒谎,我对它的选择并不满意,但没关系。结果启动文件打开了/dev/sda1(带有 ID 88F44DC9F44DB9E8),Windows 10 本身打开了/dev/sdb1。Ubuntu 安装在 nvme 设备上。

os-prober没有检测到 Windows 10(是的,当我运行它时,两个分区都安装在 ubuntu 中)并且update-grub也没有检测到它。

至少仍然可以启动 Windows 10,但是,要做到这一点,我需要进入Escgrub,然后输入exit命令行。然后我就会看到 Windows 10 徽标。

有人有什么想法吗?我猜我需要使用类似的命令set root='(hd0,1)',但老实说,我不确定参数需要输入哪些值。

粘贴箱日志链接boot-repair

相关boot-repair部分:

=================== Suggested repair
The default repair of the Boot-Repair utility would purge (in order to unsign) and reinstall the grub2 of nvme0n1p2 into the MBRs of all disks (except live-disks and removable disks without OS).
Grub-efi would not be selected by default because: no-win-efi
Additional repair would be performed: unhide-bootmenu-10s   fix-windows-boot


=================== Blockers in case of suggested repair
GPT detected. Please create a BIOS-Boot partition (>1MB, unformatted filesystem, bios_grub flag). This can be performed via tools such as Gparted. Then try again.
Alternatively, you can retry after activating the [Separate /boot/efi partition:] option.


=================== Advice in case of suggested repair
EFI detected. You may want to retry after activating the [Separate /boot/efi partition:] option.
Do you want to continue?


=================== Final advice in case of suggested repair
Please do not forget to make your BIOS boot on nvme0n1 (WDS500G2X0C-00L350) disk!


=================== User settings
The settings chosen by the user will not act on the boot.

答案1

你应该将你的 Windows 磁盘 (sdb) 转换为谷氨酰胺磷酸酶格式。这里,Windows 使用 MBR 磁盘,因此需要在 Legacy BIOS 中运行。Ubuntu 以 GPT 格式在 M.2 驱动器 (nvme0n1) 中运行UEFI 模式(L.308 建议这样做)。UEFI 就像旧 BIOS 系统的现代版本并已取代它,但您仍然可以切换到 Legacy BIOS,只是 Windows 不支持使用 MBR 磁盘在 UEFI 模式下运行的计算机,这里就是这种情况。

在 Ubuntu 中,使用 Gparted 将绿色 SSD 驱动器转换为 GPT 格式非常简单。但它会擦除该驱动器上的所有内容,因此您需要重新安装 Windows。您还会丢失该磁盘上的所有数据文件。或者,有一些免费软件,由 EaseUs Partition Master 提供据称它可以在不丢失任何文件的情况下进行转换。我没有用过它,所以我不能确认它是否能正常工作,但如果它能正常工作,那将节省很多时间和麻烦。

还有一个问题是您的 Windows MSR 分区位于 sda 上。我不知道为什么它不在您的主 Windows sdb 磁盘上,但暂时我会让它保留在原处,但您可能还需要转换 sda 以使所有内容全面兼容 UEFI。在将上述磁盘转换为 GPT 之前,请确保先备份位于 sda/sdb 上的所有数据文件。

答案2

这就是我“解决”问题的方法,但从评论来看,Windows 决定自行安装的方式似乎存在潜在问题(如果它将启动分区放在不同的磁盘上这一事实还不够明显的话)。

正如我提到的,在我的问题中,当我点击Esc然后输入exit机器启动到 Windows 10 时。因此,我在40_custom文件中添加了以下内容:

menuentry "Exit to Windows 10"{
    exit
}

然后我运行update-grub。当我选择该选项时,grub 就会“启动”到 Windows。

答案3

您是否尝试过安装 os-prober?

sudo apt-get install os-prober

重新安装你的 grub:

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

相关内容