![将 Windows 10 添加到 Grub](https://linux22.com/image/1205621/%E5%B0%86%20Windows%2010%20%E6%B7%BB%E5%8A%A0%E5%88%B0%20Grub.png)
我在这里查看了其他几个问题(例如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