主引导记录(MBR,Master Boot Record)是采用MBR分区表的
硬盘的第一个扇区,即C/H/S地址的0柱面0磁头1扇区,也叫做MBR扇区。
简介
主引导记录(MBR),也被称为
主引导扇区,是计算机开机以后访问硬盘时所必须要读取的第一个扇区。在深入讨论主引导扇区内部结构的时候,有时也将其开头的446字节内容特指为“主引导记录”(MBR),其后是4个16字节的“磁盘分区表”(DPT),以及2字节的结束标志(55AA)。因此,在使用“主引导记录”(MBR)这个术语的时候,需要根据具体情况判断其到底是指整个主引导扇区,还是主引导扇区的前446字节。
主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息。如果它受到破坏,硬盘上的基本数据结构信息将会丢失,需要用繁琐的方式试探性地重建数据结构信息后,才可能重新访问原先的数据。主引导扇区内的信息可以通过任何一种基于某种操作系统的分区软件写入,但和某种操作系统没有特定的关系,即只要创建了有效的主引导记录就可以引导任意一种操作系统。
如果要备份主引导扇区,可以通过使用dd命令来实现。
主引导记录(master boot record,MBR)位于硬盘的第一物理扇区。由于历史原因,硬盘的一个扇区大小是512字节,包含最多446字节的启动代码、4个硬盘分区表项(每个表项16字节,共64字节)、2个签名字节(0x55,0xAA),如图1所示。分区表项的结构见表。
图 1经典主引导记录布局
如图2主引导记录中的硬盘分区表项
组成
主引导记录由三个部分组成:引导程序占用其中的前446字节(偏移0~1BDH),随后的64字节(偏移1BEH~1FDH)为DPT(Disk Partition Table,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~1FFH)是结束标志。
结构
硬盘主引导记录 (MBR) , 位于硬盘的0柱面0磁头1扇区处。其包括硬盘主引导记录MBR和分区表DPT以及结束标志“55AA”[1], 这部分数据总共占512字节, 其中MBR占其中的446个字节,另外的64个字节交给了分区表DPT, 最后2个字节“55AA”是分区的结束标志。值得一提的是, MBR是由分区程序 (例如DOS的Fdisk.exe) 产生。具体结构如表1。
(1) 硬盘主引导程序, 位于该扇区的0-1BDH处。
(2)
硬盘分区表, 位于1BEH-1FDH处, 每个分区表占用16个字节, 4个分区表 (共64字节) , 16个字节各字节意义如表2。
分区状态标记为活动状态时, 表示当前分区可以引导操作系统, 而非活动状态表示不能引导操作系统。分区从起始到结束地址部分均以 (H/S/C) 记录分区边界。分区起始逻辑扇区及占用总扇区数均以LBA方式表示分区范围。
(3) 主引导记录正常状态下的标志为“55 AA”, 位于1FEH-1FFH处, 如该标志改变系统将不能正常启动。
主要功能及工作流程
计算机系统启动首先对本机的硬件设备进行测试, 测试成功之后进入自举程序INT l9H, 然后将磁盘的0柱面、0磁头、1扇区的主引导记录内容读入内存指定单元, 其首址为0:7C00开始的区域, 并执行MBR程序段。主引导记录优先于所有操作系统被调入内存的指令, 并发挥主导作用。最后把控制权交给主分区 (活动分区) 内操作系统, 并让主分区信息来管理硬盘。可见, 主引导记录不依赖任何操作系统, 且硬盘引导程序为可变的, 因此完全可以实现多系统共存 (但最多4个系统) 。MBR主要功能如下:
(1) 首先检查硬盘中分区表是否完好。
(2) 从分区表查找可引导的“活动”分区。
(3) 将活动分区中第一逻辑扇区数据加载到内存中。在DOS分区中, 该扇区内容被称为DOS引导记录, 简称DBR。
MBR引导部分的程序段执行程序流程, 如图5。
根据上述的MBR的工作流程, 可以在系统引导时加入或改变计算机系统正常的引导过程。比如, 优先执行用户程序段, 再引导操作系统。因此, 可以利用这一特点来实现数据保护和数据恢复功能。例如, 当前流行使用的
硬盘保护卡、还原软件等均为改写0柱0头1扇区的代码部分, 在系统启动时抢夺中断INT 13H的控制权, 先将原中断INT 13H的入口地址保存起来, 然后将入口地址指向自己的INT 13H处理程序, 并通过自已的监控部分的程序来确保该入口地址始终指向自己的INT 13H, 同时拦截所有的其他INT 13H中对硬盘0柱0头1扇区的操作, 把所有对0柱0头1扇区的读写操作改为对虚拟主引导记录的操作。在拦截所有INT 13H写硬盘操作后, 将把所这些写操作在虚拟内存中进行, 并做好完整的记录, 等系统重新启动后还原这些记录[5], 实现数据保护与数据恢复功能。
软件层面上的MBR数据恢复方法
硬盘是计算机的主要外部存储设备, 大多数用户的数据都存储在硬盘上, 如果硬盘出现故障, 不仅需要维修硬盘, 而且还需要抢救硬盘数据。硬盘的故障常见有两类:一类是硬盘的硬件发生故障, 称为硬故障。硬件故障一般为磁盘划伤、磁组变形、芯片组或其它元器件损坏等。表现为系统一般不认硬盘, 常有一种“咔嚓咔嚓”的磁组撞击声或电机不转、通电后无任何声音、磁头错位造成读写错误等。另一类是写在硬盘上的软件发生故障, 称为软故障, 一般是病毒感染、误操作、操作时断电等引起的。本文仅讨论软故障中MBR数据恢复的软件层面上的解决办法。
Fdisk/MBR命令修复MBR
用Win98的引导盘或DOS引导盘引导系统到纯DOS命令提示符下执行“Fdisk/MBR”命令进行无条件重写, 主引导记录一般都能成功, 且保留原有数据。Fdisk命令行格式语法为:“Fdisk/参数开关”, 其中/MBR参数功能:重新建立主磁盘的主引导记录。其它的一些隐藏参数, 其功能对于有病毒感染主引导扇区时, 用来清除病毒时用。需要提醒的是, 隐藏参数危险系数比较大, 使用时需谨慎。
FIXMBR修复MBR
Fixmbr是DOS下的一个专门针对MBR的修复程序工具, 它通过全盘搜索来确定硬盘分区, 并重新构造主引导记录。操作方法是将Fixmbr下载并保存在软盘, 在软盘上运行FIXMBR, 由FIXMBR负责检查MBR结构, 如发现系统有错误, 则将出现是否进行硬盘主引导记录修复的提示。回答“YES”, FIXMBR将对整个硬盘进行分区搜索, 当搜索到相应的分区后, 系统将提示是否修改MBR, 回答“YES”则开始自动修复。如搜索的结果不正确, 可使用/Z开关符, 重新启动系统后将恢复到原来状态。值得注意的是, 如果使用Fixmbr修复的过程中出现死机等现象, 则需要进入BIOS修改参数,即到“Advance BIOS Features”选项, 将“Anti-Virus Protection”中的参数设置为“Disabled”即可。
编制汇编程序结合FDISK重建硬盘的MBR
用汇编语言编制一个内存驻留程序, 其控制中断为INT13H, 目的是实现阻止对硬盘格式化和硬盘主引导区以外的写操作, 该方法既可解决不丢失硬盘原数据文件, 又可修复MBR。
作用
主引导记录是非常重要的一个扇区,其中引导代码用来告诉计算机如何处理分区表,如何定位操作系统等;分区表用来管理硬盘的分区情况;标志表明该扇区是一个有效的引导记录扇区。