DOS分区体系的主引导记录扇区-MBR

简介:
使用 DOS 分区体系时,磁盘的第一个扇区――也就是 0 号扇区被称为主引导记录扇区,也称为 MBR( 主引导记录, Master Boot Recorder -- MBR) 。当计算机启动并完成自检后,首先会寻找磁盘的 MBR 扇区并读取其中的引导记录,然后将系统控制权交给它。由此可见,如果 MBR 损坏,则后续的所有工作都无法继续进行。
1. MBR 数据结构
MBR 446 个字节的引导代码、 64 个字节的主分区表及 2 个字节的签名值“ 55AA ”组成。我们首先使用 Winhex 来看一下 MBR 扇区的内容,如图 2.11 所示(因为该磁盘尚未进行分区操作,所以分区表全部为空)。
2.11  主引导记录扇区
 
可以看到, MBR 扇区由三大部分组成:
1 )引导代码。 MBR 接管系统的控制权后,引导代码负责对其他代码信息进行检查(比如查看是否有“ 55AA ”有效标记)并进一步引导系统。
2 )分区表。分区表负责描述磁盘内的分区情况。
3 )“ 55AA ”有效标志。“ 55AA ”标志做为有效标志以通知系统该 MBR 扇区是否有效,如果该标志丢失或损坏,磁盘将会显示为“未初始化”。
MBR 扇区的数据结构如表 2.1 所示。
2.1   MBR 扇区数据结构
字节偏移 ( 十六进制 )
字节数
描述
00 1BD
446
引导代码
1BE 1CD
16
分区表项 1
1CE 1DD
16
分区表项 2
1DE 1ED
16
分区表项 3
1EE 1FD
16
分区表项 4
1FE 1FF
2
签名值 (55AA)
 
具体含义解释如下:
1)    0x00 0x1BD 446 个字节,引导代码区域,包含一段指令,用以通知计算机如何访问分区表并定位操作系统的位置。
u  主引导代码是一段非常重要的代码,因为它是磁盘上最先装入内存并执行的代码。也正因为如此,很多引导型病毒把自己嵌入到主引导代码中,从而实现首先运行的目的。标准的Microsoft引导代码会在计算机启动完成自检并将控制权交给它后,读取分区表并根据分区表项的可引导标志判定哪个主分区是引导分区,找到这个分区后就查看并读取位于该分区第一个扇区的引导代码并进而启动操作系统,这部分代码会因操作系统的不同而不同。
u  利用引导代码可以实现多系统引导。很多用户需要在同一台计算机上安装超过一个的操作系统,这就需要使用多系统引导,以便能够在计算机启动时选择要进入的操作系统。多系统引导可以由两种方法实现。
Ø  一种方法是,大多数用户会将Windows操作系统做为要安装的系统之一,Windows可以在引导分区中设置一段代码,以允许用户选择要进入的操作系统。也就是说,MBR中的主引导程序先加载Windows引导代码,然后由Windows引导代码再呈现给用户一个操作系统选择界面。
Ø  另一种方法是改变MBR中的引导代码,修改后的引导代码会直接呈现给用户一个选项列表,由用户选择从哪个分区进行引导。这种方法一般会占用位于第一个分区之前的一部分未使用扇区存放程序代码。
2)    0x1BE 0x1FD 64 个字节, 4 个分区表项,每个表项占用 16 个字节。每个表项描述一个 DOS 分区,最多可以描述 4 个主分区。
u  分区表项并没有顺序要求,也就是说,并不严格要求第一个分区表项对应物理位置的第一个分区,第二个表项对应第二个分区。
u  分区表也并不要求必须先使用第一个分区表项,然后依次使用后面的表项。操作系统在检索主分区表时,会完整地对四个分区表项进行完全检索,然后根据每个分区表项描述的物理位置定位分区,而不会以分区表项的先后顺序定位分区所处的先后位置关系。
2.12 描述了一个被划分成三个主分区的磁盘,前三个分区表项分别用来描述一个分区,最后一个分区表项未被使用。
 
 
2.12   划分为三个主分区的磁盘
 
3)    0x1FE0x1FF2个字节,有效结束标志“55AA”。如果没有这个签名值,操作系统会认为该磁盘没有被初始化,也就无法正常加载磁盘上的分区和解释数据。不过,只要分区和文件系统正常,某些数据恢复软件在没有这个签名值的情况下也可以正确的检测到分区表并正确地解释出所有正常的数据。















本文转自老骥伏枥51CTO博客,原文链接: http://blog.51cto.com/sjhfml/129090  ,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
69 2
|
5月前
|
关系型数据库 数据库连接 Windows
windows 常用的dos命令
windows 常用的dos命令
117 0
|
5月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
52 0
|
5月前
|
Java 程序员 Shell
Java(一)java跨平台原理及dos常用命令
Java(一)java跨平台原理及dos常用命令
41 1
|
5月前
|
算法 Linux Shell
【Shell 命令集合 磁盘管理 】Linux 于挂入MS-DOS文件系统 mmount 命令使用指南
【Shell 命令集合 磁盘管理 】Linux 于挂入MS-DOS文件系统 mmount 命令使用指南
76 0
|
11月前
|
应用服务中间件 nginx Windows
windows下DOS命令杀掉Nginx应用进程
windows下DOS命令杀掉Nginx应用进程
138 1
|
5月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
76 0
|
2月前
|
监控 JavaScript 前端开发
JAVA常用的DOS命令
JAVA常用的DOS命令
|
2月前
|
Windows
基本的Dos命令 在控制台如何进入某一个文件或者进入不同的盘符
这篇文章介绍了如何在Windows DOS命令行环境中进入不同盘符和文件夹,包括使用Win+R快捷键打开运行窗口、通过输入盘符加冒号(如"D:")切换到指定盘符、使用"cd"命令进入文件夹,以及一些基本的文件操作命令如"dir"查看文件和"del"删除文件等。
基本的Dos命令 在控制台如何进入某一个文件或者进入不同的盘符
|
2月前
|
关系型数据库 MySQL Java
收藏了许久的(快捷键指定):win系统的dos命令
本文收集了一系列Windows系统中的DOS命令快捷键和实用技巧,包括打开系统属性、运行窗口、文件管理、锁定桌面、查看系统信息、配置系统启动模式、系统服务管理、注册表编辑、共享路径访问、环境变量设置、端口查看、文件操作等,旨在提高用户在使用Windows系统时的效率和便利性。
36 0