博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MBR详解

Posted on 2018-03-23 19:31  (︶O︶)  阅读(6139)  评论(0编辑  收藏  举报

我们通常对磁盘分区时,都会涉及到MBR和GPT。MBR和GPT都是磁盘分区的类型,由于以前的硬盘只有几个GB,几十个GB,几百个GB,使用MBR类型分区已经足够。但是近些年来,硬盘容量的发展速度迅速,已经达到2TB以上。这时,使用MBR分区将不能满足要求,至于为什么不能满足,请看下文。

我们可以使用WinHex打开一个磁盘,本磁盘共有4个分区,第1个是主分区,第二个是主分区(里面含有系统),第三个是逻辑分区,第四个是主分区。

磁盘的第1个扇区叫做MBR扇区,一共有512B,主要有3个部分,引导信息、分区表、结束标志。

1. 引导信息

上图中0~0x1BD即为引导程序,占扇区前446字节。计算机在上电完成BIOS自检后,会将该主引导扇区加载到内存中并执行前面446字节的引导程序,引导程序首先会在分区表中查找活动分区,若存在活动分区,则根据活动分区的偏移量找到该活动分区上的引导扇区的地址,并将该引导扇区加载到内存中,同时检查该引导扇区的有效性,然后根据该引导扇区的规则去引导操作系统。在一些非启动磁盘上,MBR引导代码可能都是0,这对磁盘使用没有任何影响。

2.分区表

上图中0x1BE~0x1FD即为分区表,占扇区中间64字节。分区表是磁盘管理最重要的部分,通过分区表信息来定位各个分区,访问用户数据。分区表包含4个分区项,每一个分区项通过位置偏移、分区大小来唯一确定一个主分区或者扩展分区。每个分区项占16字节,包括引导标识、起始和结束位置的CHS参数、分区类型、开始扇区、分区大小等,具体描述如下表所示

字节位移 占用字节数 描述
0x01BE 1Byte 引导指示符,指明该分区是否是活动分区
0x01BF 1Byte 开始磁头
0x01C0 6Bit 开始扇区,占用6位
0x01C1 10Bit 开始柱面,占用10位,最大值1023
0x01C2 1Byte 分区类型,NTFS位0x07
0x01C3 1Byte 结束磁头
0x01C4 6Bit 结束扇区,占用6位
0x01C5 10Bit 介乎柱面,占用10位,最大值1023
0x01C6 4Byte 相对扇区数,从此扇区到该分区的开始的扇区偏移量,以扇区为单位
0x01CA 4Byte 该分区的总扇区数

 

字节位移0x01BE:引导指示符,只能是0和0x80,0代表是非活动分区,0x80代表是活动分区。活动分区里包含着操作系统的入口扇区。

字节位移0x01BF~0x01C1:指明了该分区位于磁盘的物理位置。具体搜索C/H/S与LBA地址的对应关系。

字节位移0x01C2:文件系统格式

3.结束标志

上图中最后的"55 AA"即为结束标志,或者称魔数,占扇区最后2字节。每次执行系统引导代码时都会检查MBR主引导扇区最后2字节是否是"55 AA",若是,则继续执行后续的程序,否则,则认为这是一个无效的MBR引导扇区,停止引导系统。

按照上面的描述,可以看出磁盘的状态。

第一个分区表信息:0x00,0x01,0x02,0x00,0x07,0xFE,0xFF,0xFF,0x40,0x00,0x00,0x00,0xAB,0xB3,0x0F,0x23

可得出此分区为非活跃分区,文件系统格式为NTFS(0x07),此分区开始扇区为(0x00(当前扇区)+0x00000040) ,总扇区数为(0x230FB3AB) ,总容量=(0x230FB3AB*512)/1024/1024/1024GB=280.49GB

第二个分区表信息:0x80,0xFE,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0x30,0xB4,0x0F,0x23,0x91,0xA3,0x40,0x06

可得出此分区为活跃分区,文件系统格式为NTFS(0x07),此分区开始扇区为(0x00(当前扇区)+0x230FB430) ,总扇区数为(0x0640A391), 总容量=(0x0640A391*512)/1024/1024/1024GB=50.02GB

第三个分区表信息:0x00,0xFE,0xFF,0xFF,0x0F,0xFE,0xFF,0xFF,0xC1,0x57,0x50,0x29,0x3F,0x00,0x80,0x3E

可得出此分区为非活跃分区,文件系统格式为扩展分区(0x0F),此分区开始扇区为(0x00(当前扇区)+0x295057C1),总扇区数为(0x3E80003F),总容量=(0x3E80003F*512)/1024/1024/1024GB=500.00GB 

第四个分区表信息:0x00,0xFE,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0x00,0x58,0xD0,0x67,0x00,0x00,0xA0,0x0C

可得出此分区为非活跃分区,文件系统格式为NTFS(0x07),此分区开始扇区为(0x00(当前扇区)+0x67D05800),总扇区数为(0x0CA00000) ,总容量=(0x0CA00000*512)/1024/1024/1024GB=101.00GB

 对于第三个分区是扩展分区,再进一步研究。我们同WinHEX跳转到此分区的开始扇区0x295057C1处。可看到如下界面。

在此扇区的偏移0x1BE处又有向MBR类似的分区表信息,规则与MBR规则一样,只是此处分区表的分区类型不同,我们叫做逻辑分区。

第一个分区表信息:0x00,0xFE,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x80,0x3E

可得出此分区为非活跃分区,文件系统格式为NTFS(0x07),此分区开始扇区为(0x295057C1(当前扇区)+0x0000003F),总扇区数为(0x3E800000) ,总容量=(0x3E800000*512)/1024/1024/1024GB=500.00GB

疑问:按照上面每个分区的范围,MBR后面为什么保留了0x40个扇区?扩展分区扇区到逻辑分区扇区也保留了0x40个扇区?