转载注明出处(cppgp: http://blog.csdn.net/cppgp )
2.2 MBR结构
历史悠久的MBR结构自从IBM兼容PC出现以来一直就没变过(但是为支持2TiB以上硬盘而出现的GUID/EFI结构将更改MBR结构)。MBR结构分为三部分,分别是引导指令、分区表DPT (Disk Partition Table)、幻数Magic (Magic=0x55AA)。其中引导指令占用446字节(0~0x1BD),DPT占用64字节(0x1BE~0x1FD),Magic占用2字节。
Magic值总是等于0x55AA,用来标记MBR的有效性。大多数BIOS检测Magic值判断是否为可引导设备,但是也有些BIOS使用另外的字段检测。在所有的小端设备上(例如80x86机器),在写入时需要设置为0xAA55。
DPT是硬盘分区表(Disk Partition Table)的缩写。MBR支持4个基本分区项,每个分区项占用16字节。可以将其中一个基本分区项标记为扩展分区(逻辑分区),扩展分区的第一个扇区称为EBR (Extended Boot Record) ,和MBR有类似的结构,但是只能利用两个基本分区项,其中一个用来划分分区,另一个指向新的EBR,这样就可以实现更多的分区。每个分区项的布局完全一致,如下:
偏移量 字节数 描述
0x00 1 分区状态,
0x80为可引导分区
0x00为不可引导分区
其他值无效
0x01 3 该分区第一个扇区CHS地址,格式见稍后描述
0x04 1 分区文件系统格式,比如NTFS/FAT32/Linux等
0x05 3 该分区最后一个扇区CHS地址,格式见稍后描述
0x08 4 该分区第一个扇区的绝对LBA地址
表示从磁盘开始到该分区的扇区数
0x0C 4 该分区的扇区数量
3字节的CHS地址结构如下:
偏移量 描述
0x00 磁头
0x01 低6位表示扇区,高2位表示柱面的9~10位
0x04 柱面的低8位
对于CHS结构还有疑问者,查阅2.1.4的CHS模式读可加强理解。因为CHS寻址有7.88GiB限制,现在的硬盘一般都是用LBA寻址,因此分区表中有用的字段是状态字段(0x00)、分区格式(0x03)、扇区偏移量(0x08~0x0B)和扇区数量(0x0C