文章目录
- MBR分区表
- MBR分区表结构
- MBR分区表项
- 查看U盘的分区表信息
- 查看系统中所有磁盘的分区类型
- 获取分区表信息
- GPT分区表
- 保护性MBR
- GPT分区表头格式
- GPT分区表项格式
- 分区类型
- 分区属性
- 分区表项内容
MBR分区表
CHS :磁头(Heads)、柱面(Cylinder)、扇区(Sector)
MBR : Main Boot Record 主引导记录 (MBR/DOS分区表) ,分区信息存储在磁盘的0扇区。

MBR分区表结构

MBR分区表项

每个磁盘最多分为4个主分区,或三个主分区及一个扩展分区,扩展分区可分为N个逻辑分区。单个分区最大支持2TB,分区表只能管理最大2TB空间。
查看U盘的分区表信息
在linux系统下
查看系统中所有磁盘的分区类型
fdisk -l

获取分区表信息
dd if=/dev/sdb of=./mbr.bin bs=1024 count=16
hexdump -C ./mbr.bin

磁盘标识符:0x0F52E7FE
引导标识:0x00;如果该分区内安装了操作系统,则该分区必须为活动分区,方可成功引导该分区内的操作系统(即为80H);
分区类型 :
| 分区标志 | 分区类型 |
|---|---|
| 0x05 | 扩展分区 |
| 0x06 | FAT16分区 |
| 0x07 | NTFS分区 |
| 0x83 | Linux分区 |
| 0x0B | FAT32分区 |
| 0x0C | FAT32分区 |
| 0x0F | 扩展分区 |
| 0x1C | 隐藏的FAT32分区 |
| 0xEE | GPT分区 |
本分区之前以用的扇区数:0x2000 = 8192
本分区总扇区数:0x01DE1C00 = 31333376
GPT分区表
GUID : Globally Unique Identifier 全局唯一标识符
GPT :GUID partition table 全局唯一标识分区表
LBA :Logical Block Address 逻辑块地址
LBA0 : 保护性MBR,保护GPT分区表不受MBR磁盘工具的危害,含有一个分区类型为0xEE的分区,MBR磁盘无法识别,因此拒接对硬盘进行操作,从而保护GPT分区。在支持GPT的操作系统中,LBA0也用于保存启动代码,0XEE表示此硬盘使用GPT分区表。
LBA1 : 分区表头,记录硬盘的信息,分区表管理的空间大小以及分区表项数量,分区表项的地址。
LBA2-LBA33 : 硬盘各个分区的信息。
保护性MBR
按照上面MBR的方法,获取使用gpt分区表的U盘的分区表数据。

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个字节) |

GPT分区表项格式
分区类型

分区属性

分区表项内容

每个磁盘最多支持128个分区,单个分区最大支持到8ZB,分区表由34个LBA组成。具有备份分区表与CRC校验,主分区表损坏时可使用备份分区表。
(1ZB=1024EB,1EB=1024PB,1PB=1024TB)