我安装了 Windows 8 测试版并重新安装了 GRUB。当我启动计算机并选择 Windows 7 时,我得到了新的 Windows 8 启动屏幕,要求在 Windows 7 或 8 之间启动。
如果我选择 Windows 7,我的计算机就会重新启动,我必须再次选择 Windows 7 才能启动到 7。但如果我选择 Windows 8,它就会立即启动。我知道我可以选择默认启动哪个操作系统,但我希望我的 GRUB 选项成为在操作系统之间进行选择的唯一方式。所以我的问题是,我该如何设置它,以便当我单击 Windows 7 时,我会转到那里,而当我选择 Windows 8 时,我会启动 8?
答案1
简单的答案是:您不能。Windows 8 使用一种新型的引导加载程序,在要求您选择要引导哪个之前,几乎完全启动操作系统。然后它会重新启动到正确的操作系统。在这种情况下,如果您选择 Windows 7,它会启动到 Windows 7 引导加载程序,然后再启动到 Windows 7。如果您选择 Windows 8,它会重新启动到 Windows 8 分区,并带有跳过 Windows 8 引导加载程序的标志。
奇怪的答案:您可能能够卸载或禁用 Windows 7 和 Windows 8 引导加载程序,让 GRUB 完全控制。但这实际上与 Ubuntu 无关。尝试询问 M$ 的人?
答案2
我假设您已经安装了所有内容(Windows 7/8 和 Linux),并且 Windows 为引导加载程序提供了单独的分区。
您需要启动 Windows 7,打开提升的命令提示符(在菜单开始中,而不是左键单击,右键单击并选择“以管理员身份运行”)并发出:
bcdboot c:\Windows /s c:
然后你可以重新启动进入 Linux,并假设你的 os-prober 刚刚出现问题:
grub2-mkconfig -o /boot/grub/grub.cfg
您将发现以下条目:
- Ubuntu
- Ubuntu 的高级选项
- Windows 8(在 /dev/sda1 上)
- Windows 7(在 /dev/sda2 上)
选择 Windows 8 允许像以前一样“选择”Windows 7。也许bcdboot
在 Windows 8 中运行可以解决该问题,但我还没有尝试过 - 一种简单而安全的解决方法是将超时时间更改为 5 秒。
不幸的是,我不使用 Ubuntu,所以描述更多的是我在 Gentoo 上所做的,所以grub2-mkconfig
名称可能会有所不同等等。
PS. 我认为这无关紧要,但在我设法通过 bcdboot 完成之前,我已经这样做了。我bootsect.exe
从 Windows 7 安装盘(位于启动目录中)获取并运行:
bootsect.exe /nt60 C:
在尝试上述任何命令之前,请阅读文档(我今天刚刚尝试过并且有效 - 我不是专家)。