从单个驱动器启动两个不同的系统(包括硬件)

从单个驱动器启动两个不同的系统(包括硬件)

我一直在笔记本电脑上使用装有 Windows 10 的 SSD,该 SSD 以 UEFI/GPT 模式启动。有一段时间,我决定换用没有 SSD 的台式电脑。为了提高 PC 的响应能力,我想在该 SSD 上安装 Arch Linux 和 Win10。问题是我的 PC 只能以 BIOS 模式启动。我知道 Windows 10 无法以 BIOS/GPT 模式启动,而 Linux 可以。

那么是否可以双启动到UEFI 笔记本电脑上的 Win10, 和BIOS PC 上的 Linux,如果驱动器使用 GPT?可以GRUB这样做吗?或者我应该看看其他启动管理器,例如重新索引?或者最好只制作 Win10 系统和启动分区的映像,然后格式化驱动器?

答案1

一般来说,只要 BIOS 引导加载程序支持 GPT 分区表,这都是可能的。(您将使用两个完全独立的引导加载程序 - UEFI 引导加载程序和 BIOS 引导加载程序位于不同位置,并且完全不会交互。)

  • 无论平台如何,GRUB 都有相同的分区表支持——它可以part_gpt在 BIOS 系统和 UEFI 系统上使用。

    但是,在运行“grub-install”之前,您需要创建一个额外的“BIOS 启动分区”来保存“核心”GRUB 映像。(这是不是与 EFI 系统分区相同。)请参阅相关Arch Linux 维基页面

  • Syslinux 还有一个替代的 BIOS 引导扇区 ( gptmbr.bin),它可以理解 GPT 分区表。正如常规 Syslinux 引导扇区要求您的 Linux /boot 分区具有“活动”标志一样,支持 GPT 的 Syslinux 引导扇区要求 /boot 分区在其上设置“Legacy BIOS Bootable”属性(位 2)。请参阅相关Arch Wiki 页面

    (是的,“活动”标志存在于 GPT 磁盘上......只是不能用于 UEFI 固件。)

  • rEFInd 是一个 UEFI 引导加载程序,根本无法在 BIOS 系统上运行。

答案2

据官方称 Microsoft 文档,从 Windows Server 2003 SP1 开始的所有操作系统都支持带有 GPT 标记的卷数据磁盘。但是,只有安装在支持新 UEFI 规范的主板上的 64 位 Windows 版本才能引导来自 GPT 卷。因此,无法在具有传统 BIOS 固件的计算机上从 GPT 磁盘安装或启动 Windows。

有几种解决方法可让您从 GPT 磁盘在 BIOS 上启动 Windows 10/7 x64。其中一种方法是使用包含模拟 EFI 的 DUET(开发人员的 UEFI 环境)的启动盘。在此配置中,BIOS 从已安装的 SYSLINUX 启动,后者加载 UEFI 模拟器(DUET)。反过来,DUET 会调用标准的 Windows 引导加载程序bootx64.efi。此外,还可以使用 Linux 工具将您的磁盘转换为混合 MBR gdisk。但是,在这两种情况下,该过程都相当复杂,并且需要高级 Linux 知识。

一种更简单的方法是使用小型 USB 闪存驱动器或 SD 卡(至少 64 MB),格式化为 MBR,其中放置了小型 Windows 启动管理器 (bootmgr)。此可启动 USB 闪存驱动器提供初始启动并将控制权转移到位于 GPT 卷上的主系统的引导加载程序。您的 BIOS 需要支持从 USB 闪存驱动器或 SD 卡启动。这样,就可以在基于 BIOS 的系统中启动 x86 和 x64 Windows 版本。

如果最新方法适合您的需求,请参阅文章
在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

相关内容