1.MBR
硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将控制权转给指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。
MBR由三部分构成:
1.主引导,占446字节
2.硬盘分区表DPT,占64字节
3.主引导扇区结束标志AA55H
一、硬盘的主引导程序代码是从偏移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
2.DPT
硬盘分区表DPT是MBR中从偏移01BEH开始到偏移01FDH结束的64字节;硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。
主引导扇区的最后两个字节(偏移1FEH和偏移1FFH),其值为AA55H,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。
3.DBR
分区引导扇区DBR(DOS BOOT RECORD)是由FORMAT高级格式化写到该扇区的内容;DBR是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的DBR才会被MBR装入内存运行。
DBR主要由下列几个部分组成:
1.跳转指令,占用3个字节的跳转指令将跳转至引导代码。
2.厂商标识和DOS版本号,该部分总共占用8个字节。
3.BPB(BIOS Parameter Block, BIOS 参数块)。
4.操作系统引导程序。
5.结束标志字,结束标志占用2个字节,其值为AA55
DBR中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。
两个常见的DBR:
一、FAT32的分区引导扇区
为了使加载的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统分区引导扇区占据了6个扇区,只有前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。分区引导扇区对于操作系统的启动和磁盘文件的具有至关重要的作用;引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。
由于分区引导扇区的重要性,FAT32文件系统在在第一个分区引导扇区的6个扇区后的6个扇区里保留了分区引导扇区的备份,在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。
分区引导扇区的第一个扇区的前三个字节是一条跳转指令,然后是8个字节长的OEM ID(厂家标识)和版本号,其后是简称为BPB的BIOS参数块(BIOS Parameter Block)。对于FAT32其各部分的意义如下表:
偏移地址 | 长度(字节) | 意 义 |
0BH | 2 | 每个扇区的字节数,常取512。 |
0DH | 1 | 每簇扇区数;可以是1, 2, 4, 8, 16, 32, 64, 128,取决于文件系统格式及分区大小。 |
0EH | 2 | 为操作系统保留的扇区数;FAT32时多为十进制的32,FAT16时为1,有的格式化可能将它设为36或63。 |
10H | 1 | FAT表的个数;常取2。 |
11H | 2 | 在FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。 |
13H | 2 | 值为00H,为保持兼容性而保留,未使用。 |
15H | 1 | 磁盘介质标志,硬盘为F8。 |
16H | 2 | 未使用,值为00H。 |
18H | 2 | 每个磁道的扇区数。 |
1AH | 2 | 磁盘的磁头数。 |
1CH | 4 | 分区前隐藏扇区的个数。 |
20H | 4 | 逻辑磁盘中的扇区总数。 |
24H | 4 | 每个FAT表所占的扇区数。 |
28H | 2 | FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表。 |
2AH | 2 | 文件系统的主次版本(保留)。 |
2CH | 4 | 磁盘根目录的起始簇号。 |
30H | 2 | 文件系统参数的扇区号,通常位于引导扇区的下一个扇区。 |
32H | 2 | 备份分区引导扇区的逻辑扇区号。 |
34H | 12 | 保留,未使用。 |
40H | 1 | 中断13呼叫的预设值,指明访问的设备;软盘为00H,硬盘为80H。 |
41H | 1 | 用于中断13呼叫。 |
42H | 1 | 磁盘读写参数扩展标志,其值为29H。 |
43H | 4 | 格式化时随机产生的磁盘卷的序列号。 |
47H | 11 | 格式化时人工输入的磁盘卷标号。 |
52H | 8 | 文件系统的标识号(FAT32)。 |
从偏移0x5A开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的,此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。扇区的最后两个字节存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执行DBR相关指令。
分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区,除了保存扇区的标识信息(RraA(00H)和rrAa(1E4H))外,还可能在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。
分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码
二、NTFS的分区引导扇区
对于NTFS分区来说,分区引导扇区DBR只占用一个扇区,并且在该分区的最后一个扇区做了备份;NTFS的引导扇区也是完成引导和定义分区参数,NTFS分区的引导扇区不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。其BPB参数如下表所示:
偏移地址 | 长度(字节) | 常用值 | 意 义 |
0x0B | 2 | 0x0002 | 每扇区字节数 |
0x0D | 1 | 0x08 | 每簇扇区数 |
0x0E | 2 | 0x0000 | 保留扇区 |
0x10 | 3 | 0x000000 | 总为0 |
0x13 | 2 | 0x0000 | NTFS未使用,为0 |
0x15 | 1 | 0xF8 | 介质描述 |
0x16 | 2 | 0x0000 | 总为0 |
0x18 | 2 | 0x3F00 | 每磁道扇区数 |
0x1A | 2 | 0xFF00 | 磁头数 |
0x1C | 4 | 0x3F000000 | 隐藏扇区数 |
0x20 | 4 | 0x00000000 | NTFS未使用,为0 |
0x28 | 8 | 0x4AF57F0000000000 | 扇区总数 |
0x30 | 8 | 0x0400000000000000 | $MFT的逻辑簇号 |
0x38 | 8 | 0x54FF070000000000 | $MFT Mirr的逻辑簇号 |
0x40 | 4 | 0xF6000000 | 每MFT记录簇数 |
0x44 | 4 | 0x01000000 | 每索引簇数 |
0x48 | 8 | 0x14A51B74C91B741C | 卷标 |
0x50 | 4 | 0x00000000 | 检验和 |