• MBR

     

    (主引导记录(Master Boot Record))

     

MBR,即主引导记录,是对IBM兼容机的硬盘或者可移动磁盘分区时,在驱动器最前端的一段引导扇区。MBR概念是在1983年PC DOS 2.0支持硬盘后才有的。

MBR描述了逻辑分区的信息,包含文件系统以及组织方式。此外,MBR还包含计算机在启动的第二阶段加载操作系统的可执行代码或连接每个分区的引导记录(VBR)。这个MBR代码通常被称为引导程序。

由于MBR分区表的最大可寻址的存储空间只有2Tb(232×512字节)。因此,在大硬盘出现的现在,MBR分区方式逐渐被GUID分区表取代。

MBR不可能存在于不可分区的媒介如软盘等中



MBR,全称为Master Boot Record,即硬盘的主引导记录

为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和分区有效标志。在总共512字节的主引导扇区主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为0xAA55或0x55AA,这取决于处理器类型  ,如果是小端模式处理器  (如Intel系列),则该值为0xAA55;如果是大端模式处理器 (如Motorola6800),则该值为0x55AA。


MBR是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写,如在minix3里面,可以用命令:installboot -m /dev/c0d0 /usr/mdec/masterboot来把masterboot这个小程序写到mbr里面,masterboot通常用汇编语言来编写。我们也可以用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=1 AH=错误代码

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

A>DEBUG

-A 100

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

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

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

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

XXXX:XXXX INT 13

XXXX:XXXX INT 3

XXXX:XXXX (按回车键)

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

-D 1000 11FF (显示512字节的MBR内容)

在windows操作系统下,例如xp,2003,Vista,windows7,有微软提供的接口直接读写mbr;

FILE * fd=fopen("\\\\.\\PHYSICALDRIVE0","rb+");

char buffer[512];

fread(buffer,512,1,fd);

//then you can edit buffer[512] as your wish......

fseek(fd,0,SEEK_SET); //很重要

fwrite(buffer,512,1,fd); //把修改后的MBR写入到你的机器

fclose(fd); //大功告成



MBR组成


一个扇区的硬盘主引导记录MBR由4个部分组成。


硬盘MBR扇区

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

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

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

·结束标志字,偏移地址01FE--01FF的2个字节值为结束标志0xAA55或0x55AA,称为“魔数”(magic number)。如果该标志错误系统就不能启动。

MBR的结构如下表所示


字节偏移(16进制)

字节数

描述

00~1BD

446

引导代码

1BE~1CD

16

分区表项1

1CE~1DD

16

分区表项2

1DE~1ED

16

分区表项3

1EE~1FD

16

分区表项4

1FE~1FF

2

签名值0xAA55或0x55AA





MBR修复



MBR在某些情况下,如病毒或者分区操作不当会引起MBR代码段的损坏,表现的现象就是电脑启动时,屏幕出现黑底一个或几个无意义的字母闪光标或无任何提示闪光标。这种情况在确认硬盘无物理故障后,可以使用一些简单方法进行恢复。

  1. Dos命令

    使用任意启动盘启动到MSDOS提示符,键入命令:

    fdisk /mbr

  2. Diskgenius

    用启动盘,无论dos版或者pe版均可,启动diskgenius,然后选择菜单“硬盘”-“重建主引导记录”,为避免病毒残留,还可执行一次”硬盘“-”清除保留扇区“

  3. Windows xp命令

    xp之下,需要安装tool kit附加工具,为系统增加一个fixmbr命令行工具。执行命令之前,先将故障硬盘挂载到一台好的电脑,或者使用xp安装盘启动电脑,然后执行命令:

    fixmbr \Device\HardDisk0 此处的0或其他数字需先通过diskpart工具的list driver进行查找。

  4. Windows 7命令

    修复方式同xp,只是命令换成bootrec /fixmbr

pa.gif



by版权所有©2014-2022 内蒙古远数科技有限公司.

ICP备案:蒙ICP备19005531号-1       蒙公网安备 15010402000431号