当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

作者:精品下载站 日期:2024-12-14 22:50:33 浏览:13 分类:玩电脑

在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10


今天,我们来详细讨论如何在具有 BIOS 固件(不支持现代 UEFI 环境)且硬盘使用 GPT 分区表的过时计算机上安装/启动任何现代版本的 Windows(包括 Windows 7 和 Windows 10)。当我尝试在本地磁盘总容量超过 4 TB、RAID 5 的 HP DL380 G8 服务器(HP DL 服务器尚不支持 EFI)上安装 Windows Server 2008 R2 时,就出现了执行这样的技巧的需要。在 MBR 磁盘上的标准 Windows 安装中,系统中只有 2 TB 可用。您无法为 Windows 分配或访问剩余的 2 TB 磁盘空间。利用所有可用磁盘空间的唯一方法是将磁盘布局转换为 GPT 格式。

本文介绍如何在具有经典 BIOS(非 UEFI)或传统 BIOS 模式的计算机上将 Windows 配置为从 GPT 分区表中标记的硬盘启动。 Windows 操作系统无法从旧 BIOS 系统上的 GPT 磁盘启动。为了解决此限制,我们将移动Windows 引导加载程序 (BCD) 到具有 MBR 分区表的单独小型 USB 闪存驱动器(或 HDD 驱动器)。该闪存驱动器仅用于启动 Windows 引导加载程序,然后该引导加载程序必须将控制权转移到位于具有 GPT 分区表的磁盘上的主 Windows 映像。该指令是通用的,应该适用于 Windows 7 和 Windows 10 以及任何其他受支持的 x86 和 x64 Windows 版本。

GPT 相对于 MBR 的优点

GUID 分区表 (GPT) 这种硬盘上的表分区新格式有哪些优点? GPT 允许绕过经典 MBR 分区表的许多限制。让我们强调一下要点:

  1. 支持超过 2.2TB 的硬盘(最大可用 GPT 磁盘大小为 9.4 ZettaBytes(9.4 x 1021 字节));

  2. 支持磁盘上最多128个分区(MBR中只有4个分区可用);

  3. 通过在磁盘上的多个位置复制分区表并使用循环冗余校验 (CRC) 验证分区表来实现高可靠性。这样,即使第一个磁盘扇区损坏,磁盘分区结构也不会丢失;

  4. 无需使用容易出现各种错误的逻辑分区

从 GPT 磁盘启动 Windows

根据微软官方文档http://msdn.microsoft.com/en-us/windows/hardware/gg463525.aspx,从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 工具 gdisk 将磁盘转换为混合 MBR 模式 (hybrid mbr)。然而,在这两种情况下,过程都相当复杂,并且需要高级的 Linux 知识。

让我们注意一个您始终必须牢记的重要事实:只能在基于 UEFI 的系统上从 GPT 磁盘启动 Windows x64。

因此,如果您的电脑是基于 BIOS 的,并且您需要一个包含 GPT 分区表的磁盘,最简单的方法是添加另一个 MBR 硬盘(标准或 SSD),在其上安装 Windows,然后从该磁盘启动。

我们将尝试稍微修改此技术。为此,我们需要一个带有 MBR 标记的小型 USB 闪存驱动器或 SD 卡(至少 64 MB),上面放置小型 Windows 启动管理器 (bootmgr)。此可启动 USB 闪存驱动器为位于 GPT 卷上的主系统的引导加载程序提供初始启动和传输控制。

重要!您的 BIOS 应支持从 USB 闪存驱动器或 SD 卡启动。

因此,支持在基于 BIOS 的系统(无 EFI)中启动任何(x86 和 x64!!!)Windows 版本。

在 BIOS PC 上的 GPT 磁盘上安装 Windows

假设我们有一台带有 BIOS(非 UEFI 固件)的计算机,该计算机的硬盘使用新的 GPT 分区表。当您尝试在此类计算机的 GPT 驱动器上安装 Windows 时,Windows 安装程序会返回错误:

Windows cannot be installed to this disk the selected disk is of the GPT Partition Style

[玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

提示您可以通过在 Windows 设置屏幕上按 Shift+F10 将驱动器分区表从 MBR 转换为 GPT,但所有数据都会丢失。运行以下命令:

Diskpart
select disk 0

系统中是否有一个硬盘

clean 

清除磁盘内容

convert gpt 

将分区表转换为GPT

在这种情况下,只能在 UEFI 模式下通过使用 DUET 的 UEFI 模拟将 Windows 10 /8.1/7 安装到 GPT 磁盘。但这种模式只能用于安装64位Windows版本,并且整个过程如前所述相当复杂。

然后,更容易在正常模式下将 Windows 安装到 MBR 磁盘,然后使用 gptgen 将其转换为 GPT。

Gptgen:在不删除分区的情况下将 MBR 转换为 GPT

Windows 磁盘管理管理单元允许您将 MBR 磁盘转换为 GPT(如果未分配或“干净”)。您无法转换安装了操作系统的磁盘。

注意。在Windows 10 1703(及更高版本)中,有一个控制台实用程序mbr2gpt.exe,它允许您将磁盘分区表从MBR转换为GPT而不丢失数据(请参阅文章在Windows 10中将MBR转换为GPT而不丢失数据)

要将硬盘从 MBR 在线转换为 GPT,您可以使用一个小工具 Gptgen,它允许动态更改分区表格式,而无需删除磁盘的所有分区(不会丢失数据)。

重要! 在转换之前,我们强烈建议将所有关键数据复制到不同的外部驱动器。虽然我从未见过 gptgen 工具的故障导致文件系统完全崩溃,但我确实建议所有用户在分区表转换之前保存重要数据。

下载gptgen并将其解压到任意目录(例如,c: ools\gptgen-1.1)。

  1. 使用管理员权限运行命令提示符;

  2. 运行命令:

    diskpart
  3. 在diskpart下,显示系统中的所有驱动器:

    list disk

    [玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

     

    在此示例中,系统中有一个索引为 0 的 40 GB 磁盘(磁盘 0)。可以看到,这个磁盘有一个标准的MBR分区表(GPT列为空);

  4. 使用命令将磁盘0的分区表从MBR转换为GPT

    gptgen.exe -w \.\physicaldrive0

    运行该命令时,您将面临一条警告,提示开发人员不保证在完成向 GPT 的转换后您能够从此分区启动。

注意 物理驱动器末尾的 0 表示应转换磁盘 0。

gptgen.exe:分区表转换器 v1.1
引导:1,类型:0×7,开始:扇区 2048,长度:204860 个扇区
引导:0,类型:0×7,开始:扇区 206858,长度:83685636 个扇区
警告:引导分区(s) 发现。此工具不能保证
此类分区在转换后仍可启动。
您想继续吗? [Y/N] y
将主 GPT 和保护性 MBR 写入 LBA 地址 0…
将辅助 GPT 写入 LBA 地址 83786657…
成功!

[玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

至此,分区表转换为GPT已经成功!

将 Windows 引导加载程序移至 USB 闪存驱动器

重新启动计算机并确保 BIOS 无法从具有 GPT 表的硬盘启动。出色的!插入小型 USB 闪存驱动器或 SD 卡。使用(合适的 Windows 10 或 Windows 7 安装映像)从 Windows 安装 (DVD/USB) 介质启动,然后在 Windows 设置屏幕上按 Shift+F10 打开命令提示符:

  • 运行命令:

    diskpart
  • 显示系统中的磁盘列表:

    list disk

    。现在系统中有两个磁盘:磁盘0是安装了操作系统的40GB硬盘(Gpt栏中的*表示该磁盘包含GPT分区表),磁盘1是1GB USB闪存驱动器。

    [玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

  • 让我们详细讨论一下磁盘和分配的字母。选择您的硬盘:

    select disk 0

    并显示其上的卷列表:

    list volume

    [玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

    根据卷的大小,可以看到系统安装在卷2上,卷2分配了盘符D:(它可以与Windows本身显示的系统盘盘符不同)

  • 在U盘上创建分区:

    select disk 1

    选择 USB 闪存驱动器

    clean

    清除磁盘内容

    create partition primary size=1000

    在 USB 闪存驱动器上创建一个主分区,在我们的例子中为 1 GB

    format fs=fat32 

    (将分区格式化为FAT32文件系统,U盘不要使用NTFS文件系统,这样系统将无法从该分区启动)

    select partition 1

    选择U盘上的第一个分区

    active 

    将其标记为活动

    list volume 

    再次显示卷列表。在这个例子中,你可以看到我们创建的卷是3号

    select volume 3 

    选择它

    assign letter=G

    为其分配任何空闲字母,例如 G

    [玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

    list volume

    确保闪存驱动器上的分区分配有字母 G:

    [玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

    exit

    退出磁盘部分

  • 将 Windows 启动环境文件从系统卷复制到 USB 闪存:

     bcdboot d:\Windows /l en-us /s g:
  • 将启动代码写入USB闪存驱动器以提供bootmgr(Windows启动管理器)启动:

     bootsect /nt60 G: /mbr /force
  • 重新开始。

进入 BIOS 并更改启动顺序,使 USB 闪存驱动器或 SD 卡首先启动。保存更改。如果操作正确,系统应该可以正确启动。您可以确保您的 Windows 位于 GPT 驱动器上。打开磁盘管理器 (diskmgmt.msc) 并选择系统磁盘属性。在选项卡中,您可以看到分区表的类型为GPT(分区样式-GUID分区表)。

[玩转系统] 在 BIOS(非 UEFI)系统上从 GPT 磁盘启动 Windows 7/10

这种将 Windows 启动管理器传输到单独的 USB 闪存驱动器的方法允许利用所有 GPT 优势,并在基于 BIOS 的系统(无 UEFI)中利用硬盘的整个大小(超过 2.2 TB)。此技巧可以在以下(甚至 x86)Windows 版本上执行:

  • Windows 10/Windows Server 2016

  • Windows 8、Windows 8.1、Windows Server 2012/2012 R2

  • Windows 7、Vista、Windows Server 2008/2008 R2

  • Windows Server 2003 SP1/2003 (x64)

  • Windows XP x64

您还需要了解,每次打开/重新启动设备时,必须将带有 MBR 表和引导加载程序的 USB 闪存驱动器插入计算机,否则 Windows 将无法启动。

根据现有信息,某些带有 BIOS 的旧型号计算机根本无法使用 GPT 驱动器,这样的磁盘在 CMOS 期间根本无法识别。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