中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 转贴 RobertYore的《 硬盘分区结构介绍 》
作者:
标题: 转贴 RobertYore的《 硬盘分区结构介绍 》 上一主题 | 下一主题
kickout
高级用户




积分 667
发帖 135
注册 2002-10-25
状态 离线
『楼 主』:  转贴 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的新资料,请不吝赐教。




================================= kickout
大功告成,打个Kiss!
2002-10-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
laochang409
中级用户




积分 297
发帖 44
注册 2004-6-15
状态 离线
『第 2 楼』:  

good

2004-6-23 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: