1. 当前位置:网站首页 > 数据恢复

GPT引导磁盘分区的结构原理


GPT磁盘由6部分结构组成,如图下图所示。

GPT引导磁盘分区的结构原理

保护MBR

保护MBR位于GPT磁盘的第一个扇区,也就是0号扇区,由磁盘签名、MBR磁盘分区表和结束标志组成,如下图所示。

GPT引导磁盘分区的结构原理

 

在保护MBR扇区中没有引导程序,分区表内只有一个表项,这个表项描述一个类型为0xEE的分区,分区起始地址是1号扇区,大小为四个字节所能存储的最大值(FF FF FF FF)。该分区的存在可以使计算机认为这个磁盘是合法的,并且已被使用,从而不再去试图对其进行分区、格式化等操作,而EFI根本不使用这个分区表。

GPT头

GPT头位于GPT磁盘的第二个扇区,也就是1号扇区,该扇区是在创建GPT磁盘时生成的,GPT头会定义分区表的起始位置、分区表的结束位置、每个分区表项的大小、分区表项的个数及分区表的校验和等信息。

GPT引导磁盘分区的结构原理

 

GPT头中各个参数的含义见下表

GPT头中各个参数的含义

GPT引导磁盘分区的结构原理

再用模板的形式看一下GPT头的结构参数,如下图所示。

GPT引导磁盘分区的结构原理

对这些参数具体分析如下。

①00H~07H。长度为8字节,是GPT头的签名,十六进制为“45 46 49 20 50 41 52 54”,ASCII码为“EFI PART”。

②08H~0BH。长度为4字节,表示版本号。

③0CH~0FH。长度为4字节,是GPT头的总字节数,当前值为92,说明GPT头占用92字节。

④10H~13H。长度为4字节,是GPT头的CRC校验和。

⑤14H~17H。长度为4字节,保留不用。

⑥18H~1FH。长度为8字节,表示GPT头所在扇区号,通常为1号扇区,也就是GPT磁盘的第二个扇区。

⑦20H~27H。长度为8字节,是GPT头备份的所在扇区号,也就是GPT磁盘的最后一个扇区,当前值为2 503 871。

⑧28H~2FH。长度为8字节,是GPT分区区域的起始扇区号,当前值为34,GPT分区区域通常都是起始于GPT磁盘的34号扇区。

⑨30H~37H。长度为8字节,是GPT分区区域的结束扇区号,当前值为2 503 838。

⑩38H~47H。长度为16字节,是GPT磁盘的GUID。

⑪ 48H~4FH。长度为8字节,表示GPT分区表的起始扇区号,当前值为2,GPT分区表通常都是起始于GPT磁盘的2号扇区。

⑫50H~53H。长度为4字节,表示分区表项的个数。Windows系统限定GPT分区个数为128,每个分区占用一个分区表项,所以该值为128。

⑬54H~57H。长度为4字节,每个分区表项占用字节数,该值固定为128。

⑭58H~5BH。长度为4字节,是分区表的CRC校验和。

⑮5CH~1FFH。长度为420字节,保留不用。

分区表

分区表位于GPT磁盘的2~33号扇区,一共占用32个扇区,能够容纳128个分区表项,每个分区表项大小为128字节。因为每个分区表项管理一个分区,所以Windows系统允许GPT磁盘创建128个分区。

每个分区表项中记录着分区的起始和结束地址、分区类型的GUID、分区名字、分区属性和分区GUID,下图是一个GPT磁盘2号扇区的四个分区表项。

GPT引导磁盘分区的结构原理

分区表项中各参数的含义见下表

分区表项中各个参数的含义

GPT引导磁盘分区的结构原理

再用模板的形式看一下分区表项的结构参数,如下图所示。

GPT引导磁盘分区的结构原理

分区表项的模板

对这些参数具体分析如下。

①00H~0FH。长度为16字节,用来描述分区类型,其类型可以是前面提到过的EFI系统分区(ESP)、微软保留分区(MSR)、LDM元数据分区、LDM数据分区、OEM分区、主分区。

微软公司为GPT分区定义的类型见下表。

分区类型 GUID
微软保留分区(MSR) 16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE
LDM元数据分区 AA C8 08 58 8F 7E E0 42 85 D2 E1 E9 04 34 CF B3
LDM数据分区 A0 60 9B AF 31 14 62 4F BC 68 33 11 71 4A 69 AD
主分区 A2 A0 D0 EB E5 B9 33 44 87 C0 68 B6 B7 26 99 C7

Intel公司为GPT分区定义的类型见下表。

