MBR详解
我们通常对磁盘分区时,都会涉及到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详解的更多相关文章
- 【转载】 硬盘主引导记录(MBR)及其结构详解
硬盘的0柱面.0磁头.1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR).该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统 ...
- Windows磁盘MBR结构详解
在之前的文章 Windows存储管理之磁盘结构详解 中介绍了Windows的磁盘结构和MBR.本文将对Windows Basic Disk中的MBR的结构进行介绍,帮助读者更好的了解Windows系统 ...
- Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...
- Linux启动过程详解
Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...
- Linux 下的dd命令使用详解(摘录)
一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...
- linux dd命令实用详解
linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...
- dd命令使用详解
dd命令使用详解 http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html 1.命令简介 dd 的主要选项: 指定数字的地方若 ...
- linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)
linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要 ...
- Linux的启动流程以及GRUB详解
一.Linux引导和启动流程 概述,计算机电源接通后通过BISO之后,没有问题,就会去硬盘上找到MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区, ...
随机推荐
- Centos7虚拟机下配置静态IP
以下为Centos7在VMware下配置静态IP地址,配置完后内外网都可以访问,主机与虚拟机之间可以通信. 1.在VMware里,菜单栏点击[编辑]-->[虚拟网络编辑器],如下图.选择的是NA ...
- 基于链路的OSPF简单口令认证
实验要求:掌握基于链路的OSPF简单口令认证 拓扑如下: 配置如下: R1enable configure terminal interface s0/0/0ip address 192.168.1. ...
- 爬格子问题(经典强化学习问题) Sarsa 与 Q-Learning 的区别
SARSA v.s. Q-learning 爬格子问题,是典型的经典强化学习问题. 动作是上下左右的走,每走一步就会有一个-1的奖赏.从初始状态走到最终的状态,要走最短的路才能使奖赏最大.图中有一个悬 ...
- MySQL(2)数据库 表的查询操作
来源参考https://www.cnblogs.com/whgk/p/6149009.html 跟着源博客敲一遍可以加深对数据库的理解,同时对其中一些代码做一些改变,可以验证自己的理解. 本文改动了其 ...
- 【c++基础】static修饰的函数作用与意义
static修饰的函数作用与意义 static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数: 静态成员函数的作用在于:调用这个 ...
- 了解Git的工作区和暂存区
Git有工作区,暂存区之分. 1.工作区 我们电脑上的某个被Git管理的文件夹,就是一个工作区. 比如说我的GitWorkText文件夹,如图: 2.版本库(Repository) 在工作区有一个隐藏 ...
- 20155208徐子涵 2016-2017-2 《Java程序设计》第5周学习总结
20155208徐子涵 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 8.1 语法与继承结构 Java中所有错误都会被打包为对象,运用tr ...
- da shu mo ban
#include<bits/stdc++.h> using namespace std; ;/*精度位数,自行调整*/ //1.如果需要控制输出位数的话,在str()里面把len调成需要的 ...
- struts2文件上传1
<form action="hello/UploadAction_upload.action" enctype="multipart/form-data" ...
- SimpleDateFormat未抛出ParseException
关于SimpleDateFormat的不严格性[技术探讨]今天一组员写了几段Java代码,发现如下问题: SimpleDateFormat sdf = new SimpleDateFor ...