对于这里的新手来说有点问题,经过多次重新安装后,我设法使 7 + 8 + Ubuntu 不会在我的新 T430 上崩溃。首先安装 8(预),然后安装 7,然后安装 Ubuntu(引导加载程序安装在根分区上,我猜不是 MBR?),然后从实时 CD Grub 进行引导修复,好极了!
问题是,启动 Windows 有两个选项:
- Windows UEFI bkpbootmgfw.efi
- Windows 启动 UEFI 加载程序
两者都将我发送到 Windows 7 引导加载程序,然后让我选择启动 7 或 8。有什么方法可以直接从 grub 启动它们吗?
更新:我尝试使用 easybcd 重新设置 Windows 引导加载程序的默认设置,但它在“重置”时不知怎么搞砸了,最后我得到了 60 个引导项。之后 Windows 根本无法启动。
我现在已经完全重新安装了所有内容,因此 Ubuntu 和 Windows 都有自己的启动项,我可以通过按 F12 选择它们作为设备,也可以调整默认设置。但是,我仍然希望从启动时就可以使用所有 3 个选项。
我尝试使用 easybcd 将 Ubuntu 添加到 Windows 引导加载程序,但它说缺少 /NST/AutoNeoGrud2.mbr 文件,无法从那里启动。
答案1
这不是明确的,因为我从来没有测试过;然而......
首先,MBR 与您的系统无关,除非保护性 MBR 是 GUID 分区表 (GPT) 的一部分。您的引导加载程序作为文件存储在EFI 系统分区 (ESP),在大多数 Linux 安装中,它都安装在/boot/efi
。Ubuntu 将 GRUB 存储在 ESP 的EFI/ubuntu
目录中(即/boot/efi/EFI/ubuntu
来自 Ubuntu),而 Microsoft 将其引导加载程序存储在EFI/Microsoft
ESP 上的目录树中。这就是为什么当您想要启动 Windows 时,您会得到双引导加载程序处理——Microsoft 使用一位置,就像 Ubuntu 一样,如果您要安装多个版本的 Ubuntu,那么一个引导加载程序必须提供一个菜单,以使您能够启动任一版本的 Windows。
理论上,您可以创建第二个 ESP,将原始 ESP 的EFI/Microsoft
目录复制到其中,然后编辑两个 ESP 上的文件以限制它们仅启动一个版本的 Windows。不幸的是,我对 Windows 启动文件了解不够多,无法提供更精确的说明。事实上,我甚至不知道它是否真的有效,但它可能会。
如果您愿意付出努力,可以尝试通过重新安装 Windows 7 让 Windows 为您完成大部分工作:
- 在磁盘上创建第二个 ESP。在 GParted 中,您需要将分区缩小一点,在该空间中创建一个新的 FAT32 分区(确保它是 FAT32,而不是 FAT16),并为其指定“启动标志”。我还建议为其指定一个唯一的名称,例如“WIN7ESP”。(如果您最终使用 rEFInd 或帮助在文件浏览器中识别它,这可能会很有用。)
- 从原始 ESP 中删除“启动标志”。
- 可选地,更改 Windows 8 分区上的类型代码。例如,您可以在 GParted 中为其设置“lvm 标志”。这里的目标是降低 Windows 7 安装程序检测到 Windows 8 的可能性。
- 通过在原始 Windows 7 分区上创建一个新的 NTFS 文件系统来擦除该分区。给它起一个唯一的名称,以便于识别。
- 重新安装 Windows 7。此时,Windows 7 应该可以直接启动。
- 将 GRUB 恢复为默认启动管理器。如果你不确定如何操作,可以使用引导修复。或者你可以安装另一个 EFI 启动管理器,例如 rEFInd 或 gummiboot。
- 在 Linux 中,启动 GParted 并撤消您之前所做的分区类型代码更改 - 重置原始 ESP 上的启动标志,如果您更改了 Windows 8 分区上的类型代码,请删除该标志以将其恢复为正确的类型代码。
- 在 Linux 中,键入
sudo update-grub
以使其重新检测引导加载程序,运气好的话包括两个 Windows 引导加载程序。如果失败,您可能需要编辑/etc/grub.d/40_custom
以添加自定义菜单;或者您可以安装我的rEFInd 启动管理器,它应该检测Windows引导加载程序的两个副本。
我不保证此过程一定有效。而且,即使它确实有效,也可能会在后续产生问题,因为 Windows 不支持每个系统有多个 ESP。(但 EFI 规范说这没问题。)因此,将来的 Windows 更新或重新安装可能会变得混乱和行为不端。您应该能够通过临时重置一个或另一个 ESP 上的类型代码(即在 GParted 中删除其“启动标志”)来解决此类问题。
如果此过程不起作用,或者对您来说太复杂,我建议您在 Windows 论坛上询问此问题,因为 Windows 引导加载程序配置更多的是 Windows 问题而不是 Linux 问题。
另外两点:
答案2
当您启动 Windows 时,它会直接进入其引导加载程序,而不是操作系统本身。由于您安装了两个版本的 Windows,因此它会向您推荐这两个版本,而不是直接启动 Windows 本身。因此,使用 Windows 引导加载程序并让其启动 Linux 会更简单。稍后可以配置 Grub 以直接进入 Ubuntu。以下是您需要执行的操作。
- 得到易BCD
- 使用 EasyBCD 将 Windows 设置为默认引导加载程序,并修改其引导菜单以包含 grub
- 进入 Ubuntu。您的启动菜单现在应该允许您在 Windows 7、8 和 grub 之间进行选择。确保 Ubuntu 是 grub 的默认选项。
gksudo gedit /etc/default/grub
从终端运行- 确保
GRUB_HIDDEN_TIMEOUT
等于 0 - 利润!
这应该会让 Grub 直接进入 Ubuntu,并使 Windows 启动菜单允许您在所有操作系统之间进行选择。祝你好运!