gdisk 是 GPT fdisk 软件包中的文本模式磁盘分区工具,用于创建、修改和修复 GUID 分区表(GPT)磁盘上的分区表结构。它以类似 Linux fdisk 的交互界面工作,支持在不丢失数据的前提下把 MBR 分区盘转换为 GPT,也能反向转换、备份与还原分区表、以及恢复受损的 GPT 数据结构。在 UEFI 固件与 GPT 成为主流分区方案之后,它是 Linux、FreeBSD、macOS 等系统上处理 GPT 磁盘的常用命令行工具之一。
定义
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]。
参见
参考资料
- Package: gdisk (1.0.10-3) [引用日期2026-10-14]
- gdisk-1.0.10-3.fc42 | Build Info [引用日期2026-10-14]
- replicant.us 上的网页 [引用日期2026-10-14]
- guid-partition-table_disk-partitions [引用日期2026-10-14]
- CN114816542B(PDF) [引用日期2026-10-14]
- gdisk [引用日期2026-10-14]
- gdisk/gdisk.cc at master · deepin-community/gdisk · GitHub [引用日期2026-10-14]
- gdisk [引用日期2026-10-14]
- bugreport [引用日期2026-10-14]
- Cross Reference: /external/gptfdisk/README.Windows [引用日期2026-10-14]
- File: changelog [引用日期2026-10-14]
- gptfdisk-1.0.10 [引用日期2026-10-14]
- NEWS [引用日期2026-10-14]
- GPT fdisk [引用日期2026-10-14]
- gdisk [引用日期2026-10-14]
- github.com 上的网页 [引用日期2026-10-14]