2023年11月25日发(作者:)
硬盘MBR和GPT分区详解
目前磁盘分区有两种形式:GPT分区和MBR分区。MBR相比而言比较常见,大多数
磁盘都是采用这种分区形式。MBR分区和GPT分区的区别在于:MBR最多只支持4个主
分区,GPT能够支持128个主分区。然而GPT分区形式在重装系统需要主板的EFI支持,
所以导致出现上面的这种情况。因此解决的办法就是将分区形式转换为MBR分区形式。
但是在转换之前必须要做好数据备份,将磁盘里重要的东西全部拷出来,因为只有整个
磁盘全部为空时,才能够进行转换。
传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR
扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、
文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区
数目(4个字节)等内容。由于MBR扇区只有64个字节用于分区表,所以只能记录4个分
区的信息。这就是硬盘主分区数目不能超过4个的原因。后来为了支持更多的分区,引
入了扩展分区及逻辑分区的概念。但每个分区项仍用16个字节存储。GPT磁盘是指使用
GUID分区表的磁盘,是源自EFI标准的一种较新的磁盘分区表结构的标准。与普遍使用
的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。
MBR的全称是Master Boot Record(主引导记录),MBR早在1983年
IBM PC DOS 2.0中就已经提出。之所以叫“主引导记录”,是因为它是存在于驱动
器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和
驱动器的逻辑分区信息。
主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表
DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,偏移地址
0000H--0088H),它负责从活动分区中装载,并运行系统引导程序;第二部分是
Partition table区(DPT分区表),占64个字节;第三部分是Magic number,占2
个字节。
MBR扇区代码
在DPT共64个字节中,以16个字节为分区表项单位描述一个分区的属性。也就是说,第一个分
区表项描述一个分区的属性,一般为基本分区。第 二个分区表项描述除基本分区外的其余空间,一
般而言,就是我们所说的扩展分区。这部分的大体说明见表1。
DPT代码分析
注:上表中的超过1字节的数据都以实际数据显示,就是按高位到地位的方式显示。存储时是按
低位到高位存储的。两者表现不同,请仔细看清楚。以后出现的表, 图均同。
也可以在winhex中看到这些参数的意义:
说明: 每个分区表项占用16个字节,假定偏移地址从0开始。如图3的分区表项3。分区表项
4同分区表项3。
1、0H偏移为活动分区是否标志,只能选00H和80H。80H为活动,00H为非活动。其余值对
microsoft而言为非法值。
2、重新说明一下(这个非常重要):大于1个字节的数被以低字节在前的存储格式格式(little
endian format)或称反字节顺序保存下来。低字节在前的格式是一种保存数的方法,这样,最低位的
字节最先出现在十六进制数符号中。例如,相对扇区数字段的值 0x3F000000的低字节在前表示为
0x0000003F。这个低字节在前的格式数的十进制数为63。
3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。
有时候我们分区是输入分区的大小为7000M,分出来 却是6997M,就是这个原因。 偏移2H和偏
移6H的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit),以偏移6H为例,其低6位用作扇
区数的二进制表示。其高两位做柱 面数10位中的高两位,偏移7H组成的8位做柱面数10位中的
低8位。由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0开始编号,扇区 从
1开始编号,所以最多只能表示1024个柱面×63个扇区×256个磁头×512byte=8455716864byte。即
通常的8.4GB(实际上 应该是7.8GB左右)限制。实际上磁头数通常只用到255个(由汇编语言的寻
址寄存器决定),即使把这3个字节按线性寻址,依然力不从心。 在后来的操作系统中,超过8.4GB
的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移CH~偏移FH共4个字节32位线性扇
区地址来表示分区所 占用的扇区总数。可知通过4个字节可以表示2^32个扇区,即2TB=2048GB,
目前对于大多数计算机而言,这已经是个天文数字了。在未超过 8.4GB的分区上,C/H/S的表示方
法和线性扇区的表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即使不
协调,也以线性寻址为 准。(可能在某些系统中会提示出错)。超过8.4GB的分区结束C/H/S一般填
充为FEH FFH FFH。即C/H/S所能表示的最大值。有时候也会用柱面对1024的模来填充。不过这
几个字节是什么其实都无关紧要了。
虽然现在的系统均采用线性寻址的方式来处理分区的大小。但不可跨柱面的原则依然没变。本
分区的扇区总数加上与前一分区之间的保留扇区数目依然必 须是柱面容量的整数倍。(保留扇区中
的第一个扇区就是存放分区表的MBR或虚拟MBR的扇区,分区的扇区总数在线性表示方式上是不
计入保留扇区的。如果是 第一个分区,保留扇区是本分区前的所有扇区。
附:分区表类型标志如图4
3.2 扩展分区
扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot Record,
EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该
扇区的标签。扩展引导记录将记录只包含扩展分区中每个 逻辑驱动器的第一个柱面的第一面的信
息。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。但是,如果磁盘上没有扩展分区,
那么就不会有扩展引导记 录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身
的引导扇区。第二项指向下一个逻辑驱动器的EBR。如果不存在进一步的逻辑驱动器,第 二项就
不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区
表的第一项会指向它本身的引导扇区。第二个逻辑驱动器的 扩展分区表的第二项指向下一个逻辑驱
动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。
通过一幅4分区的磁盘结构图可以看到磁盘的大致组织形式。如图5
关于扩展分区,如图6所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。该图显示了
一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后 一个逻辑驱动器之间在扩展分
区表中的差异。
除了扩展分区上最后一个逻辑驱动器外,表2中所描述的扩展分区表的格式在每个逻辑驱动器中
都是重复的:第一个项标识了逻辑驱动器本身的引导扇区,第二个项 标识了下一个逻辑驱动器的
EBR。最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。最后一个扩展分区表的第二个
项到第四个项被使用。
扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位
移的字节数。总扇区数字段中的数是指组成该逻辑驱动器的扇区数 目。总扇区数字段的值等于从扩
展分区表项所定义的引导扇区到逻辑驱动器末尾的扇区数。
MBR分区表系统
所谓启动加载器,是一小段代码,用于加载驱动器上其他分区上更大的加载器。如
果你安装了Windows,Windows启动加载器的初始信息就放在这个区域里——如果MBR
的信息被覆盖导致Windows不能启动,你就需要使用Windows的MBR修复功能来使其恢
复正常。如果你安装了Linux,则位于MBR里的通常会是GRUB加载器。
分区表偏移地址为01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项
1、分区项2、分区项3、分区项4,分别对应MBR的四个主分区。
Magic number也就是结束标志字,偏移地址01FE--01FF的2个字节,固定为55AA,
如果该标志错误系统就不能启动。
1、MBR区
MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。不过,在总
共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了 DPT(Disk
Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的
主引导扇区。
主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查
分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分 区上的操作系统,并将控制权
交给启动程序。MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬
盘引导程序也是可以改变 的,从而实现多系统共存。
下面,我们以一个实例让大家更直观地来了解主引导记录:
例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 在这里我们可以看到,最前面的“80”是
一个分区的激活标志,表示系统可引导;“01 01 00”表示分区开始的磁头号为01,开始的扇区号为
01,开始的柱面号为00;“0B”表示分区的系统类型是FAT32,其他比较常用的有 04(FAT16)、
07(NTFS);“FE BF FC”表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱
面号为764;“3F 00 00 00”表示首扇区的相对扇区号为63;“7E 86 BB 00”表示总扇区数为
12289622。
2、DBR区
DBR(Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1扇
区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为 BPB(Bios
Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,
判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为 例,即是Io.sys和
Msdos.sys)。如果确定存在,就把它读入内存,并把控制权 交给该文件。BPB参数块记录着本
分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元
的大小等重要参数。DBR 是由高级格式化程序(即Format.com等程序)所产生的。
3、FAT区
在DBR之后的是我们比较熟悉的FAT(File Allocation Table文件分配表)区。在解释文件分配
表的概念之前,我们先来谈谈簇(Cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是
簇。一般情 况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、
8、16、32、64…… 同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会
分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保 存着段与段
之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。
为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用
的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一 簇,则要指明本簇无后继簇。这些
都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重
要性,所以FAT有一个备 份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项
都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相 应的项中标
为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用
的字节数也要与总簇数相适应,因为其中需要存放 簇号。FAT的格式有多种,最为常见的是FAT16
和FAT32。
4、DIR区
DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下 每
个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结
合FAT表就可以知道文件在硬盘中的具体位置和大小了。
5、数据(DATA)区
数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。
MBR最大支持2.2TB磁盘,它无法处理大于2.2TB容量的磁盘。MBR还只支持最多4
个主分区——如果你想要更多分区,你需要创建所谓“扩展分区”,并在其中创建逻辑
分区。
MBR分区方案不是用得好好的吗?为什么要提出新的方案呢?那就让我们看看MBR分
区方案有什么问题。前面已经提到了主分区数目不能超过4个的限制,这是其一,很多
时候,4个主分区并不能满足需要。另外最关键的是MBR分区方案无法支持超过2TB容
量的磁盘。因为这一方案用4个字节存储分区的总扇区数,最大能表示2的32次方的
扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。磁盘容量超过2TB以
后,分区的起始位置也就无法表示了。在硬盘容量突飞猛进的今天,2TB的限制将很快
被突破。由此可见,MBR分区方案已经无法满足需要了。
GPT的全称是Globally Unique Identifier Partition Table,意即GUID分
区表,它的推出是和UEFI BIOS相辅相成的,鉴于MBR的磁盘容量和分区数量已经不
能满足硬件发展的需求,GPT首要的任务就是突破了2.2T分区的限制,最大支持18EB
的分区。
GPT分区表系统
而在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支
持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘
分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生
成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。
而在安全性方面,GPT分区表也进行了全方位改进。在早期的MBR磁盘上,分区和
启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,GPT
在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部
分信息。GPT还为这些信息保存了循环冗余校验码(CRC)以保证其完整和正确——如果
数据被破坏,GPT会发觉这些破坏,并从磁盘上的其他地方进行恢复。
UEFI BIOS详解
UEFI的全称是Unified Extensible Firmware Interface,意即统一可扩展固件接
口,它是基于EFI 1.10标准为基础发展而来,值得注意的是在UEFI正式确立之前,Intel
就开始积极推进传统BIOS的升级方案,并最终确立了过渡方案EFI标准,直到2007年
Intel将EFI标准的改进与完善工作交给Unified EFI Form进行全权负责,EFI标准则
正式更名为UEFI。
相比传统BIOS,UEFI最大的几个区别在于:
1、编码99%都是由C语言完成;
2、一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式;
3、将不支持X86实模式,而直接采用Flat mode(也就是不能用DOS了,现在有
些 EFI 或 UEFI 能用是因为做了兼容,但实际上这部分不属于UEFI的定义了);
4、输出也不再是单纯的二进制code,改为Removable Binary Drivers;
5、OS启动不再是调用Int19,而是直接利用protocol/device Path;
6、对于第三方的开发,前者基本上做不到,除非参与BIOS的设计,但是还要受到
ROM的大小限制,而后者就便利多了。
7、弥补BIOS对新硬件的支持不足的问题。
UEFI和GPT是相辅相成的,二者缺一不可,要想使用GPT分区表则必须是UEFI BIOS
环境。UEFI于用户而言最典型的特征就是使用了图形化界面,虽然还未达到操作系统界
面的图形交互功能,但人性化的界面、鼠标的操作,已经将BIOS变得非常易用,对于
不少电脑初级用户来说也可以很好的查看和设置BIOS的相关选项和功能。
除了图形化界面,UEFI相比传统BIOS,还提供了文件系统的支持,它能够直接读
取FAT、FAT32分区中的文件,例如华硕、华擎等主板在UEFI BIOS环境下更新BIOS就
可以直接读取U盘中的BIOS及其他文件,另外新的UEFI主板基本都提供了截屏功能,
这些截屏图片都可以存储在U盘当中。
UEFI还有一个重要特性就是在UEFI下运行应用程序,这类程序文件通常以efi结
尾。利用UEFI可以直接识别FAT分区中的文件,又有可直接在其中运行应用程序。我
们就可以将Windows安装程序做成efi类型应用程序,然后把它放到任意FATA分区中
直接运行即可。
GPT分区表
GUID分区表(简称GPT。使用GUID分区表的磁盘称为GPT磁盘)是源自EFI标准的
一种较新的磁盘分区表结构的标准。与普遍使用的主引导记录(MBR)分区方案相比,GPT
提供了更加灵活的磁盘分区机制。它具有如下优点:
1、支持2TB以上的大硬盘。
2、每个磁盘的分区个数几乎没有限制。为什么说"几乎"呢?是因为Windows系统最
多只允许划分128个分区。不过也完全够用了。
3、分区大小几乎没有限制。又是一个"几乎"。因为它用64位的整数表示扇区号。
夸张一点说,一个64位整数能代表的分区大小已经是个"天文数字"了,若干年内你都
无法见[1] 到这样大小的硬盘,更不用说分区了。
4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表。其中一份
被破坏后,可以通过另一份恢复。
5、每个分区可以有一个名称(不同于卷标)。
既然GUID分区方案具有如此多的优点,在分区时是不是可以全部采用这种方案呢?
不是的。并不是所有的Windows系统都支持这种分区方案。 请看下表:
Windows种类 能否读写GPT磁盘 能否从GPT磁盘启动
32位 Windows XP 不能。只能看到一个Protective MBR分区 不支持
Windows 2000/NT/9x 不能。只能看到一个Protective MBR分区 不支持
64位 Windows XP 能 只有基于Itanium的系统才能从GPT磁盘启动
Windows Server 2003 SP1及
以上版本
Windows Vista 能 只有基于 EFI 的系统支持从GPT磁盘启动
Windows Server 2008 能 只有基于 EFI 的系统支持从GPT磁盘启动
Windows 7 能 只有基于 EFI 的系统支持从GPT磁盘启动
Windows 8/8.1 能 只有基于 EFI 的系统支持从GPT磁盘启动
能 只有基于Itanium的系统才能从GPT磁盘启动
多数的个人电脑系统还无法完美支持GPT磁盘。但是这并不意味着我们不需要了解
GUID分区方案。别忘了,硬件的发展速度总是令人吃惊的。1.5TB的硬盘已经大量上市,
2TB以上容量的硬盘很快就会普及,基于EFI的主板也正在销售。GUID分区方案终将成
为主流 。
Microsoft 保留分区 (MSR)
Microsoft 保留分区 (MSR) 在每个磁盘驱动器上保留空间以供以后的操作系
统软件使用。GPT 磁盘不支持隐藏的扇区。以前使用隐藏扇区的软件组件现在为特定于
组件的分区分配部分 MSR。例如,将基本磁盘转换为动态磁盘会导致该磁盘的 MSR 减
少,由新创建的分区保留动态磁盘数据库。
每个 GPT 磁盘都必须包含一个 MSR。磁盘上分区的顺序应该为 ESP(如果有)、
OEM(如果有)、MSR,后跟主数据分区。非常重要的一点是:一定要在主数据分区之前
创建 MSR。 必须在磁盘分区信息第一次写入驱动器的时候创建 MSR。如果分区由制造
商进行,那么制造商必须同时创建 MSR。如果分区由 Windows 进行,那么在安装时创
建 MSR。
保护MBR包含一个DOS分区表(LBA0),只包含一个类型值为0xEE的分区项,
在小于2TB的磁盘上,大小为整个磁盘;在更大的磁盘上,它的大小固定为
2TB。它的作用是阻止不能识别GPT分区的磁盘工具试图对其进行分区或格式
化等操作,所以该扇区被称为“保护MBR”。实际上,EFI根本不使用这个分区
表。
ESP系统分区
在可扩展固件接口 (EFI) 和 UEFI 系统上,这也可称为 EFI 系统分区或 ESP。该
分区通常存储在主硬盘驱动器上。电脑启动到该分区。
该分区的最小规格为 100 MB,必须使用 FAT32 文件格式进行格式化。
该分区由操作系统加以管理,不应含有任何其他文件,包括 Windows RE 工具。
Microsoft® 保留分区 (MSR)
MSR 大小为 128 MB。
建议将MSR添加到每个驱动器以进行驱动器管理。MSR是不能接收分区ID的保留
分区。它无法存储用户数据。
其他实用程序分区
任何其他实用程序分区必须位于 Windows、数据和恢复映像分区之前。这可允许最
终用户执行调整 Windows 分区大小或回收恢复映像分区等操作,而不影响系统实用程
序。
Windows 分区和其他数据分区
对于 64 位版本,该分区的驱动器空间必须至少为 20 千兆字节 (GB),对于
32 位版本,则为 16 GB。
该分区必须采用 NTFS 文件格式进行格式化。
用户完成全新安装体验 (OOBE) 后,该分区必须有足够的可用空间,即是 10
GB。
若要使用一键重置的“恢复电脑”功能,分区可能需要额外的可用空间。
恢复映像分区
如使用,该分区包含 Windows 恢复映像 ()。
该分区的大小必须包含 Windows 恢复映像(至少为 2 GB)的空间,此外,还
要有足够的可用空间以便备份实用程序捕获到该分区:
它必须至少有 320 MB 的可用空间。
我们建议应至少具有 1 GB 的可用空间。
建议你将该分区放置在所有三个其他分区之后。这可让最终用户回收恢复映像
分区使用的空间,而不影响其他系统实用程序。
EFI部分
EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域。
分区表头
分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位
Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个
项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分
区项的大小)
分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总
是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着
它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验
值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整
个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以
直接使用16进制编辑器修改。
起始于磁盘的LBA1,通常也只占用这个单一扇区。其作用是定义分区表的位置和
大小。GPT头还包含头和分区表的校验和,这样就可以及时发现错误。
EFI信息区数据结构(分区表头)
EFI信息区位于磁盘的1号扇区(LBA1),也称为GPT头。其具体结构如下表所示
EFI信息区结构
字节偏移量
(十六进制)
00~07 8 GPT头签名“45 46 49 20 50 41 52 54”(ASCII码为“EFI PART”)
08~0B 4 版本号,目前是1.0版,其值是“00 00 01 00”
0C~0F 4 GPT头的大小(字节数),通常为“5C 00 00 00”(0x5C),也就是92字节。
10~13 4 GPT头CRC校验和(计算时把这个字段本身看做零值)
14~17 4 保留,必须为“00 00 00 00”
18~1F 8 EFI信息区(GPT头)的起始扇区号,通常为“01 00 00 00 00 00 00 00”,也就是LBA1。
20~27 8
28~2F 8 GPT分区区域的起始扇区号,通常为“22 00 00 00 00 00 00 00”(0x22),也即是LBA34。
30~37 8 GPT分区区域的结束扇区号,通常是倒数第34扇区。
38~47 16 磁盘GUID(全球唯一标识符,与UUID是同义词)
48~4F 8 分区表起始扇区号,通常为“02 00 00 00 00 00 00 00”(0x02),也就是LBA2。
50~53 4 分区表总项数,通常限定为“80 00 00 00”(0x80),也就是128个。
54~57 4 每个分区表项占用字节数,通常限定为“80 00 00 00”(0x80),也就是128字节。
58~5B 4 分区表CRC校验和
5C~* * 保留,通常是全零填充
字节数 说明[整数皆以little endian方式表示]
EFI信息区(GPT头)备份位置的扇区号,也就是EFI区域结束扇区号。通常是整个磁盘
最末一个扇区。
GPT分区表头的格式
起始偏移
字节量
08签名("EFI PART")
84修订
124分区表头的大小
164
204保留,必须是 0
248当前LBA(这个分区表头的位置)
328备份LBA(另一个分区表头的位置)
408第一个可用于分区的LBA(主分区表的最后一个LBA + 1)
488最后一个可用于分区的LBA(备份分区表的第一个LBA - 1)
5616硬盘GUID(在类UNIX系统中也叫UUID)
728分区表项的起始LBA(在主分区表中是2)
内容
分区表头(92个字节)的CRC32校验,在计算时,先把这个字段写作0处理,然后计算
出所有分区表项的CRC32校验后再计算这个CRC32
804分区表项的数量(windows是128,没有这么多也先占着空间)
844一个分区表项的大小(通常是128)
884分区表项的CRC32校验(计算的是所有分区表项的检验和即128*128字节)
保留,剩余字节必须是0(420字节针对512字节的LBA硬盘)92420
注:第80位起,分区表项的数量。该值一直为128,即使分区没有128项,也先写入128,在计算
分区项CRC32校验时应该注意这点。
分区表项 (LBA 2–33)
GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类
型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。
接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID
指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名
字和属性。
分区表区域包含分区表项。这个区域由GPT头定义,一般占用磁盘LBA2~LBA33
扇区。分区表中的每个分区项由起始地址、结束地址、类型值、名字、属性标志、GUID
值组成。分区表建立后,128位的GUID对系统来说是唯一的。
分区项
分区项结构
相对字节偏移量
(十六进制)
00~0F 16 用GUID表示的分区类型
10~1F 16 用GUID表示的分区唯一标示符
20~27 8 该分区的起始扇区,用LBA值表示。
28~2F 8 该分区的结束扇区(包含),用LBA值表示,通常是奇数。
30~37 8 该分区的属性标志
字节数 说明[整数皆以little endian方式表示]
38~7F 72 UTF-16LE编码的人类可读的分区名称,最大32个字符。
注意,扇区尺寸不能假定为512字节,也就是说,一个扇区内可能存放4个以上的
分区项,也可能只存放一个分区项的一部分。也就是说,除了头两个扇区(LBA 0 和 LBA
1)之外,GPT规范仅定义了数据结构的尺寸,而不关心使用多少个扇区进行存储。
GPT分区表项的格式
起始字节偏移量内容
016分区类型GUID
1616分区GUID
328起始LBA(小端格式)
408末尾LBA
488属性标签
5272分区名
注:1.类型GUID为固定值,查阅资料可得。下图列举Windows、Linux下常见几种:
以Windows下基本数据分区为例说明:EBD0A0A2-B9E5-4433-87C0-68B6B72699C7。上述表示形式
采用小端表示,其16位的串行表示为:A2A0D0EBE5B9334487C068B6B72699C7,即前三部分倒序表
示。
2.分区属性:低位4字节表示与分区类型无关的属性,高位4字节表示与分区类型有关的属性。具
体见下图:
分区类型
操作系统 GUID[little endian] 含义
None 00000000-0000-0000-0000 未使用
None 024DEE41-33E7-11D3-9D69-0008C781F39F MBR分区表
EFI系统分区[EFI System partition (ESP)],必须
是VFAT格式
扩展boot分区,必须是VFAT格式 None BC13C2FF-59E6-4262-A352-B275FD6F7172
BIOS引导分区,其对应的ASCII字符串是
"Hah!IdontNeedEFI"。
Intel Fast Flash (iFFS) partition (for Intel
Rapid Start technology)
微软保留分区 Windows E3C9E316-0B5C-4DB8-817D-F92DF00215AE
基本数据分区 Windows EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Windows恢复环境 Windows DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
数据分区。Linux曾经使用和Windows基本数据分区
Linux 0FC63DAF-8483-4772-8E79-3D69D8477DE4
相同的GUID。
这个新的GUID是由 GPT fdisk 和 GNU Parted 开发
者根据Linux传统的"8300"分区代码发明的。
x86根分区 (/) 这是systemd的发明,可用于无fstab
时的自动挂载
x86-64根分区 (/) 这是systemd的发明,可用于无
fstab时的自动挂载
ARM32根分区 (/) 这是systemd的发明,可用于无
fstab时的自动挂载
AArch64根分区 (/) 这是systemd的发明,可用于无
fstab时的自动挂载
None C12A7328-F81F-11D2-BA4B-00A0C93EC93B
None 21686148-6449-6E6F-744E-656564454649
None D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
Linux 44479540-F297-41B2-9AF7-D131D5F0458A
Linux 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
Linux 69DAD710-2CE4-4E3C-B16C-21A1D49ABED3
Linux B921B045-1DF0-41C3-AF44-4C6F280D3FAE
Linux 3B8F8425-20E0-4F3B-907F-1A25A76F98E8
服务器数据分区(/srv) 这是systemd的发明,可用于
无fstab时的自动挂载
HOME分区 (/home) 这是systemd的发明,可用于无
fstab时的自动挂载
交换分区(swap) 不是systemd的发明,但同样可用于
无fstab时的自动挂载
RAID分区 Linux A19D880F-05FC-4D3B-A006-743F0F84911E
逻辑卷管理器(LVM)分区 Linux E6D6D379-F507-44C2-A23C-238F2A3DF928
保留 Linux 8DA63339-0007-60C0-C436-083AC8230908
Linux 933AC7E1-2EB4-4F13-B844-0E14E2AEF915
Linux 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
Microsoft还进一步对分区的属性进行了细分:低位4字节表示与分区类型无关的
属性,高位4字节表示与分区类型有关的属性。Microsoft目前使用了下列属性:
分区属性
Bit 解释
0 系统分区(磁盘分区工具必须将此分区保持原样,不得做任何修改)
1 EFI隐藏分区(EFI不可见分区)
2 传统的BIOS的可引导分区标志
60 只读
62 隐藏
63 不自动挂载,也就是不自动分配盘符
GPT分区
最大的区域,由分配给分区的扇区组成。这个区域的起始和结束地址由GPT头定义。
备份区
备份区域位于磁盘的尾部,包含GPT头和分区表的备份。它占用GPT结束扇区和
EFI结束扇区之间的33个扇区。其中最后一个扇区用来备份1号扇区的EFI信息,其余
的32个扇区用来备份LBA2~LBA33扇区的分区表。
对硬盘进行GPT分区操作。
我们的电脑想要快速开机,需要具备三个条件:第一是主板支持UEFI,二是系统
支持UEFI(Win8),最后就硬盘需要采用GPT分区。GPT还有另一个名字叫做GUID分
区表格式,我们在许多磁盘管理软件中能够看到这个名字。而GPT也是UEFI所使用的
磁盘分区格式。GPT分区的一大优势就是针对不同的数据建立不同的分区,同时为不同
的分区创建不同的权限。就如其名字一样,GPT能够保证磁盘分区的GUID唯一性,所以
GPT不允许将整个硬盘进行复制,从而保证了磁盘内数据的安全性。想比与我们目前通
常使用的MBR分区,GPT本身就有着得天独厚的优势。
准备工作,下载DiskGenius 3.7专业版(必须要专业版,免费版无磁盘分区形式
转换功能)。DiskGenius从3.1版本开始支持GUID分区表。这是国内第一款支持GUID
分区表的分区软件。DiskGenius提供了GUID分区的建立、删除、格式化、已丢失分区
恢复、文件恢复、分区表备份、GUID分区表格式与MBR分区表格式之间的相互转换(无
误转换)等功能。
在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储
着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼
容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
跟现代的MBR一样,GPT也使用逻辑区块地址(LBA)取代了早期的CHS寻址方式。
传统MBR信息存储于LBA 0,GPT头存储于LBA 1,接下来才是分区表本身。64位Windows
操作系统使用16,384字节(或32扇区)作为GPT分区表,接下来的LBA 34是硬盘上
第一个分区的开始。
1.用”电脑店U盘启动制作工具“中的”一键制作U盘启动“功能制作一个简单的
U盘启动,制作好之后,U盘里有2个文件夹,将DiskGenius 3.7放到”我的工具“这
个文件夹中。
2.将U盘插到电脑上,重启电脑,将BIOS启动方式设置为”U盘启动“。
3.进入系统之后,运行DiskGenius 3.7,将所有的分区进行格式化,然后再删除分
区。
4.将分区形式转换为MBR。
5.快速分区。
然后就可以直接重装系统了。


发布评论