当前位置:首页>Linux>Linux笔记(5)-GPT 分区表简介

Linux笔记(5)-GPT 分区表简介

  • 2026-10-11 08:39:59
Linux笔记(5)-GPT 分区表简介

GPT 分区表简介

GPT(GUID Partition Table,全局唯一标识符分区表)是现代磁盘分区标准,是 UEFI 规范的组成部分,用于替代传统的 MBR 分区表。


目录

  1. 什么是 GPT
  2. GPT 与 MBR 的区别
  3. GPT 磁盘结构详解
  4. GUID 分区类型
  5. GPT 的冗余与数据保护机制
  6. Linux 中操作 GPT
  7. Windows 中操作 GPT
  8. MBR 转 GPT
  9. 常见问题

1. 什么是 GPT

GPT 是一种磁盘分区表格式,定义了磁盘上分区的布局方式。它是 UEFI 规范的一部分,由 Intel 在开发 EFI 时一并引入,目的是克服 MBR 分区表的诸多限制。

GPT 使用 128 位的 GUID(全局唯一标识符) 标识每个分区,支持几乎无限数量的分区,并内置数据冗余校验,大幅提升了可靠性。


2. GPT 与 MBR 的区别

对比项
MBR
GPT
推出时间
1983 年
2000 年代初
最大磁盘容量
2.2 TB
(512 字节扇区)
理论 9.4 ZB
最大主分区数
4 个
(或 3 主 + 1 扩展)
128 个
(Windows 默认;Linux 无硬性上限)
分区表位置
磁盘第一个扇区(512 字节)
磁盘头部 + 磁盘尾部(双份备份)
分区标识方式
1 字节类型码
128 位 GUID
数据校验
无
CRC32 校验
引导方式
BIOS / UEFI(兼容模式)
主要用于 UEFI
兼容性
所有系统
Windows 10+、Linux、macOS 原生支持

3. GPT 磁盘结构详解

GPT 磁盘按以下顺序排列(以 512 字节/扇区为例):

┌────────────────────────────────────────────────────────┐│  LBA 0   │  保护性 MBR(Protective MBR)               │  ← 1 扇区(512 B)├────────────────────────────────────────────────────────┤│  LBA 1   │  GPT 头部(Primary GPT Header)             │  ← 1 扇区(512 B)├────────────────────────────────────────────────────────┤│  LBA 2–33│  GPT 分区条目数组(Partition Entry Array)  │  ← 32 扇区(16 KB)├────────────────────────────────────────────────────────┤│  LBA 34+ │  实际数据分区(Partition 1, 2, 3 ...)      ││          │  ...                                         │├────────────────────────────────────────────────────────┤│  倒数34扇区│ 备份 GPT 分区条目数组(Backup)           │  ← 镜像备份├────────────────────────────────────────────────────────┤│  最后1扇区│  备份 GPT 头部(Backup GPT Header)        │  ← 镜像备份└────────────────────────────────────────────────────────┘

3.1 保护性 MBR(LBA 0)

GPT 磁盘在 LBA 0 保留了一个特殊的 MBR,称为 Protective MBR,其作用是:

  • 告知不支持 GPT 的旧工具「此磁盘已有分区,请勿误操作」
  • 包含一个类型为 0xEE 的分区项,覆盖整个磁盘
  • 不包含任何实际的引导代码

3.2 GPT 头部(LBA 1)

GPT 头部包含以下关键字段:

字段
大小
说明
签名
8 字节
"EFI PART"
(固定值)
修订版本
4 字节
当前为 1.0
头部大小
4 字节
通常为 92 字节
头部 CRC32
4 字节
头部数据的校验值
当前 LBA
8 字节
本头部所在位置(主头 = 1)
备份头 LBA
8 字节
备份头所在位置(磁盘最后一个扇区)
可用空间起始 LBA
8 字节
分区数据区开始位置
可用空间结束 LBA
8 字节
分区数据区结束位置
磁盘 GUID
16 字节
该磁盘的唯一标识符
分区条目起始 LBA
8 字节
通常为 LBA 2
分区条目数量
4 字节
默认 128
分区条目大小
4 字节
每条 128 字节
分区数组 CRC32
4 字节
分区条目数组的校验值

3.3 分区条目(每条 128 字节)

每个分区条目包含:

字段
大小
说明
分区类型 GUID
16 字节
标识分区用途(见第 4 节)
分区唯一 GUID
16 字节
每个分区独有的标识符
起始 LBA
8 字节
分区开始位置
结束 LBA
8 字节
分区结束位置(含)
属性标志
8 字节
如只读、隐藏、必要等
分区名称
72 字节
UTF-16LE 编码,最多 36 个字符

4. GUID 分区类型

GPT 用 GUID 标识分区用途,以下是常见类型:

