GPT是GUID Partition Table的缩写,其含义为“全局唯一标识磁盘分区表”,GUID就是“全局唯一标识符(Globally Unique Identifier)”。

GUID分区表(GPT)是作为Extensible Firmware Interface(EFI)计划的一部分引入的,所以有必要先了解一下EFI。

EFI简介

Extensible Firmware Interface简称EFI,其含义为“可扩展固件接口”,是由Intel公司推出的一种在未来的计算机系统中替代BIOS的升级方案。

BIOS的全称是Basic Input/Output System,中文名是基本输入/输出系统。BIOS是操作系统和计算机硬件之间通信的桥梁,BIOS技术的兴起源于IBM PC/AT机器的流行及第一台由康柏公司研制生产的“克隆”PC。康柏公司当年为了简化启动的设置,引入了固化程序的概念,在启动时负责将PC初始化,然后再将控制权交给磁盘上的操作系统,就这样,BIOS一直沿用至今。

随着处理器研发技术的不断发展,CPU已经从32位时代进入到64位时代,而BIOS技术依然停留在16位汇编代码、寄存器参数调用的工作方式,Intel公司认为BIOS技术发展缓慢,所以在其基于64位的安腾处理器(Itanium)平台上推出了EFI技术。

EFI在开机时的作用和BIOS一样,就是初始化PC,但在细节上却又不一样。BIOS对PC的初始化,只是按照一定的顺序对硬件加电,简单地检查硬件是否能工作,而EFI不但检查硬件的完好性,还会加载硬件在EFI中的驱动程序,不用操作系统负责驱动的加载工作。

另外EFI的最革命之处,是颠覆了BIOS的界面概念,让操作界面和Windows一样易于上手。在EFI的操作界面中,鼠标成为了替代键盘的输入工具,各功能调节的模块也做的和Windows程序一样,可以说,EFI就是一个小型化的Windows系统。

对于操作系统来说,如果主板使用的是BIOS,那么操作系统就必须面对所有的硬件,大到主板显卡,小到鼠标键盘,每次重装系统或者系统升级,都必须手动安装新的驱动,否则硬件很可能无法正常工作。而基于EFI的主板则方便很多,因为EFI架构使用的驱动基于EFI Byte Code。EFI Byte Code有些类似于Java的中间代码,并不由CPU直接执行操作,而是需要EFI层进行翻译。对于不同的操作系统来说,EFI将硬件层很好地保护了起来,所有操作系统看到的,都只是EFI留给EFI Byte Code的程序接口,而EFI Byte Code又直接和Windows的API联系,这就意味着无论操作系统是Windows还是Linux,只要有EFI Byte Code支持,只需要一份驱动程序就能支持所有操作系统平台。

更为神奇的是,EFI Byte Code驱动还能绕过操作系统,直接安装在EFI环境中。这样对硬件的控制就由EFI层负责,EFI向操作系统直接提供硬件操作的接口,不需要操作系统再调用驱动。这种方式的优点是不需要进入操作系统,只需要进入EFI界面,更新驱动程序就可以完成,而且不需要对每一个操作系统进行驱动升级,只要EFI界面中升级一次,所有上层的操作系统都可以直接调用新的EFI接口。

EFI在开机之始就能够驱动所有的硬件,网络当然也不会例外,所以在EFI的操作界面中,程序可以直接连接上互联网,向外界求助操作系统的维修信息或者在线升级驱动程序。

既然EFI功能那么强大,那它存放在什么地方?是存放在原来的BIOS芯片中吗?答案当然是否定的。BIOS芯片只有256KB,远远不够EFI使用。EFI是以小型磁盘分区的形式存放在硬盘上的。EFI的安装,必须在支持EFI功能的主板上,使用光驱引导系统,然后对磁盘进行EFI化的处理。这个处理的过程,主要就是划分EFI独用的磁盘空间。

EFI的存储空间大约为几十MB到几百MB,具体视驱动文件多少而定。在这部分空间中,包含以下几个部分:

