使用 Grub 启动 Ubuntu、Windows 8.1 和 Windows 10 技术预览版

使用 Grub 启动 Ubuntu、Windows 8.1 和 Windows 10 技术预览版

我的电脑有两个硬盘:一个装有 Windows 7,另一个装有 Ubuntu、Windows 8.1 和 Windows 10 技术预览版。当我打开电脑时,Grub 会提示我选择 Ubuntu、Windows 8 或 Windows 7。如果我单击 Windows 8,它会加载 Windows,然后提示我选择 Windows 10 技术预览版或 Windows 8.1。如果我选​​择刚刚没有加载的版本(我认为它会加载我最后使用的版本),它会重新启动我的电脑并再次显示 Grub。再次单击 Windows 8 后,它会加载我真正想要的选项。

鉴于我的计算机上有这么多操作系统,我可能会想要频繁地在它们之间切换,但是当我必须经过多个引导加载程序并有时加载一个操作系统以便我可以选择另一个操作系统时,这迫使我关机并再次经过引导加载程序来加载我实际想要使用的操作系统。

我的观点是,这很麻烦。我希望 Grub 分别提示我选择 Windows 8 和 Windows 10。我该如何实现呢?我查看了 bcdedit,似乎可以删除启动项,但我对此了解不够,不知道这是否允许它们分开并让 Grub 分别检测它们,实现我想要的效果,或者这是否会破坏一些东西。

更新:我发现一些信息,我可以使用旧版引导加载程序,至少避免在选择所需的操作系统之前加载操作系统,方法是调用“bcdedit /set "{current}" bootmenupolicy legacy”,这是我设置的,而且我花了一段时间才弄明白。我看到过一次这种情况,但是当我再次重新启动计算机时,它不起作用了。当我使用 bcdedit 检查时,它显示 bootmenupolicy 已设置为旧版,但它实际上并没有按照我的想法执行。

答案1

我认为你最好的选择是将 windows 安装到不同的硬盘上,而不是不同的分区上,然后将 ubunto 安装到两个硬盘中的一个单独的分区上,并确保选择安装 ubuntu 的分区进行引导加载程序安装,不要与检测到的操作系统一起安装,而是选择其他东西

我理解多重启动的难度,以及我如何设置它,要像我以前那样设置我的电脑要困难得多,我多重启动 win xp pro win 7 home preimum win 8.1 pro win 10 enterprise android x86 4.4 r2 ubuntu 15.10

PC PC 启动时,首先启动 ubuntu grub,其中包含 3 个用于 Windows 的条目,这 3 个条目将我带到 Windows 启动加载程序 grub,然后我有一个用于启动 Android 的条目

要做到这一点,我不得不使用 easyBCD.exe 和 grub2win.exe,这两个都是适用于 Windows 的,我首先在磁盘 1 par 1 上安装了 win xp,然后将 android 安装在磁盘 1 par 3 上,然后将 win8.1 安装在磁盘 1 par 2 上,然后将 win 7 安装在磁盘 2 par 1 上,但由于系统恢复而变成了 par 2,无论如何都是磁盘 2 par 1,然后将 win 10 安装到磁盘 2 par 3,最后我将 ubunto 安装到磁盘 3,我没有在磁盘 3 上添加任何分区

希望您发现这至少对您的多重启动有帮助,如果您需要更多帮助,我的电子邮件是 [电子邮件保护]

答案2

显然,您的问题是由于同一驱动器上的两个 Windows(Win 8.1 和 Win 10)共享一个启动分区/管理器。我不确定 BIOS 安装(共享“系统保留”分区?)是否会发生这种情况,但 UEFI 安装(共享 EFI 系统分区,ESP)几乎肯定会发生这种情况。

无论如何,grub 无法将任何参数传递给 Windows 引导加载程序,因此(唯一?)解决方案是为每个 Windows 安装使用单独的引导加载程序。这可以通过bcdboot.exehttps://technet.microsoft.com/en-us/library/dd744347%28v=ws.10%29.aspx)。

例如,如果它们是 UEFI 安装,请创建驱动器的额外 FAT32 分区(是的,您可能还需要在磁盘管理中做一些压缩),然后使用它bcdboot.exe从 Windows 10 的系统分区安装 UEFI 引导加载程序的副本(假设现有 ESP 是由 Win 8 制作的,并且您已从 BCD 中删除了 Win 10 引导条目)。您可能需要确保新的引导加载程序中没有添加 Win 8 条目(bcdedit.exe或类似条目)。

对于 BIOS 安装,这些可能可以用类似的方式完成。只是分区可能应该是 NTFS。注意 的/f切换bcdboot.exe

PS 我不知道您在帖子中提到的有关传统引导加载程序的技巧/窍门是什么。无论如何,grub 无法从 UEFI 启动切换到传统启动。也就是说,如果它是 grub x86_64-efi,您就无法ntldr加载bootmgr;同样,如果它是 grub i386-pc,您就无法chainloader加载bootmgfw.efi。虽然我听说 refind 能够切换到传统启动,但我不知道它能如何帮助您。

PS2 我提到的方法不一定能检测update-grub到两个 Windows 引导加载程序。最重要的是它为您提供了一种在自定义条目或 grub.cfg 中直接指向特定 Windows(针对相应的引导分区)的方法。grub-mkconfigos-probersearch

相关内容