分区类型
GUID
说明
EFI 系统分区(ESP)
C12A7328-F81F-11D2-BA4B-00A0C93EC93B
UEFI 引导文件存放位置
Linux 文件系统
0FC63DAF-8483-4772-8E79-3D69D8477DE4
ext4、btrfs 等数据分区
Linux swap
0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
交换分区
Linux /home
933AC7E1-2EB4-4F13-B844-0E14E2AEF915
独立 home 分区
Linux /root (x86-64)
4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
根分区(自动探测)
Microsoft 基本数据
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
NTFS / exFAT 数据分区
Microsoft 保留分区
E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Windows MSR 分区
Windows 恢复环境
DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
WinRE
Apple HFS+
48465300-0000-11AA-AA11-00306543ECAC
macOS 数据分区
Apple APFS
7C3457EF-0000-11AA-AA11-00306543ECAC
macOS 新文件系统
BIOS Boot
21686148-6449-6E6F-744E-656564454649
GRUB 安装目标(BIOS + GPT 场景)

5. GPT 的冗余与数据保护机制

5.1 双份备份

GPT 在磁盘 头部和尾部各存储一份完整的分区表:

  • 主 GPT:位于磁盘起始(LBA 1 + LBA 2–33)
  • 备份 GPT:位于磁盘末尾(倒数 34 扇区 + 最后 1 扇区)

当主 GPT 损坏时,工具可从备份 GPT 恢复。

5.2 CRC32 校验

  • GPT 头部本身有 CRC32 校验,防止静默数据损坏。
  • 分区条目数组也有独立 CRC32 校验。
  • 任何校验失败都会触发从备份恢复的机制。

5.3 分区唯一 GUID

每个分区拥有独立的 GUID,系统通过 GUID(而非磁盘位置)引用分区,分区顺序调整后仍能正确识别。


6. Linux 中操作 GPT

6.1 fdisk(新版支持 GPT)

# 以 GPT 模式操作磁盘sudo fdisk /dev/sda# 常用命令(交互模式内):# g    — 新建 GPT 分区表(清除所有数据!)# n    — 新建分区# t    — 修改分区类型(输入 GUID 类型编号)# p    — 打印分区表# w    — 保存写入

6.2 gdisk(专用 GPT 工具)

sudo gdisk /dev/sda# 交互命令:# o    — 新建 GPT 分区表# n    — 新建分区,可指定起止 LBA 和类型 GUID# c    — 修改分区名称# i    — 显示分区详细信息(含 GUID)# p    — 打印分区表# w    — 保存写入

6.3 parted(支持脚本化操作)

# 新建 GPT 分区表sudo parted /dev/sda mklabel gpt# 创建 EFI 分区(1 MiB 对齐,512 MiB)sudo parted /dev/sda mkpart primary fat32 1MiB 513MiBsudo parted /dev/sda set 1 esp on# 创建根分区sudo parted /dev/sda mkpart primary ext4 513MiB 100%# 查看分区表sudo parted /dev/sda print

6.4 查看分区 GUID

# 查看磁盘和分区 GUIDsudo blkid /dev/sda1sudo sgdisk -i 1 /dev/sda   # 显示分区 1 的详细 GUID 信息# 列出所有分区sudo sgdisk -p /dev/sda

6.5 备份与恢复 GPT

# 备份 GPT 到文件sudo sgdisk --backup=/root/sda-gpt-backup.bin /dev/sda# 从备份恢复 GPTsudo sgdisk --load-backup=/root/sda-gpt-backup.bin /dev/sda# 从备份 GPT 恢复主 GPT(当主表损坏时)sudo gdisk /dev/sda# 输入 r(恢复),然后选择从备份恢复主 GPT

7. Windows 中操作 GPT

7.1 磁盘管理(图形界面)

  1. 按 Win + X → 「磁盘管理」
  2. 右键磁盘标签区域 → 「转换到 GPT 磁盘」(仅对空磁盘有效)
  3. 创建分区时选择「主要分区」

7.2 diskpart(命令行)

diskpart:: 列出磁盘list disk:: 选中磁盘(磁盘 0)select disk 0:: 转换为 GPT(清空磁盘!)convert gpt:: 创建分区create partition efi size=512create partition msr size=128create partition primary:: 查看分区list partition

8. MBR 转 GPT

8.1 无损转换(Linux,使用 gdisk)

# gdisk 打开 MBR 磁盘后,会提示转换sudo gdisk /dev/sda# 若检测到 MBR,按 w 写入即可将 MBR 转为 GPT# 注意:转换后需重新安装引导程序(GRUB)

8.2 无损转换(Windows,使用 MBR2GPT)

:: 验证磁盘是否可以转换MBR2GPT /validate /disk:0 /allowFullOS:: 执行转换MBR2GPT /convert /disk:0 /allowFullOS

注意:

  • MBR2GPT 仅适用于系统盘,需要主板支持 UEFI。
  • 转换后需在 BIOS 中将启动模式切换为 UEFI。

9. 常见问题

问题
原因
解决方法
旧 BIOS 无法从 GPT 磁盘启动
BIOS 不支持 GPT
使用 BIOS Boot 分区 + GRUB,或开启 CSM
工具报「磁盘包含无效 GPT」
GPT 头部 CRC 校验失败
sudo gdisk /dev/sda
,使用恢复菜单修复
分区表丢失
磁盘首扇区被覆盖
从备份 GPT 恢复(磁盘末尾);或使用 TestDisk
Windows 安装报「GPT 样式磁盘不支持」
安装程序以 BIOS 模式启动
重启以 UEFI 模式引导安装 U 盘
Linux 看不到 Windows 数据分区
分区类型 GUID 未识别
修改为 EBD0A0A2(微软基本数据)类型

最新文章

随机文章