①Pre-EFI初始化模块;

②EFI驱动执行环境;

③EFI驱动程序;

④兼容性支持模块(CSM);

⑤EFI高层应用;

⑥GUID 磁盘分区。

在实际应用中,EFI初始化模块和驱动执行环境通常被集成在一个只读存储器中。Pre-EFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU、北桥、南桥、内存和硬盘的初始化工作,紧接着载入EFI驱动。当EFI驱动程序被载入运行后,系统便具有控制所有硬件的能力。

在EFI规范中,一种突破传统MBR磁盘分区结构限制的GUID磁盘分区系统(GPT)被引入。新结构中,磁盘的分区数不再受限制(在MBR结构下,只能存在4个主磁盘分区),并且分区类型将由GUID来表示。在众多的分区类型中,EFI系统分区可以被EFI系统存取,用于存放部分驱动和应用程序。兼容性支持模块(CSM)是在x86平台EFI系统中的一个特殊的模块,它将为不具备EFI引导能力的操作系统提供类似于传统BIOS的系统服务。

也许有人担心EFI这种开放的模式将会导致新的安全隐患。因为EFI系统比传统的BIOS更易于受到计算机病毒的攻击,当一部分EFI驱动程序被破坏时,系统有可能面临无法引导的情况。实际上,系统引导所依赖的EFI驱动部分通常都不会存放在EFI的GUID分区中。即使分区中的驱动程序遭到破坏,也可以用简单的方法得到恢复,因为只读芯片中的EFI代码足够用来引导计算机从光驱启动,此时插入EFI的安装盘,对EFI的系统存储区域进行修复或者覆盖安装,就能将PC恢复到正常。而且这个修复过程对操作系统来说,等于是从两台配置一模一样配置计算机中的一台转移到另一台,并不会出现需要重新识别硬件的情况。EFI在概念上非常类似于一个低等级的操作系统,并且具有操控所有硬件资源的能力。

GPT磁盘分区的基本特点

虽然GPT来自于EFI计划,但并不依赖于EFI,GPT主要有如下特点:

①目前能够支持GPT磁盘分区的操作系统有Microsoft Windows XP x64版本、Windows Server 2003(64位)、Windows Server 2003 SP1(所有版本)、Vista、Windows Server 2008、Mac OS X、部分版本的UNIX和Linux、Windows XP、Windows Server 2003、Windows 2000及以下操作系统不能支持GPT磁盘分区。

②理论上,GPT磁盘在长度上最大可达264个逻辑块,每个逻辑块容量一般为512字节,最大分区(磁盘)容量受操作系统版本的影响。Windows XP和Windows Server 2003的原始版本中,每个物理磁盘的最大容量为2TB,包括所有分区。对于Windows Server 2003 SP1 Windows XP x64版本和以后的版本,支持的最大原始分区为18EB。

③EFI规范对分区数量几乎没有限制,但是Windows实现限制的分区数量为128个。GPT中的分区条目的保留空间大小会限制分区数量。

④Microsoft Windows XP x64版本、Windows Server 2003(64位)、Windows Server 2003 SP1(所有版本)、Vista、Windows Server 2008等操作系统只能在GPT磁盘分区上进行数据操作,只有基于Itanium的Windows系统才能从GPT分区上启动。

⑤GPT和MBR结构可以在支持GPT的系统上混合使用,但支持EFI的系统要求启动分区必须位于GPT磁盘上,另一个硬盘可以是MBR,也可以是GPT。

⑥不可以进行针对GPT磁盘的扇区到扇区的复制操作,因为这将导致磁盘和分区GUID不再是唯一的,不过可以针对GPT磁盘中的基本数据分区进行扇区到扇区的复制。

⑦在系统支持的情况下可以将MBR磁盘转换为GPT磁盘,但是只有在磁盘为空的情况下,才可以将GPT磁盘转换为MBR磁盘。