2. MBR 与 GPT 分区表详解

在磁盘扇区级恢复中,理解分区表结构是定位数据、重建引导链的基础。本章深入剖析 MBR 与 GPT 两种分区方案的底层布局、关键字段,并对比 UEFI 与 Legacy BIOS 的启动流程差异。

2.1 MBR 结构详解

MBR(Master Boot Record)位于磁盘的 0 号扇区(LBA 0),共 512 字节。它由三部分组成:主引导记录、磁盘分区表(DPT)和结束标志。

2.1.1 MBR 布局总览

关键指标:MBR 仅支持 4 个主分区,最大磁盘容量约 2.2 TB(512B 扇区)。分区表项共 64 字节,每项 16 字节。
偏移地址(十六进制) 长度(字节) 内容 说明
0x000 – 0x1BD 446 主引导记录(Boot Code) 第一阶段引导程序,负责加载活动分区 VBR
0x1BE – 0x1CD 16 分区表项 1 第一个主分区描述
0x1CE – 0x1DD 16 分区表项 2 第二个主分区描述
0x1DE – 0x1ED 16 分区表项 3 第三个主分区描述
0x1EE – 0x1FD 16 分区表项 4 第四个主分区描述
0x1FE – 0x1FF 2 结束标志 固定为 0x55AA

2.1.2 分区表项结构(16 字节)

每个分区表项包含以下字段,恢复时需重点校验 起始 CHS/LBA 与 分区类型。

偏移 长度 字段 说明
0x00 1 引导标志 0x80 表示活动分区,0x00 表示非活动
0x01 – 0x03 3 起始 CHS 地址 磁头/扇区/柱面(旧式寻址)
0x04 1 分区类型 0x07 NTFS,0x0C FAT32 LBA,0x83 Linux
0x05 – 0x07 3 结束 CHS 地址 磁头/扇区/柱面
0x08 – 0x0B 4 起始 LBA 相对于磁盘开头的扇区偏移(小端序)
0x0C – 0x0F 4 分区总扇区数 该分区占用的扇区数量
恢复陷阱:MBR 分区表项损坏时,若 起始 LBA 与 分区类型 仍可识别,可尝试手动重建分区表。但 CHS 字段在现代大磁盘中已不准确,优先依赖 LBA 值。

2.1.3 MBR 结构内联 SVG

MBR 512 字节结构图 主引导记录(Boot Code)446 字节 分区表项 1 (16B) 分区表项 2 (16B) 分区表项 3 (16B) 分区表项 4 (16B) 结束标志 0x55AA (2B) 总计 512 字节 LBA 0 扇区

2.2 GPT 结构详解

GPT(GUID Partition Table)是 UEFI 规范推荐的分区方案,突破了 MBR 的 2.2 TB 限制,支持最多 128 个分区(Windows 默认)。GPT 磁盘在 LBA 0 保留一个 保护 MBR,真正的分区信息存储在后续扇区。

2.2.1 GPT 磁盘布局

LBA 地址 内容 大小 说明
LBA 0 保护 MBR 512 字节 包含一个类型为 0xEE 的分区表项,防止旧工具误识别
LBA 1 GPT 头 512 字节 记录分区表位置、大小、CRC32 校验、GUID
LBA 2 – LBA 33 分区表项 32 × 128 字节 每个分区表项 128 字节,默认 128 个分区
LBA 34 – … 用户数据区 可变 第一个分区通常从 LBA 34 开始
… – 倒数 LBA 34 用户数据区结束 — GPT 在磁盘末尾备份分区表
倒数 LBA 33 – 倒数 LBA 2 备份分区表项 32 × 128 字节 主分区表的完整副本
倒数 LBA 1 备份 GPT 头 512 字节 GPT 头的备份
倒数 LBA 0 磁盘末尾保护扇区 512 字节 与 LBA 0 的保护 MBR 对应

2.2.2 GPT 头关键字段

GPT 头位于 LBA 1,前 8 字节固定为 EFI PART(45 46 49 20 50 41 52 54)。恢复时重点检查 分区表起始 LBA 和 CRC32 校验。

