主引导记录

主引导记录

位于磁盘最前边的一段引导代码
主引导记录(MBR,MainBootRecord)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。·结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。·扩展分区的第一个扇区不是用于一个逻辑盘的DBR,而是指向一个“扩展的”分区表,即第一个虚拟的MBR。BIOS执行内存地址为FFFF:0000H处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
    中文名:主引导记录 外文名:MBR,MasterBootRecord 别名: 学 科:计算机

简介

通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。

主引导扇区由三个部分组成(共占用512个字节):

1.主引导程序即主引导记录(MBR)(占446个字节)

可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。

2.磁盘分区表项(DPT,DiskPartitionTable)

由四个分区表项构成(每个16个字节)。

负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)

3.结束标志(占2个字节)

其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

详解

MBR的读取

硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。

用INT13H的读磁盘扇区功能的调用参数如下:

入口参数:AH=2(指定功能号)

AL=要读取的扇区数

DL=磁盘号(0、1-软盘;80、81-硬盘)

DH=磁头号

CL高2位+CH=柱面号

CL低6位=扇区号

CS:BX=存放读取数据的内存缓冲地址

出口参数:CS:BX=读取数据存放地址

错误信息:如果出错CF=1AH=错误代码

用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下:

A>DEBUG

-A100

XXXX:XXXXMOVAX,0201(用功能号2读1个扇区)

XXXX:XXXXMOVBX,1000(把读出的数据放入缓冲区的地址为CS:1000)

XXXX:XXXXMOVCX,0001(读0柱面,1扇区)

XXXX:XXXXMOVDX,0080(指定第一物理盘的0磁头)

XXXX:XXXXINT13

XXXX:XXXXINT3

XXXX:XXXX(按回车键)

-G=100(执行以上程序段)

-D100011FF(显示512字节的MBR内容)

MBR的组成

一个扇区的硬盘主引导记录MBR由如图6-15所示的4个部分组成。

·主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。

·出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。

·分区表(DPT,DiskPartitionTable)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。

·结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。

MBR中的分区信息结构

占用512个字节的MBR中,偏移地址01BEH--01FDH的64个字节,为4个分区项内容(分区信息表)。它是由磁盘介质类型及用户在使用FDISK定义分区说确定的。在实际应用中,FDISK对一个磁盘划分的主分区可少于4个,但最多不超过4个。每个分区表的项目是16个字节

MBR的主要功能及工作流程

启动PC机时,系统首先对硬件设备进行测试,测试成功后进入自举程序INT19H,然后读系统磁盘0柱面、0磁头、1扇区的主引导记录(MBR)内容到内存指定单元0:7C00地址开始的区域,并执行MBR程序段。

硬盘的主引导记录(MBR)是不属于任何一个操作系统的,它先于所有的操作系统而被调入内存,并发挥作用,然后才将控制权交给主分区(活动分区)内的操作系统,并用主分区信息表来管理硬盘。

MBR程序段的主要功能如下:

·检查硬盘分区表是否完好。

·在分区表中寻找可引导的“活动”分区。

·将活动分区的第一逻辑扇区内容装入内存。在DOS分区中,此扇区内容称为DOS引导记录(DBR)。

硬盘逻辑驱动器的分区表链结构

硬盘是由很多个512字节的扇区组成,而这些扇区会被组织成一个个的“分区”。

硬盘的分区规则是:一个分区的所有扇区必须连续,硬盘可以有最多4个物理上的分区,这4个物理分区可以是4个主分区或者3个主分区加一个扩展分区。在DOS/Windows管理下的扩展分区里,可以而且必须再继续划分逻辑分区(逻辑盘)。

从MS-DOS3.2问世以后,用户就可以在一个物理硬盘驱动器上划分一个主分区和一个扩展分区,并在扩展分区上创建多个逻辑驱动器,也即我们常说的一个物理盘上多个逻辑盘。

举一个例子,一个10G的硬盘,安装Windows,有C:、D:、E:三个逻辑盘,那么它的分区情况可以是如下的方式:

分区一:主分区2GB,格式化为C:盘。

分区二:扩展分区8GB。它被再划分为两个各4GB的逻辑盘,格式化为以D:和E:盘。

