MBR磁盘分区都有一个引导扇区,称为主引导记录,英文简称为MBR。
MBR扇区位于整个硬盘的第一个扇区:按照C/H/S地址描述,即0柱面0磁头1扇区;按照LBA地址描述即0扇区。它是一个特殊而重要的扇区。
在总共512字节的MBR扇区中,由四部分结构组成:
1)引导程序:引导程序占用其中的前440字节,其地址在偏移0~偏移1B7H处。
2)Windows磁盘签名:Windows磁盘标签占用引导程序后的4字节,其地址在偏移1B8H~偏移1BBH处,是Windows系统对硬盘初始化时写入的一个磁盘标签。
3)分区表:偏移1BEH~偏移1FDH的64字节为DPT(Disk Partition Table,硬盘分区表),这是MBR中非常重要的一个结构。
4)结束标志:扇区最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是MBR的结束标志。
用WinHex查看一块硬盘的MBR扇区,其结构如图4-1所示。
MBR扇区在计算机引导过程中起着举足轻重的作用。计算机在按下电源键以后,开始执行主板的BIOS程序,进行完一系列检测和配置以后,开始按CMOS中设定的系统引导顺序进行引导。
主板BIOS执行完自己的程序后如何把执行权交给硬盘呢?交给硬盘后又执行存储在哪里的程序呢?让我们通过了解MBR的作用来解开这些疑问吧。
计算机主板的BIOS程序在自检通过后,会将MBR扇区整个读入内存中,然后将执行权交给内存中MBR扇区的引导程序。引导程序首先会将自己整个搬到一个较为安全的地址中,目的是防止自己被随后读入的其他程序覆盖,因为引导程序一旦被破坏,就会引起计算机死机,从而无法正常引导系统。
系统下一步就会判断读入内存的MBR扇区的最后两个字节是否为“55 AA”,如果不是则报错,在屏幕上会列出错误信息。如果是“55 AA”,接下来引导程序会到分区表中查找是否有活动分区,若有活动分区,则判断活动分区的引导扇区在磁盘中的地址,并将该引导扇区读入内存及判断其合法性,如果是一个合法的引导扇区,随后的引导权就交给这个引导扇区去引导操作系统了,MBR引导程序的使命也就完成了。
Windows磁盘签名是Windows系统在对硬盘做初始化时写入的一个标签,它是MBR扇区不可或缺的一个组成部分。Windows系统依靠这个签名来识别硬盘,如果硬盘的签名丢失,Windows系统就会认为该硬盘没有初始化。
注意
一块硬盘如果不是系统引导盘,MBR扇区中可以没有引导程序,但是绝对不能没有磁盘签名。
下面就来看看如果硬盘的磁盘签名丢失后的结果。
以图4-2中的“磁盘1”为例来做这个实验。“磁盘1”目前分一个区,状态良好,如图4-2所示。
“磁盘1”的MBR扇区及其磁盘签名如图4-3所示。
当硬盘挂载到Windows操作系统以后,操作系统会读取该硬盘的MBR扇区及其磁盘签名,并将磁盘签名信息记录在注册表中。在这种情况下,如果把这块硬盘的磁盘签名清除,重新启动操作系统,或者把该硬盘卸载后再重新挂载,系统会自动修复该硬盘的磁盘签名。
现在把该硬盘的磁盘签名清除,清除后结果如图4-4所示。
现在重新启动计算机,再一次用WinHex打开这块硬盘,发现被清除的磁盘签名又出现了,只是签名信息的最低位字节稍有改变,高位的三个字节与原来还是一致的,如图4-5所示。
从这个例子中可以看出,磁盘签名是不可缺少的,不过有时系统不一定能够自动写入磁盘签名,这种情况硬盘就会提示“没有初始化”。
当我们把图4-2的硬盘MBR中磁盘签名再一次清除,并把它挂载到另外一台计算机上,结果这台计算机的系统没有给该硬盘写入磁盘签名,这块硬盘在系统的磁盘管理中就显示为“没有初始化”,但是分区还是正常的,因为分区表并没有清除,如图4-6所示。
分区表是用来管理硬盘的分区的,如果分区表被清除或者破坏,则硬盘的分区就会丢失。
现在依然以上面那块硬盘为例,把MBR中的分区表清除,其他结构不动,如图4-7所示。
重新启动计算机后进入磁盘管理,可以看到分区已经没有了,硬盘成为“未指派”,如图4-8所示。
对于分区表是如何管理硬盘分区的,这部分内容将在4.1.2节详细分析。
在执行MBR的引导程序时,会验证MBR扇区最后两个字节是否为“55 AA”。如果是“55 AA”才会继续执行下面的程序,如果不是“55 AA”,则程序认为这是一个非法的MBR,那么程序停止执行,同时会在屏幕上列出错误信息。
如果一块MBR结构完好并且有分区的硬盘,其结束标志“55 AA”被破坏后,该硬盘的分区也将无法读取,硬盘会成为“没有初始化”状态。
图4-9所示的硬盘,其分区结构完好。
用WinHex将其打开,并且清除结束标志“55 AA”,如图4-10所示。
重新启动计算机后打开磁盘管理,发现该硬盘的分区已经丢失,并且状态为“没有初始化”,如图4-11所示。
这种情况其实只要通过WinHex打开该硬盘,将MBR的最后两个字节写入“55 AA”,重启计算机后分区和数据都能够重新出现,但千万不能对硬盘做“初始化”,否则分区表将会被清除,下面实际演示一下:
第1步 对“磁盘1”单击鼠标右键,选择“初始化磁盘”命令,如图4-12所示。
之后出现磁盘选择对话框,如图4-13所示。
第2步 在“磁盘1”前打钩,然后单击“确定”按钮,磁盘1将被初始化,完成后硬盘将“联机”,如图4-14所示。
做完初始化后硬盘原来的分区并没有回来,硬盘还是“未指派”的。打开WinHex查看MBR,发现分区表信息已经被清除,如图4-15所示。
这个时候就只能通过重建分区表才能找回数据了。