主引导扇区:硬盘的0柱面、0磁头、1扇区(也叫主引导记录MBR),大小为512Byte。
分区表(DPT):位于主引导分区,从偏移01BEH开始到偏移01FDH结束的64字节。
活动分区DBR:DBR(DOS BOOT RECORD,原意为DOS引导记录),位于柱面0,磁头1,扇区1(操作系统可以访问的第一个扇区),即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB(BIOS参数块)
一、硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统。
MBR由三部分构成:
1.主引导程序代码,占446字节
2.硬盘分区表DPT,占64字节
3.主引导扇区结束标志AA55H
地址 | 描述 | 长度 (字节) |
|||
---|---|---|---|---|---|
Hex | Oct | Dec | |||
0000 |
0000 |
0 | 代码区 | 440 (最大 446) |
|
01B8 |
0670 |
440 | 选用软盘标志 | 4 | |
01BC |
0674 |
444 | 一般为空值; 0x0000 | 2 | |
01BE |
0676 |
446 | 标准 MBR 分区表规划 (四个16 byte的主分区表入口) |
64 | |
01FE |
0776 |
510 | 55h | MBR 有效标志: 0xAA55 |
2 |
01FF |
0777 |
511 | AAh | ||
MBR, 总大小: 446 + 64 + 2 = | 512 |
二、硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。
主引导代码实现下列功能:
1.扫描分区表查找活动分区;
2.寻找活动分区的起始扇区;
3.将活动分区的引导扇区读到内存;
4.执行引导扇区的运行代码。
如果主引导代码未完成这些功能,系统显示下列错误信息:
Invalid partition table
Error loading operating system
Missing operating system
三、硬盘分区表DPT是从偏移01BEH开始到偏移01FDH结束的64字节;硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数*(主分区+扩展分区)为什么不能大于4。扩展分区数不得大于1,当前活动分区数必须小于等于 1。这里有下面几点需要注意:
1.Windows系统默认情况下,一般都是只划分一个主分区给系统,剩余的部分全部划入扩展分区。如果存在多个主分区,那么除活动主分区外,其余分区均不可见。(2000/NT之后,在磁盘管理器中可见)
2.在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。
3.在Linux系统中,硬盘分区命名为sda1-sda4或者hda1-hda4(其中a表示硬盘编号可能是a、b、c等等)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。
4.在MBR分区表中,一个分区最大的容量为2T,且每个分区的起始柱面必须在这个disk的前2T内。你有一个3T的硬盘,根据要求你至少要把它划分为2个分区,且最后一个分区的起始扇区要位于硬盘的前2T空间内。如果硬盘太大则必须改用GPT。
偏移 | 长度(字节) | 意义 |
---|---|---|
00H | 1 | 分区状态:00-->非活动分区;80--> 活动分区; 其它数值没有意义 |
01H | 1 | 分区起始磁头号(HEAD),用到全部8位 |
02H | 2 | 分区起始扇区号(SECTOR),占据02H的位0-5; 该分区的起始磁柱号(CYLINDER),占据 02H的位6-7和03H的全部8位 |
04H | 1 | 文件系统标志位,如82--> Linux Native分区 83--> Linux Swap 分区 |
05H | 1 | 分区结束磁头号(HEAD),用到全部8位 |
06H | 2 | 分区结束扇区号(SECTOR),占据06H的位0-5; 该分区的起始磁柱号(CYLINDER),占据 06H的位6-7和07H的全部8位 |
08H | 4 | 分区起始绝对扇区 |
0CH | 4 | 分区总的扇区数 |
四、主引导扇区的最后两个字节(偏移1FEH和偏移1FFH),其值为AA55H,如果这两个标志被修改(有些病毒就会修改这两个标志),则系统引导时将报告找不到有效的分区表。
五、活动分区DBR
DBR(Dos Boot Record)原意为DOS引导记录,通常位于磁盘0磁道1柱面1扇区(操作系统可以访问的第一个扇区),其逻辑扇区号为0。
DBR分为两个部分:
1) DOS引导程序
DOS引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区根目录前两个文件是不是操作系统的引导文件(即IO.SYS和MSDOS.SYS),如果确定存在,就把它读入内存,并把控制权交给它。
2) BPB(BIOS Parameter Block ,BIOS参数块)
BPB用来描述本DOS分区的磁盘信息,它位于DBR偏移0BH处,共13字节。
它的记录包括本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元的大小等重要参数。
以上仅以DOS(FAT16)分区为例,目前DOS已如他日黄花,现在的引导程序已经被更新更先进的引导程序所代替,但不管怎样的引导程序,仍与DOS引导程序处于相同位置。
所以现在的0磁道1柱面1扇区这个位置,准确地说不能叫作DBR,而应该改称为 OBR(OS Boot Record),即操作系统引导扇区, OBR(DBR)是高级格式化程序产生的,如FORMAT、PM、、DISKPART以及Windows的磁盘管理器等。
注:使用WinHex可以读取磁盘的引导扇区数据。
参考资料:
硬盘主引导扇区、分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解(一):
http://hi.baidu.com/hell74111/blog/item/c604ca83128b0099f603a6cd.html/cmtid/6eee1267a74a5128ab184c19
主引导扇区:http://zh.wikipedia.org/zh-cn/主引导扇区
什么是MBR/DPT/DBR/BPB?:http://timjs.blog.hexun.com/28664122_d.html