Skip to content

MBR区

MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区

MBR 的结构 MBR 扇区位于整个硬盘的第一个扇区:按照C/H/S地址描述,即0柱面0磁头1扇区;按照LBA地址描述即0扇区。它是一个特殊而重要的扇区在总共512字节的MBR扇区中,由四部分结构组成:

(1)引导程序 引导程序占用其中的前440字节,其地址在偏移0~偏移1B7H处

(2)Windows 磁盘签名 Windows磁盘标签占用引导程序后的4字节,其地址在偏移1B8H~偏移1BBH处是 Windows 系统对硬盘初始化时写入的一个磁盘标签。 (3)分区表 偏移1BEH~偏移1FDH的64字节为DPT(Disk Partition Table,硬盘分区表),这是MBR中非常重要的一个结构。 (4)结束标志 扇区最后的两个字节“55AA”(偏移1FEH~偏移1FFH)是MBR的结束标志

用 WinHex 査看一块硬盘的 MBR扇区,其结构如图所示、

每个分区表项中相对应的各个字节的含义都是一样的。下面以第一个主磁盘分区的分区表项为例,说明其各字节的含义,这部分的具体含义见表

下面对一些重要的信息作进一步的解释:

①分区表项的第一个字节为分区的引导标志,只能是00H和80H。80H为可引导的活动分区,00H为不可引导的非活动分区。其余值对Microsoft而言为非法值。

②再重复非常重要的一点:大于1字节的数值被以低字节在前的存储格式(LittleEndian)顺序保存下来。例如,“本分区之前使用的扇区数”字段的值 3F000000H 就是Little Endian格式的,按照习惯的高位在前的方式表示为0000003FH,这个数值的十进制值为 63。 ③“本分区之前使用的扇区数”就是该分区的相对起始扇区号,是以LBA值来表示的。这个值也可以称为隐藏扇区数。 ④)系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时分区时输入分区的大小为7000MB,结果分出来却是6997MB,就是这个原因。 ⑤分区表项的第三和第四个字节的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit)。以“起始扇区号”为例,其低6位用作扇区数的二进制表示,高两位用做柱面数10位中的高两位。由此可知,实际上用这种方式表示的分区容量是有限的,面和磁头从0开始编号,扇区从1开始编号,所以最多只能表示1024个柱面x63个扇区x256个磁头x512Byte=8455716864Byte,即通常的8.4GB(实际上应该是7.8GB左右)限制。实际上磁头数通常只用到255个(由汇编语言的寻址寄存器决定),即使把这3字节按线性寻址,依然力不从心。在后来的操作系统中,超过8.4GB的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移0CH~偏移0FH共4字节32位线性扇区地址来表示分区所占用的扇区总数。可知通过4字节可以表示232个扇区,即2TB=2048GB,目前对于大多数计算机而言,这么大的分区已经够用了。在未超过8.4GB 的分区上,CH/S 的表示方法和线性扇区的表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即使不协调,也以线性寻址为准。超过8.4GB的分结CHS般填充为FEHFFH FFH,即 C//S 所能表示的最大值。不过这几个字节是什么其实都无关紧要了

⑥ 虽然现在的系统均采用线性寻址的方式来处理分区的大小,但不可跨柱面的原则依然没变。本分区的扇区总数加上与前一分区之间的保留扇区数目依然必须是柱面容量的整数倍。 ⑦)偏移 01C2H处表示该分区的类型,它是操作系统管理分区、组织分区的方式。 下面给出一些常见的分区类型

07---NTFS/EXFAT

0B/0C-----FAT32

扩展分区的结构分析

由于MBR仅仅为分区表保了64字节的存储空间,而每个分区的参数占据16字节,所以MBR扇区中总计可以存储4个分区表项的数据。如果说逻辑磁盘就是分区,则硬盘最多只能分出4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个用来定义分区的参数的指针,这种指针结构形成一个单向链表。这样在主引导扇区中除了主磁盘分区外,仅需要存储一个被称为扩展分区的分区信息,通过这个扩展分区的信息就可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。 提示:无论系统中建立多少个逻辑磁盘,在主引导扇区中通过扩展分区参数就可以逐个找到每一个逻辑磁盘。

扩展分区中的每个逻辑驱动器的分区信息都存在一个类似于MBR的扩展引导记录(Extended Boot Record,EBR)中,如图4-23所示,扩展引导记录包括分区表和结束标志“55 AA”,没有引导代码部分。 EBR 中分区表的第一项描述第一个逻辑驱动器,第二项指向下一个逻辑驱动器的EBR。如果不存在下一个逻辑驱动器,第二项就不需要使用。其结构如图 所示