从BIOS(非UEFI)系统上的GPT磁盘引导Windows 7/10

时间:2020-01-09 10:46:13  来源:igfitidea点击:

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

本文描述了如何配置Windows从使用经典BIOS(非UEFI)或者传统BIOS模式的计算机上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分区。让我们重点介绍一下要点:

支持2.2TB以上硬盘(最大可用GPT磁盘大小为9.4Zettabytes(9.4x1021字节));

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

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

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

从GPT磁盘启动Windows

根据微软官方文件http://msdn.microsoft.com/en-us/windows/hardware/gg463525.aspx,所有从windowsserver2003sp1开始的操作系统都支持以GPT标记作为数据盘的卷。但是,只有安装在支持新UEFI规范(统一可扩展固件接口)的主板上的64位Windows版本才能从GPT卷引导。因此,它将不可能安装或者从一个GPT磁盘在具有经典BIOS固件的旧计算机上引导Windows。

提示有几个解决方法可以让我们从GPT磁盘引导BIOS计算机上的windows10/7x64. 要做到这一点,你必须使用一个包含 DUET(开发者的UEFI环境)模拟EFI的引导盘。在这个配置中,BIOS开始从安装的SYSLINUX引导,后者加载UEFI模拟器(DUET)。DUET反过来调用标准的Windows引导加载程序-bootx64.efi。此外,还可以使用Linux工具 gdisk将磁盘转换为 混合MBR模式(hybrid MBR)。然而,在这两种情况下,这个过程都相当复杂,需要Linux的高级知识。

让我们注意一个重要的事实:只有在基于UEFI的系统上,才能从GPT磁盘引导windowsx64.

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

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

重要!BIOS应支持从USB闪存驱动器或者SD卡引导

所以,启动任何(x86和x64!!!)支持基于BIOS的系统(不带EFI)中的Windows版本。

在BIOS电脑的GPT磁盘上安装Windows

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

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

提示。]我们可以通过在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(如果它未分配或者“干净”)。无法转换安装了操作系统的磁盘。

。在Windows101703(及更高版本)中,有一个控制台实用程序 mbr2gpt.exe),它允许我们在不丢失数据的情况下将磁盘分区表从MBR转换为GPT(请参阅文章convert MBR to GPT without Loss data in Windows 10)

要将硬盘从MBR转换为GPT联机,我们可以使用一个小工具 Gptgen,该工具可以动态更改分区表格式,而不必删除磁盘的所有分区(不会丢失数据)。

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

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

以管理员权限运行命令提示符;

运行命令:

diskpart

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

list disk

 

在本例中,系统中有一个索引为0的40 GB磁盘(磁盘0)。如我们所见,这个磁盘有一个标准的MBR分区表(GPT列为空);

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

gptgen.exe -w \.\physicaldrive0

在运行该命令时,我们将面临一个警告,即开发人员不能保证在完成到GPT的转换后我们将能够从此分区启动。

注意.0在physicaldrive末尾表示磁盘0应该被转换

gptgen.exe文件:分区表转换器v1.1

启动:1,类型:0×7,开始:扇区2048,长度:204860扇区

启动:0,类型:0×7,开始:扇区206858,长度:83685636扇区

警告:找到启动分区。这个工具不能保证

这样的分区在转换后仍然是可引导的

你想继续吗?[是/否]是

正在写入主MBR和地址LBT 0

正在将辅助GPT写入LBA地址83786657

成功!

这样,分区表到GPT的转换就成功了!

将Windows引导程序移动到USB闪存驱动器

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

运行命令:

diskpart

显示系统中磁盘的列表:

list disk

. 现在系统中有两个磁盘:磁盘0是安装了操作系统的40 GB硬盘(*在Gpt列中显示此磁盘包含Gpt分区表)和磁盘1是1 GB U盘。

让我们详细讨论磁盘和指定的字母。选择硬盘:

select disk 0

并显示其上的卷列表:

list volume

根据卷的大小,我们可以看到系统安装在卷2上,该卷分配了字母D:的名称(它可能与Windows本身显示的系统磁盘的字母不同)

在USB闪存驱动器上创建分区:

select disk 1

选择USB闪存驱动器

clean

清除磁盘内容

create partition primary size=1000

在U盘上创建一个主分区,在我们的例子中是1GB

format fs=fat32

(格式化FAT32文件系统中的分区。请勿将NTFS文件系统用于USB闪存驱动器,因为系统将无法从此类分区启动)

select partition 1

选择USB闪存驱动器上的第一个分区

active

将其标记为活动

list volume

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

select volume 3

选择它

assign letter=G

给它指定任意一个字母,例如

list volume

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

exit

退出diskpart

将Windows引导环境文件从系统卷复制到USB闪存:

bcdboot d:\Windows /l en-us /s g:

将引导代码写入USB闪存驱动器以提供bootmgr(Windows引导管理器)启动:

bootsect /nt60 G: /mbr /force

重新启动。

进入BIOS并更改引导顺序,使USB闪存驱动器或者SD卡优先。保存更改。如果你做得对,系统应该能正确引导。我们可以确保Windows位于GPT驱动器上。打开磁盘管理器( **磁盘管理.msc]),然后选择系统磁盘属性。在 页签中,可以看到分区表的类型是GPT(分区样式- GUID分区表)。

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

Windows 10/Windows Server 2015

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中根本无法识别。