主引导记录(MBR)也被称为主引导扇区,是计算机开机以后访问硬盘时所必须要读取的第一个扇区,记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息。
主引导记录(MBR,Master Boot Record)是装有 Linux 系统的硬盘的第一个扇区,即 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),如图所示。分区表项的结构见表。
组成
主引导记录由三个部分组成:引导程序占用其中的前 446 字节(偏移 0~1BDH),随后的 64 字节(偏移 1BEH~1FDH)为 DPT(Disk Partition Table,硬盘分区表),最后的两个字节“55 AA”(偏移 1FEH~1FFH)是结束标志。
结构
硬盘主引导记录 (MBR) , 位于硬盘的 0 柱面 0 磁头 l 扇区处。其包括硬盘主引导记录 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) 主引导记录正常状态下的标志为“AA55”, 位于 1FEH-1FFH 处, 如该标志改变系统将不能正常启动。
主要功能及工作流程
计算机系统启动首先对本机的硬件设备进行测试, 测试成功之后进入自举程序 INT l9H, 然后将磁盘的 0 柱面、0 磁头、1 扇区的主引导记录内容读入内存指定单元, 其首址为 0:7C00 开始的区域, 并执行 MBR 程序段。主引导记录优先于所有操作系统被调入内存的指令, 并发挥主导作用。最后把控制权交给主分区 (活动分区) 内操作系统, 并让主分区信息来管理硬盘。可见, 主引导记录不依赖任何操作系统, 且硬盘引导程序为可变的, 因此完全可以实现多系统共存 (但最多 4 个系统) 。MBR 主要功能如下:
(1) 首先检查硬盘中分区表是否完好。
(2) 从分区表查找可引导的“活动”分区。
(3) 将活动分区中第一逻辑扇区数据加载到内存中。在 DOS 分区中, 该扇区内容被称为 DOS 引导记录, 简称 DBR。
MBR 引导部分的程序段执行程序流程, 如图 1。
根据上述的 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。
作用
主引导记录是非常重要的一个扇区,其中引导代码用来告诉计算机如何处理分区表,如何定位操作系统等;分区表用来管理硬盘的分区情况;标志表明该扇区是一个有效的引导记录扇区。
TAG:mbr是什么