GPT分区格式
程序员文章站
2022-07-27 15:02:42
1. GPT定义 全局唯一标识分区表(GUID partition table, 缩写:GPT)是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口(UEFI)标准的一部分,被用于替代BIOS系统中使用32bits来存储逻辑块地址和分区大小信息的主引导记录(MBR)分区表。GPT标准使用64b ......
1. gpt定义
全局唯一标识分区表(guid partition table, 缩写:gpt)是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口(uefi)标准的一部分,被用于替代bios系统中使用32bits来存储逻辑块地址和分区大小信息的主引导记录(mbr)分区表。gpt标准使用64bits用于记录逻辑块地址,因此,gpt分区格式在同等逻辑块大小的情况下,比mbr分区格式支持更大的硬盘空间。
2. gpt磁盘格式
gpt分区格式包含传统mbr(主引导记录)、分区表头、分区表、备份分区表头、备份分区表以及数据区。
2.1 传统mbr(lba0)
出处于兼容性与安全性方面的考虑,gpt分区格式保留传统mbr,位于lba0(第一个逻辑扇区),用于防止不支持gpt的硬盘管理软件错误识别并破坏硬盘数据。在这个mbr中,只有一个标志为0xee的分区,以此表示这块硬盘使用gpt分区格式。不支持gpt分区格式的软件,会识别出未知类型的分区;支持gpt分区格式的软件,可正确识别gpt分区磁盘。
2.2 分区表头(lba1)
分区表头记录了磁盘可用空间大小、分区表项大小与个数,备份分区表的位置信息,详细可参见表1。
表1 gpt分区表头格式
起始字节 | 长度 | 内容 |
---|---|---|
0 | 8字节 | 签名("efi part", 45 46 49 20 50 41 52 54) |
8 | 4字节 | 修订(在1.0版中,值是00 00 01 00) |
12 | 4字节 | 分区表头的大小(单位是字节,通常是92字节,即5c 00 00 00) |
16 | 4字节 | 分区表头(第0-91字节)的crc32校验,在计算时,把这个字段作为0处理,需要计算出分区序列的crc32校验后再计算本字段 |
20 | 4字节 | 保留,必须是0 |
24 | 8字节 | 当前lba(这个分区表头的位置) |
32 | 8字节 | 备份lba(另一个分区表头的位置) |
40 | 8字节 | 第一个可用于分区的lba(主分区表的最后一个lba + 1) |
48 | 8字节 | 最后一个可用于分区的lba(备份分区表的第一个lba − 1) |
56 | 16字节 | 硬盘guid(在类unix系统中也叫uuid) |
72 | 8字节 | 分区表项的起始lba(在主分区表中是2) |
80 | 4字节 | 分区表项的数量 |
84 | 4字节 | 一个分区表项的大小(通常是128) |
88 | 4字节 | 分区序列的crc32校验 |
92 | * | 保留,剩余的字节必须是0(对于512字节lba的硬盘即是420个字节) |
2.3. 分区表
分区表记录了每个分区的详细信息,包括分区类型guid、分区guid、分区大小与位置信息、分区的名称与属性,详细格式信息见表2。
表2 gpt分区表项的格式
起始字节 | 长度 | 内容 |
---|---|---|
0 | 16字节 | 分区类型guid |
16 | 16字节 | 分区guid |
32 | 8字节 | 起始lba(小端序) |
40 | 8字节 | 末尾lba |
48 | 8字节 | 属性标签(如:60表示“只读”) |
56 | 72字节 | 分区名(可以包括36个utf-16(小端序)字符) |
3. 验证
使用本人硬盘验证如下:
3.1 gpt的mbr内容
使用磁盘内容查看工具查看mbr内容,16进制显示如下图所示。可见第一个主分区表项文件系统标识为“0xee”。
3.2 gpt表头
gpt表头内容如下:
3.3 gpt表项
gpt表项内容:
参考链接
[1] *.全局唯一标识分区表
上一篇: 咸丰皇帝的设计,到底有什么漏洞呢?