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 功能那么强大,那它存放在什么地方?是存放在原来的 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 磁盘在长度上最大可达 2 64个逻辑块,每个逻辑块容量一般为 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 磁盘。
原文链接:https://www.dgxue.com/huifu/122.html