• GPT 分区详解


    保护MBR

    保护MBR包含一个DOS分区表(LBA0),只包含一个类型值为0xEE的分区项,在小于2TB的磁盘上,大小为整个磁盘;在更大的磁盘上,它的大小固定为2TB。它的作用是阻止不能识别GPT分区的磁盘工具试图对其进行格式化等操作,所以该扇区被称为“保护MBR”。实际上,EFI根本不使用这个分区表。

    EFI部分

    EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域。

    EFI信息区(GPT头)
    起始于磁盘的LBA1,通常也只占用这个单一扇区。其作用是定义分区表的位置和大小。GPT头还包含头和分区表的校验和,这样就可以及时发现错误。
    分区表
    分区表区域包含分区表项。这个区域由GPT头定义,一般占用磁盘LBA2~LBA33扇区。分区表中的每个分区项由起始地址、结束地址、类型值、名字、属性标志、GUID值组成。分区表建立后,128位的GUID对系统来说是唯一的。
    GPT分区
    最大的区域,由分配给分区的扇区组成。这个区域的起始和结束地址由GPT头定义。
    备份区
    备份区域位于磁盘的尾部,包含GPT头和分区表的备份。它占用GPT结束扇区和EFI结束扇区之间的33个扇区。其中最后一个扇区用来备份1号扇区的EFI信息,其余的32个扇区用来备份LBA2~LBA33扇区的分区表。

    EFI信息区数据结构

    EFI信息区位于磁盘的1号扇区(LBA1),也称为GPT头。其具体结构如下表所示

    EFI信息区结构
    相对字节偏移量
    (十六进制)
    字节数说明[整数皆以little endian方式表示]
    00~07 8 GPT头签名“45 46 49 20 50 41 52 54”(ASCII码为“EFI PART”)
    08~0B 4 版本号,目前是1.0版,其值是“00 00 01 00”
    0C~0F 4 GPT头的大小(字节数),通常为“5C 00 00 00”(0x5C),也就是92字节。
    10~13 4 GPT头CRC校验和(计算时把这个字段本身看做零值)
    14~17 4 保留,必须为“00 00 00 00”
    18~1F 8 EFI信息区(GPT头)的起始扇区号,通常为“01 00 00 00 00 00 00 00”,也就是LBA1。
    20~27 8 EFI信息区(GPT头)备份位置的扇区号,也就是EFI区域结束扇区号。通常是整个磁盘最末一个扇区。
    28~2F 8 GPT分区区域的起始扇区号,通常为“22 00 00 00 00 00 00 00”(0x22),也即是LBA34。
    30~37 8 GPT分区区域的结束扇区号,通常是倒数第34扇区。
    38~47 16 磁盘GUID(全球唯一标识符,与UUID是同义词)
    48~4F 8 分区表起始扇区号,通常为“02 00 00 00 00 00 00 00”(0x02),也就是LBA2。
    50~53 4 分区表总项数,通常限定为“80 00 00 00”(0x80),也就是128个。
    54~57 4 每个分区表项占用字节数,通常限定为“80 00 00 00”(0x80),也就是128字节。
    58~5B 4 分区表CRC校验和
    5C~* * 保留,通常是全零填充

    分区项

    分区项结构
    相对字节偏移量
    (十六进制)
    字节数说明[整数皆以little endian方式表示]
    00~0F 16 用GUID表示的分区类型
    10~1F 16 用GUID表示的分区唯一标示符
    20~27 8 该分区的起始扇区,用LBA值表示。
    28~2F 8 该分区的结束扇区(包含),用LBA值表示,通常是奇数。
    30~37 8 该分区的属性标志
    38~7F 72 UTF-16LE编码的人类可读的分区名称,最大32个字符。

    注意,扇区尺寸不能假定为512字节,也就是说,一个扇区内可能存放4个以上的分区项,也可能只存放一个分区项的一部分。也就是说,除了头两个扇区(LBA 0 和 LBA 1)之外,GPT规范仅定义了数据结构的尺寸,而不关心使用多少个扇区进行存储。

    分区类型
    相关操作系统GUID[little endian]含义
    None 00000000-0000-0000-0000-000000000000 未使用
    None 024DEE41-33E7-11D3-9D69-0008C781F39F MBR分区表
    None C12A7328-F81F-11D2-BA4B-00A0C93EC93B EFI系统分区[EFI System partition (ESP)]
    None 21686148-6449-6E6F-744E-656564454649 BIOS引导分区,其对应的ASCII字符串是"Hah!IdontNeedEFI"。
    None D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology)
    Windows E3C9E316-0B5C-4DB8-817D-F92DF00215AE 微软保留分区
    Windows EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 基本数据分区
    Windows DE94BBA4-06D1-4D40-A16A-BFD50179D6AC Windows恢复环境
    Linux 0FC63DAF-8483-4772-8E79-3D69D8477DE4 数据分区。Linux曾经使用和Windows基本数据分区相同的GUID。
    这个新的GUID是由 GPT fdisk 和 GNU Parted 开发者根据Linux传统的"8300"分区代码发明的。
    Linux A19D880F-05FC-4D3B-A006-743F0F84911E RAID分区
    Linux 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F 交换分区
    Linux E6D6D379-F507-44C2-A23C-238F2A3DF928 逻辑卷管理器(LVM)分区
    Linux 8DA63339-0007-60C0-C436-083AC8230908 保留

    Microsoft还进一步对分区的属性进行了细分:低位4字节表示与分区类型无关的属性,高位4字节表示与分区类型有关的属性。Microsoft目前使用了下列属性:

    分区属性
    Bit解释
    0 系统分区(磁盘分区工具必须将此分区保持原样,不得做任何修改)
    1 EFI隐藏分区(EFI不可见分区)
    2 传统的BIOS的可引导分区标志
    60 只读
    62 隐藏
    63 不自动挂载,也就是不自动分配盘符

  • 相关阅读:
    用html自己开发自己的串口TCP通讯调试软件
    推荐模型PNN: 原理介绍与TensorFlow2.0实现
    推荐模型NeuralCF:原理介绍与TensorFlow2.0实现
    推荐模型DeepCrossing: 原理介绍与TensorFlow2.0实现
    推荐模型AutoRec:原理介绍与TensorFlow2.0实现
    ffmpeg命令的简单使用
    X264的交叉编译
    FDK_AAC交叉编译
    编译lame静态库
    iOS安全清单
  • 原文地址:https://www.cnblogs.com/CosyAndStone/p/3719726.html
Copyright © 2020-2023  润新知