查阅贴子内容
标题: 硬盘分区结构介绍(修复必读)
--------------------------------------------------------------------------------
硬盘分区的主要结构说明:
(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(还找得到吗?)来启动……
首先我们要对硬盘分区的基本概念进行一些初步的了解,硬盘的分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个。且基本分区可以马上被使用但不能再分区。扩充分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分下去的是什么呢?它就是逻辑分区(logical partion),况且逻辑分区没有数量上限制。
对习惯于使用dos或windows的用户来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和目录,它们的文件结构都是独立的,非常好理解。但对这些用户初上手red hat linux吗,可就有点恼人了。因为对red hat linux用户来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。
http://fedora.linuxsir.org/main/?q=node/82 FEDORA 中文用户