gdisk

关注
义项:GPT磁盘分区工具
gdisk

gdisk 是 GPT fdisk 软件包中的文本模式磁盘分区工具,用于创建、修改和修复 GUID 分区表(GPT)磁盘上的分区表结构。它以类似 Linux fdisk 的交互界面工作,支持在不丢失数据的前提下把 MBR 分区盘转换为 GPT,也能反向转换、备份与还原分区表、以及恢复受损的 GPT 数据结构。在 UEFI 固件与 GPT 成为主流分区方案之后,它是 Linux、FreeBSD、macOS 等系统上处理 GPT 磁盘的常用命令行工具之一。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

gdisk 是 GPT fdisk 软件包中的交互式文本模式分区工具,专门用于操作 GUID 分区表(GPT)磁盘,而不是传统的 主引导记录(MBR)分区表[1]。它的功能定位与 Linux 下的 fdisk 类似,但处理对象改成了 GPT,因此常被描述为「面向 GPT 磁盘的类 fdisk 工具」[2]。同名的软件包通常还包含 cgdisk、sgdisk 和 fixparts 等程序,其中 cgdisk 采用基于 curses 的界面,sgdisk 面向脚本调用,fixparts 则只处理 MBR 磁盘[3]。

gdisk 直接读写磁盘上的 GPT 数据结构,既不创建也不修改分区内部的文件系统内容,这一分工使它常与 mkfs、文件系统工具配合使用[3]。

原理

GPT 把磁盘划分为若干逻辑区块(LBA)?的分区布局:第一个扇区(LBA 0)保留给保护性 MBR,用于向后兼容老式工具;LBA 1 存放主 GPT 头;其后的区块存放分区条目数组;磁盘末尾则以相反顺序保存备份的分区条目数组和备份 GPT 头[4]。默认情况下主 GPT 包含 128 个分区条目,每条 128 字节,内含分区类型 GUID、分区唯一 GUID、起止 LBA、属性位和 Unicode 分区名[4]。

GPT 头自身和分区条目数组都用 CRC32 校验和做完整性保护,头中记录着自身位置、另一个头的 LBA、第一个和最后一个可用 LBA,以及分区表的起始位置、条目数量与单条大小[5]。固件、引导程序和操作系统在启动时可依据校验值判断分区表是否受损,并在主表损坏时改用磁盘末尾的备份恢复[5]。gdisk 正是通过解析这些字段来读取布局,并把用户操作转换为对分区条目数组的修改,最后统一写回主、备两份结构[6]。

由于 GPT 用 64 位 LBA 描述位置,分区起止点既可用扇区号给出,也可以用 KiB、MiB、GiB、TiB 或 PiB 为单位指定,并支持以 +/- 前缀表示相对默认范围的偏移[6]。gdisk 内部还把分区类型压缩为两字节代码,由对应的 MBR 类型码乘以 0x0100 得到,例如 Linux swap 在 MBR 中是 0x82,在 gdisk 中即为 0x8200[6]。

发展历程

GPT fdisk 由 Roderick W. Smith 开发,源代码注释显示项目于 2009 年 1 月至 2 月开始编写,首个版本为 0.3.1[7]。2009 年 8 月的 0.3.2 版本说明中,作者仍将其称为早期测试版软件,当时程序只能在低字节序 CPU 上正确运行,也只在 Linux 和 Mac OS X 上编译通过[8]。

2009 年 11 月,gdisk 以 0.5.0 版本进入 Debian 软件仓库的打包流程,当时的说明把它描述为面向 Intel 平台 Linux 的文本模式分区工具[9]。0.6.2 版本加入了 Windows 版本,随后的 0.7.0 版本引入了 fixparts 程序[10]。

此后版本号进入 1.0 系列:1.0.0 于 2015 年前后发布,1.0.5 于 2020 年 2 月发布,1.0.6 和 1.0.7 于 2021 年 1 月和 3 月发布,1.0.10 于 2024 年 2 月发布[11][12]。1.0.5 起放弃了对 UEFI 环境下 gdisk 单独构建的支持,因为该项目自 2016 年后未再维护[13];1.0.7 还加入了 ARM64 架构的 macOS 构建,使相关二进制可在 M1 机器上原生运行[13]。

