我们通常对磁盘分区时,都会涉及到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个扇区?

MBR详解的更多相关文章

  1. 【转载】 硬盘主引导记录(MBR)及其结构详解

    硬盘的0柱面.0磁头.1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR).该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统 ...

  2. Windows磁盘MBR结构详解

    在之前的文章 Windows存储管理之磁盘结构详解 中介绍了Windows的磁盘结构和MBR.本文将对Windows Basic Disk中的MBR的结构进行介绍,帮助读者更好的了解Windows系统 ...

  3. Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...

  4. Linux启动过程详解

    Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...

  5. Linux 下的dd命令使用详解(摘录)

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  6. linux dd命令实用详解

    linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...

  7. dd命令使用详解

    dd命令使用详解 http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html 1.命令简介 dd 的主要选项: 指定数字的地方若 ...

  8. linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

    linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至:            linux dd命令使用详解 dd 的主要 ...

  9. Linux的启动流程以及GRUB详解

     一.Linux引导和启动流程       概述,计算机电源接通后通过BISO之后,没有问题,就会去硬盘上找到MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区, ...

随机推荐

  1. Centos7虚拟机下配置静态IP

    以下为Centos7在VMware下配置静态IP地址,配置完后内外网都可以访问,主机与虚拟机之间可以通信. 1.在VMware里,菜单栏点击[编辑]-->[虚拟网络编辑器],如下图.选择的是NA ...

  2. 基于链路的OSPF简单口令认证

    实验要求:掌握基于链路的OSPF简单口令认证 拓扑如下: 配置如下: R1enable configure terminal interface s0/0/0ip address 192.168.1. ...

  3. 爬格子问题(经典强化学习问题) Sarsa 与 Q-Learning 的区别

    SARSA v.s. Q-learning 爬格子问题,是典型的经典强化学习问题. 动作是上下左右的走,每走一步就会有一个-1的奖赏.从初始状态走到最终的状态,要走最短的路才能使奖赏最大.图中有一个悬 ...

  4. MySQL(2)数据库 表的查询操作

    来源参考https://www.cnblogs.com/whgk/p/6149009.html 跟着源博客敲一遍可以加深对数据库的理解,同时对其中一些代码做一些改变,可以验证自己的理解. 本文改动了其 ...

  5. 【c++基础】static修饰的函数作用与意义

    static修饰的函数作用与意义 static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数: 静态成员函数的作用在于:调用这个 ...

  6. 了解Git的工作区和暂存区

    Git有工作区,暂存区之分. 1.工作区 我们电脑上的某个被Git管理的文件夹,就是一个工作区. 比如说我的GitWorkText文件夹,如图: 2.版本库(Repository) 在工作区有一个隐藏 ...

  7. 20155208徐子涵 2016-2017-2 《Java程序设计》第5周学习总结

    20155208徐子涵 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 8.1 语法与继承结构 Java中所有错误都会被打包为对象,运用tr ...

  8. da shu mo ban

    #include<bits/stdc++.h> using namespace std; ;/*精度位数,自行调整*/ //1.如果需要控制输出位数的话,在str()里面把len调成需要的 ...

  9. struts2文件上传1

    <form action="hello/UploadAction_upload.action" enctype="multipart/form-data" ...

  10. SimpleDateFormat未抛出ParseException

    关于SimpleDateFormat的不严格性[技术探讨]今天一组员写了几段Java代码,发现如下问题:        SimpleDateFormat sdf = new SimpleDateFor ...