偏移 长度 字段 说明
0x00 8 签名 EFI PART
0x08 4 修订版本 通常为 0x00010000
0x0C 4 头大小 通常为 92 字节(0x5C)
0x10 4 头 CRC32 整个 GPT 头的校验值
0x18 8 当前 LBA GPT 头所在 LBA(通常为 1)
0x20 8 备份 LBA 备份 GPT 头所在 LBA
0x28 8 分区表起始 LBA 通常为 2
0x30 4 分区表项数量 默认 128
0x38 4 分区表项大小 固定 128 字节
0x3C 4 分区表 CRC32 所有分区表项的校验值

2.2.3 GPT 结构内联 SVG

GPT 磁盘布局结构图 LBA 0: 保护 MBR LBA 1: GPT 头 LBA 2 – LBA 33 分区表项 (128×128B) 用户数据区 备份 GPT 头 + 分区表 防止旧工具误识别 分区类型 0xEE 签名 EFI PART 含 CRC32 校验 每个分区表项 128B GUID + 起始/结束 LBA 属性 + 名称 第一个分区从 LBA 34 开始 支持 >2.2TB 磁盘末尾冗余备份 可恢复主分区表

2.3 UEFI 与 Legacy BIOS 启动流程对比

启动流程决定了引导修复工具的选择与操作顺序。Legacy BIOS 依赖 MBR 中的引导代码链式加载,UEFI 则直接读取 FAT 格式的 EFI 系统分区(ESP)中的 .efi 文件。

2.3.1 Legacy BIOS 启动流程

  1. POST:硬件自检,BIOS 初始化。
  2. 读取 MBR:BIOS 将磁盘 LBA 0 的 512 字节加载到内存 0x7C00。
  3. 执行引导代码:MBR 中的 446 字节代码扫描分区表,找到活动分区。
  4. 加载 VBR:读取活动分区的卷引导记录(VBR),执行其引导代码。
  5. 加载操作系统:VBR 加载 bootmgr(Windows)或 grub(Linux)等引导管理器。

2.3.2 UEFI 启动流程

  1. UEFI 固件初始化:读取 NVRAM 中的启动项列表。
  2. 读取 GPT:固件识别 GPT 分区表,定位 EFI 系统分区(ESP,类型 GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B)。
  3. 加载引导文件:从 ESP 分区的 \EFI\BOOT\BOOTX64.EFI(x64 架构)或 NVRAM 指定的路径加载引导程序。
  4. 执行引导程序:引导程序加载操作系统内核,进入保护模式。

2.3.3 启动流程对比表

对比维度 Legacy BIOS + MBR UEFI + GPT
分区表 MBR(4 主分区限制) GPT(128 分区,无 2.2TB 限制)
引导代码位置 MBR 446 字节 + VBR ESP 分区中的 .efi 文件
文件系统要求 无(直接读扇区) ESP 必须为 FAT32
安全启动 不支持 支持 Secure Boot
启动速度 较慢(链式加载) 较快(直接加载 .efi)
恢复复杂度 修复 MBR + 分区表 + VBR 修复 GPT 头 + 分区表 + ESP 文件

2.3.4 启动流程对比内联 SVG

Legacy BIOS 与 UEFI 启动流程对比 Legacy BIOS 启动 ① POST 硬件自检 ② 读取 MBR (LBA 0) ③ 执行引导代码 ④ 加载 VBR ⑤ 加载 bootmgr/grub UEFI 启动 ① UEFI 固件初始化 ② 读取 GPT 分区表 ③ 定位 ESP 分区 ④ 加载 BOOTX64.EFI ⑤ 加载操作系统内核
实战提示:当系统无法启动时,先判断磁盘使用 MBR 还是 GPT。使用 fdisk -l /dev/sda(Linux)或 diskpart + list disk(Windows PE)查看分区表类型。MBR 磁盘修复重点在 0 号扇区,GPT 磁盘则需同时检查 LBA 1 的 GPT 头和 LBA 2-33 的分区表项,并利用末尾备份恢复。