Master Boot Record


  

   Master Boot Record

MBR示意图

简介

   MBR ,全称为 Master Boot Record ,即 硬盘 主引导记录   为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区( 引导程序 、分区表及分隔标识),也就是上面所说的 主引导记录 ;而狭义的MBR仅指 引导程序 而言。   硬盘的0柱面、0磁头、1扇区称为主 引导扇区 (也叫主引导记录MBR)。它由三个部分组成,主引导程序、 硬盘分区表 DPT(Disk Partition table)和硬盘有效标志(55AA)。在总共512字节的 主引导扇区 主引导程序(boot loader) 占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic
   Master Boot Record

 

number,占2个字节,固定为55AA。

注意

   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个部分组成。   ·主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。   ·出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。   ·分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。   ·结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。    分区表参数含义(字节)   1 活动(80)或非活动分区(00)   2 3 4 起始的磁头 01 柱面 01 扇区00值   5 分区类型符 NTFS(07 06)FAT32(0B 0C)扩展(0F 05)   6 7 8 结束的磁头 FE 柱面 FF 扇区FF值   9 10 11 12 本分区之前已用扇区数   13 14 15 16 本分区大小    虚拟MBR   即 EBR (extent boot record)扩展引导记录   其记录表项 与MBR相同 ,用于管理扩展还能分区上的逻辑驱动器。

你可能感兴趣的:(master)