应用

gdisk 最常见的用途是在 UEFI 引导的机器上建立 GPT 分区表并划分分区。用户以块设备名启动程序后,可用 o 命令清空并新建 GPT,用 n 依次输入分区号、起始扇区和结束扇区来创建分区,用 t 指定类型码,再用 w 写入磁盘[14]。程序在新磁盘上默认按 1 MiB 边界(512 字节扇区的 2048 个扇区)对齐分区,以适配高级格式硬盘、RAID 和固态硬盘的内部结构[15]。

除常规分区编辑外,gdisk 还可把 MBR 分区盘和 BSD disklabel 就地转换为 GPT,或在 gdisk 与 sgdisk 中把 GPT 转回 MBR,整个过程不丢失数据;它也能构造混合 MBR/GPT 布局,让不认识 GPT 的操作系统访问磁盘上的至多 3 个分区[3]。程序另提供备份与恢复能力,可用 sgdisk 把保护性 MBR、主 GPT 头、备份 GPT 头和一份分区表导出为文件,之后再导入还原,或把一块盘的分区布局复制到另一块盘[14]。

在专家的菜单中,gdisk 还提供重新生成磁盘与分区 GUID、调整主分区表与备份分区表位置、重算保护性 MBR 或混合 MBR 中的 CHS 值、修改扇区对齐值等操作[15]。校验命令 v 用于检查分区表的一致性,便于在出现异常时定位问题[6]。

局限

gdisk 不具备文件系统层面的感知能力,不能调整分区内文件系统的大小,也不能在创建分区的同时顺带建立文件系统,这些工作要交给 GParted 一类工具[3]。它本身也没有图形界面版本,交互只能通过命令行完成[3]。

分区表的改写本身带有风险。早期版本的文档即指出,gdisk 会把 MBR 磁盘自动转换为 GPT 形式,因此在仅支持 BIOS 引导的系统上误用可能导致难以恢复的启动问题[10]。作者也说明该项目虽自 2009 年起持续维护,但分区软件难以保证完全没有缺陷,尤其是 2 TiB 以上的大容量磁盘和特殊环境中的使用[16]。

在功能覆盖上,gdisk 处理的是 GPT 分区表本身,旧式的 MBR 修复任务由其同包的 fixparts 承担,后者可清除残留的 GPT 数据、修正尺寸错误的扩展分区、调整主分区与逻辑分区状态,但不支持新建分区[3]。

参见

  • GPT —— gdisk 操作的分区表格式,定义了磁盘上的分区布局与校验方式。

  • MBR —— 较早的分区表标准,gdisk 可与之相互转换。

  • fdisk —— gdisk 在界面与用法上参照的经典分区工具。

  • UEFI —— 与 GPT 配合使用的固件接口标准。

  • 分区对齐 —— gdisk 在创建分区时默认处理的性能相关设置。

参考资料

  1. Package: gdisk (1.0.10-3) [引用日期2026-10-14]
  2. gdisk-1.0.10-3.fc42 | Build Info [引用日期2026-10-14]
  3. replicant.us 上的网页 [引用日期2026-10-14]
  4. guid-partition-table_disk-partitions [引用日期2026-10-14]
  5. CN114816542B(PDF) [引用日期2026-10-14]
  6. gdisk [引用日期2026-10-14]
  7. gdisk/gdisk.cc at master · deepin-community/gdisk · GitHub [引用日期2026-10-14]
  8. gdisk [引用日期2026-10-14]
  9. bugreport [引用日期2026-10-14]
  10. Cross Reference: /external/gptfdisk/README.Windows [引用日期2026-10-14]
  11. File: changelog [引用日期2026-10-14]
  12. gptfdisk-1.0.10 [引用日期2026-10-14]
  13. NEWS [引用日期2026-10-14]
  14. GPT fdisk [引用日期2026-10-14]
  15. gdisk [引用日期2026-10-14]
  16. github.com 上的网页 [引用日期2026-10-14]
词条评价
词条统计

浏览次数:2 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T20:03:05Z

历史版本

本条目引用的词条
主引导记录 mkfs UEFI GPT MBR fdisk 分区对齐