在一个划分有多个主分区的硬盘上,则可安装多个不同的操作系统。如Windows、Linux、Solaris等。每个操作系统自己去管理分配给自己的分区。但是,每个操作系统对分区的操作方式是不同的。对于DOS/Windows来说,它能够把它所能管辖的一个主分区和一个扩展分区格式化,然后按照C:、D:、E:逻辑盘的方式来管理。而Linux则不同,它是把“分区”看作一个设备,既没有“扩展分区”的概念,也没有“逻辑盘”的概念。

1.逻辑盘的链接关系

在FAT文件系统中,硬盘的逻辑盘字符用字符C:、D:、E:、...、Z:来表示。主分区一般被格式化成C:盘,从D:盘开始的逻辑盘是建立在扩展分区之上的。在系统进行读写操作时,DOS首先查看主引导记录(MBR)中的分区信息表,分区项将指向活动主分区的DOS引导记录(DBR)。

MBR中的分区表位于0柱面、0磁头、1扇区内,以位移1BEH开始的第一分区表作为链首,有表内的链接表项指示下一分区表的物理位置(xx柱面、0磁头、1扇区),在该位置的扇区内同样位移1BEH处,保存着第2张分区表,依次类推,直至指向最后一张分区表的物理位置(yy柱面、0磁头、1扇区)。因该分区表内不存在链接表项,即作为分区表链的链尾。如图6-17所示。

硬盘第一个虚拟第二个虚拟第三个虚拟

举例来说,本来位于柱面0、磁头0、扇区1上的分区表的每一项记录和主分区的DBR之间有一对应的关系,但是,如果在扩展分区中建立了多个逻辑盘,例如D:、E:、F:,该分区表中的分区项可指向第一个逻辑盘:,但对于其它的逻辑盘,则就没有这种对应关系了。为能够查找扩展分区中的多个逻辑盘,DOS系统可做如下安排:

·如果硬盘只有一个主分区,即是将整个硬盘作为一个逻辑盘C:,则分区命令FDISK只在硬盘的柱面0、磁头0、扇区1上建立一个MBR。

·如果硬盘被划分成2--4个分区,则FDISK除了在柱面0、磁头0、扇区1上建立一个MBR之外,还在扩展分区的每个逻辑盘的起始扇区上都建立一个虚拟MBR,每一个虚拟MBR用于扩展分区上的一个逻辑盘。

·扩展分区的第一个扇区不是用于一个逻辑盘的DBR,而是指向一个“扩展的”分区表,即第一个虚拟的MBR。该逻辑盘DBR扇区的起点应为虚拟MBR的下一个磁道1扇区。

这些MBR中的各个分区表链接成一个如图6-17所示的分区表链。这是一个硬盘具有4个表项所描述的内容。

DOS就是用这种方法来使一个扩展分区看起来象是有多个硬盘。

从图6-17中可以看到,位于磁盘柱面0、磁头0、扇区1上MBR的分区表指向基本分区及扩展分区中的第一个逻辑盘。

主引导记录的组成

1启动代码

主引导记录最开头是第一阶段引导代码。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后将控制权交给硬盘上的引导程序(如GNUGRUB)。它不依赖任何操作系统,而且启动代码也是可以改变的,从而能够实现多系统引导。

2硬盘分区表

硬盘分区表占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。下面是一个例子:如果某一分区在硬盘分区表的信息如下

800101000BFEBFFC3F0000007E86BB00

则我们可以看到,最前面的“80”是一个分区的激活标志,表示系统可引导;“010100”表示分区开始的磁头号为1,开始的扇区号为1,开始的柱面号为0;“0B”表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);“FEBFFC”表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;“3F000000”表示首扇区的相对扇区号为63;“7E86BB00”表示总扇区数为12289662。

对于现代大于8.4G的硬盘,CHS已经无法表示,BIOS使用LBA模式,对于超出的部分,CHS值通常设为FEFFFF,并加以忽略,直接使用08-0f的4字节相对值,再进行内部转换。

3结束标志字

结束标志字55AA(偏移1FEH-偏移1FFH)最后两个字节,是检验主引导记录是否有效的标志。

主引导扇区的读取流程

系统开机或者重启时主引导扇区的读取流程如下所述。

1.BIOS加电自检(PowerOSelfTest--POST)。BIOS执行内存地址为FFFF:0000H处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。

2.读取主引导记录(MBR)。当BIOS检查到硬件正常并与CMOS中的设置相符后,按照CMOS中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H处。

3.检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示“NOROMBASIC”然后死机。

4.当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处,然后继续执行。

5.根据MBR中的引导代码启动引导程序。

事实上,BIOS不仅检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,往往还对磁盘是否有写保护、主引导扇区中是否存在活动分区等进行检查。如果发现磁盘有写保护,则显示磁盘写保护出错信息;如果发现磁盘中不存在活动分区,则显示类似如下的信息“RemovediskorothermediaPressanykeytorestart”。

主引导记录与硬盘分区

从主引导记录的结构可以知道,它仅仅包含一个64个字节的硬盘分区表。由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的硬盘,最多只能识别4个主要分区(Primarypartition)。所以对于一个采用此种分区结构的硬盘来说,想要得到4个以上的主要分区是不可能的。这里就需要引出扩展分区了。扩展分区也是主要分区的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区。

扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR,分区表第三、第四项没有用到。

Windows系统默认情况下,一般都是只划分一个主分区给系统,剩余的部分全部划入扩展分区。这里有下面几点需要注意:

在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。

在Linux系统中,硬盘分区命名为sda1-sda4或者hda1-hda4(其中a表示硬盘编号可能是a、b、c等等)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。

在MBR分区表中,一个分区最大的容量为2T,且每个分区的起始柱面必须在这个disk的前2T内。你有一个3T的硬盘,根据要求你至少要把它划分为2个分区,且最后一个分区的起始扇区要位于硬盘的前2T空间内。如果硬盘太大则必须改用GPT。

MBR分区表与GPT分区表的关系

与支持最大卷为2TB(Terabytes)并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区和无限制的逻辑驱动器)的MBR磁盘分区的样式相比,GPT磁盘分区样式支持最大卷为128EB(Exabytes)并且每磁盘的分区数没有上限,只受到操作系统限制(由于分区表本身需要占用一定空间,最初规划硬盘分区时,留给分区表的空间决定了最多可以有多少个分区,IA-64版Windows限制最多有128个分区,这也是EFI标准规定的分区表的最小尺寸)。与MBR分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT分区磁盘有备份分区表来提高分区数据结构的完整性。

注释

对于一个操作系统而言,系统分区设为活动分区并不是必须的,这主要视引导程序而定,如果使用的引导程序是Grub4Dos,MBR中的引导代码仅仅按照分区的顺序依次探测第二阶段引导器grldr的位置,并运行第一个探测到的grldr文件。

一个硬盘的分区个数还要受到分区大小的限制,因为硬盘是按照柱面分区的:一个分区至少要占一个柱面。但有一点需要注意,由于现在的硬盘结构已经和老式硬盘有了很大区别,其寻址结构也不再是CHS寻址,所以这里的柱面大小不同于相关软件显示的柱面大小。对于物理结构上有n个面的硬盘,其分区空间的最小值为:n×扇区/磁道×512字节。

根据16字节分区表的结构:当前分区的扇区数用4个字节表示,前面各分区扇区数的总和也是4个字节,而232×512=2199023255552Byte

作用

主引导记录是非常重要的一个扇区,其中引导代码用来告诉计算机如何处理分区表,如何定位操作系统等;分区表用来管理硬盘的分区情况;标志表明该扇区是一个有效的引导记录扇区。

软件层面上的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修改参数,即到“AdvanceBIOSFeatures”选项,将“Anti-VirusProtection”中的参数设置为“Disabled”即可。

编制汇编程序结合FDISK重建硬盘的MBR

用汇编语言编制一个内存驻留程序,其控制中断为INT13H,目的是实现阻止对硬盘格式化和硬盘主引导区以外的写操作,该方法既可解决不丢失硬盘原数据文件,又可修复MBR。

相关词条

相关搜索

其它词条