分区类型 GUID
未分配 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
EFI系统分区 C1 2A 73 28 F8 1F 11 D2 BA 4B 00 A0 C9 3E C9 3B
含DOS分区表的分区 02 4D EE 41 33 E7 11 d3 9D 69 00 08 C7 81 F3 9F

②10H~1FH。长度为16字节,是分区表的GUID,这个GUID对于分区来讲是唯一的。

③20H~27H。长度为8字节,是分区的起始地址,用LBA地址表示,在分区表项1中该值为34,说明第一个分区开始于GPT磁盘的34号扇区。

④28H~2FH。长度为8字节,是分区的结束地址,用LBA地址表示,在分区表项1中该值为65 569,说明第一个分区结束于GPT磁盘的65 569号扇区。

⑤30H~37H。长度为8字节,是分区的属性。

⑥38H~7FH。长度为72字节,是分区的名称,用Unicode码表示。例如,在第一个分区表项中分区名为“Microsoft reserved partition”,说明这是一个微软保留分区;第二个分区表项中分区名为“Basic data partition”,说明这是一个基本数据分区,也就是主分区。

分区区域

GPT分区区域通常都是起始于GPT磁盘的34号扇区,是整个GPT磁盘中最大的区域,由多个具体分区组成,如EFI系统分区(ESP)、微软保留分区(MSR)、LDM元数据分区、LDM数据分区、OEM分区、主分区等。分区区域的起始地址和结束地址由GPT头定义。

GPT头备份

GPT头有一个备份,放在GPT磁盘的最后一个扇区,但这个GPT头备份并不是GPT头的简单复制,它们的结构虽然一样,但其中的参数却有一些区别。

下图所示是一块GPT磁盘的最后一个扇区,也就是其GPT头的备份。

GPT引导磁盘分区的结构原理

GPT头备份中各个参数的含义如下图所示。

GPT引导磁盘分区的结构原理

对这些参数具体分析如下。

①00H~07H。长度为8字节,是GPT头的签名,十六进制为“45 46 49 20 50 41 52 54”,ASCII码为“EFI PART”。

②08H~0BH。长度为4字节,表示版本号。

③0CH~0FH。长度为4字节,是GPT头备份的总字节数。当前值为92,说明GPT头备份占用92字节。

④10H~13H。长度为4字节,是GPT头备份的CRC校验和。

⑤14H~17H。长度为4字节,保留不用。

⑥18H~1FH。长度为8字节,表示GPT头备份所在扇区号,当前值为2 503 871号扇区,也就是GPT磁盘的最后一个扇区。

⑦20H~27H。长度为8字节,是GPT头的所在扇区号,当前值为1号扇区,也就是GPT磁盘的第二个扇区。

⑧28H~2FH。长度为8字节,是GPT分区区域的起始扇区号,当前值为34,GPT分区区域通常都是起始于GPT磁盘的34号扇区。

⑨30H~37H。长度为8字节,是GPT分区区域的结束扇区号,当前值为2 503 838。

⑩38H~47H。长度为16字节,是GPT磁盘的GUID。

⑪ 48H~4FH。长度为8字节,表示GPT分区表备份的起始扇区号,当前值为2 503 839,这也是分区区域结束地址的下一个扇区,GPT分区表备份通常都是起始于GPT磁盘分区区域结束地址的下一个扇区。

⑫50H~53H。长度为4字节,表示分区表项的个数。Windows系统限定GPT分区个数为128,每个分区占用一个分区表项,所以该值为128。

⑬54H~57H。长度为4字节,每个分区表项占用字节数,该值固定为128。

⑭58H~5BH。长度为4字节,是分区表的CRC校验和。

⑮5CH~1FFH。长度为420字节,保留不用。

分区表备份

分区区域结束后,紧跟着就是分区表的备份,其地址在GPT头备份扇区中有描述。

分区表备份是对分区表32个扇区的完整备份。如果分区表被破坏,系统会自动读取分区表备份,也就能够保证正常地识别分区。

在图4-207中“GPT分区表备份起始扇区号”参数的值就是分区表备份所在的扇区号了。当前值为2 503 839,跳转到该扇区,看到的内容与GPT磁盘的2号扇区中分区表完全一样,其如下图所示。

GPT引导磁盘分区的结构原理

其模板如下图所示。

GPT引导磁盘分区的结构原理

本文最后更新于2023-8-26,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权说明

本文地址:https://bolg.xs357.com/post-87.html
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

微信号:LS1975172433

工作日:9:00-23:00,节假日休息

扫码关注