2.2.2 主引导记录扇区MBR(2)
2.分区表项数据结构
分区表区域共占用64个字节,一个分区表项由以下几个部分组成:
是否可引导标志。
分区起始CHS地址。
分区类型。
分区结束CHS地址。
分区起始LBA地址。
分区大小扇区数。
分区表项数据结构如表2.2所示。
表2.2 分区表项数据结构
偏移(十六进制) |
字节数 |
描 述 |
00~00 |
1 |
可引导标志,0x00 – 不可引导;0x80 – 可引导 |
01~03 |
3 |
分区起始CHS地址 |
04~04 |
1 |
分区类型 |
05~07 |
3 |
分区结束CHS地址 |
08~0B |
4 |
分区起始LBA地址(Little-endian顺序) |
0C~0F |
4 |
分区大小扇区数(Little-endian顺序) |
各部分含义解释如下。
(1) 0x00~0x00:1个字节,可引导标志。只有两种可能值,0x80为可引导,0x00为不可引导,其他值为非法值。
这个标志并不是必需的,只有在磁盘上有引导分区时,才会将该分区对应的分区表项的该字节置为0x80。
另外,如果安装了多操作系统并且使用了多系统引导软件,由用户选择使用哪个分区内的操作系统启动时,多系统引导软件会在用户选择了正确的引导分区后将该分区所对应的分区表项中的引导标志字节置为0x80,以使其可引导。
注意:在四个分区表项中,最多只能有一个分区表项被标记为可引导,否则为非法。
(2) 0x01~0x03:3个字节,分区的起始CHS地址。
第一个字节用于记录分区起始磁头号。
第二个字节的低6位用于记录分区起始扇区号。
用10个bit记录分区起始柱面号:第二个字节的高两位作为起始柱面号的高两位,第三个字节的8个bit作为分区起始柱面号的低8位。
提示:只有Windows 98及Windows ME等较老的操作系统才使用这个CHS区域的值,Windows 2000及以后的操作系统则忽略它们,而只使用LBA区域的值来定位分区的位置及大小。保留CHS参数只是为了兼容较早的操作系统的需要。对于工具类软件,则可能会因软件的不同而使用CHS参数或LBA参数。在分区表被破坏需要手工重写分区表时,可以不必关心CHS参数,虽然据称这三个参数全为0会被判定为分区表项不合法,但在Windows XP下实验发现这三个参数全部为0并不会影响数据再现,其他潜在影响未知。