Board logo

标题: 转贴 RobertYore的《 硬盘分区结构介绍 》 [打印本页]

作者: kickout     时间: 2002-10-26 00:00    标题: 转贴 RobertYore的《 硬盘分区结构介绍 》

硬盘分区的主要结构说明: (Cylinder柱面/磁道-Side磁头-Sector扇区地址以下简称为?-?-?) 《主分区》 名称 地址 长度(扇区)
-----------------------------------------------------------
主引导记录(Main Boot Record): 0-0-1 1 系统扇区(System Secotrs): 0-0-2,0-0-63 62 引导扇区(Boot): 0-1-1 1 FAT16系统中,此扇区包含BPB(BIOS Parameter Block)表,描述逻辑盘结构组成,包含 隐藏扇区数目(从0-1-1开始计算)、FAT扇区数、FAT拷贝数、硬盘磁头总数、根目录表项 最大值等。 FAT32系统中,BPB表的偏移与FAT16不同,但表项基本相同。整个隐藏扇区部分都作为逻辑 盘的描述区域。 隐藏扇区(Hidden Secotrs): FAT16 0-1-1 1 FAT32 0-1-1 32 文件分配表(File Allocation Table): FAT16 0-1-2 根据逻辑盘容量变化 FAT32 0-1-33 根据逻辑盘容量变化 说明: FAT16的每个表项由2字节(16位)组成,通常每个表项指向的簇包含64个扇区,即32K字节。 逻辑盘容量最大为2047MB。 FAT32的每个表项由4字节(32位)组成,通常每个表项指向的簇包含8个扇区,即4K字节。 逻辑盘容量最小为2048MB。 对于C分区,在MBR的偏移01c2H处,FAT16为06H,FAT32为0CH。 *** 有关计算公式为: 每个扇区长度=512字节 总簇数=逻辑盘容量/簇容量 总簇数=FAT表长度(字节)/每个表项长度(字节)-2 FAT表长度=逻辑盘容量/簇容量*每个表项长度 FAT表的开始由介质描述符+一串“已占用”标志组成: FAT16硬盘----F8 FF FF 7F FAT32硬盘----F8 FF FF 0F FF FF FF 0F 每个有效的FAT结构区包含两个完全相同的拷贝:FAT1、FAT2 文件目录表(File Directory Table),即根目录区,又称为ROOT区: 紧跟在FAT2的下一个扇区,长度为32个扇区(256个表项)。如果支持长文件名,则每个表项 为64个字节,其中,前32个字节为长文件链接说明;后32个字节为文件属性说明,包括文件长 度、起始地址、日期、时间等。如不支持长文件名,则每个表项为32个字节的属性说明。 数据区(Data Area): 紧跟在FDT的下一个扇区,直到逻辑盘的结束地址。 《扩展分区》 名称 地址 长度(扇区)
-----------------------------------------------------------
扩展分区(Extend Partition): ?-y-1 1 系统扇区(System Secotrs): ?-y-2,?-y-63 62 引导扇区(Boot): ?-(y+1)-1 1 其后各项与主分区相同…… 扩展逻辑盘寻找说明: 1 在主分区的分区表中,寻找扩展分区的物理地址(道-头-扇) 2 在扩展分区地址所指扇区尾部,查找扩展分区表(扩展卷),结构与主分区表相同 3 扩展分区表的物理地址中,将磁头数加1,其余不变,则为第一个逻辑驱动器(如D盘)的BOOT扇 区物理地址 4 根据扩展驱动器的系统分类(FAT16/FAT32,以2048MB为界限),查看FAT表与ROOT区 5 如果还有E、F……等盘,则继续寻找符合要求的BOOT扇区,BOOT扇区规定在每个磁头的1号扇区 附录:分区表项结构说明 分区表自MBR扇区偏移01BEH开始,共4个分区,每个分区16字节; 第一个分区的结构如下: 偏移 值 说明 01BE 80 ;启动标志 01BF 01 ;分区开始的磁头号 01C0 01 ;分区开始的扇区号,低6位;柱面号,高2位 01C1 00 ;分区开始的柱面号,低8位 01C2 ?? ;分区类型,06=FAT16的C,0C=FAT32的C,05=扩展分区 01C3 ?? ;分区结束的磁头号 01C4 ?? ;分区结束的扇区号,低6位;柱面号,高2位 01C5 ?? ;分区结束的柱面号,低8位 01C6-01C9 ?? ;相关扇区数,通常为63 01CA-01CD ?? ;分区的总扇区数 分区表结束标志: 01FE 55 01FF AA 关于MS-DOS 6.xx以上版本的两个明显BUG的说明: 1 FDISK.EXE 在FDISK建立分区时,将对每个磁头的1号、7号扇区进行覆盖,填入512字节的F6;覆盖 区域范围从BOOT区开始,结束地址不详。 2 启动过程 在MS-DOS启动过程中(包括WINDOWS 9X启动的MS-DOS 7.XX),将搜索每个逻辑驱动器, 如果在扩展分区表中的某个逻辑盘的分区类型标志被病毒或其他因素(如王江民的KV???的 某个版本,为“惩罚”盗版……)改写为05H后,又将该分区指针指向硬盘头部的主引导记录, 那么……呵呵,你再看看你的硬盘还能启动吗?用软盘(MS-DOS 5.0以上版本)还能启动吗? ……要嘛改个字节,要嘛就用DOS 3.31(还找得到吗?)来启动…… 注意,上述分区表中的物理地址资料较为陈旧,哪位朋友有LBA硬盘BIOS的新资料,请不吝赐教。

作者: laochang409     时间: 2004-6-23 00:00
good