|                            FAT 文件系统总结   MBR:Master Boot Record (主引导记录)   DBR:DOS Boot Record (DOS引导记录,位于分区引导扇区)   BPB:BIOS Parameter Block (BIOS参数块)   FAT:File Allocation Table (文件分配表)   Sector:扇区   Cluster:簇   一、 硬盘组织结构   下面是一个包含 4 个分区的硬盘结构示意图,其中分为 3 个基本分区和一个扩展分区。           
二、 FAT 文件系统结构   FAT 文件系统是由按照如下顺序排列的几个部分组成的:   0 – Reserved Region   1 – FAT Region   2 – Root Directory Region (FAT32没有这部分)   3 – File and Directory Data Region FAT 系统的数据存储采用小端(Little Endian)方式,注意到这一点很重要,在使用大 端(Big Endian)的系统中,读取多字节数据的时候必须要经过转换,否则,读取到的数据是不正确的。   例如:一个 32-bit 数据 0x12345678 在 FAT 中的保存方式如下图所示:   三、 主引导扇区   硬盘主引导扇区 = 硬盘主引导记录(MBR)+  硬盘分区表(DPT) MBR:扇区内偏移地址 0 ~ 0x1BD   DPT:扇区内偏移地址 0x1BE ~ 0x1FD,其中又分为 4 个分区表: 第一个分区表:0x1BE ~ 0x1CD 第二个分区表:0x1CE ~ 0x1DD 第三个分区表:0x1DE ~ 0x1ED 第四个分区表:0x1EE ~ 0x1FD 每个分区表的信息如下表所示:   
    
        
            |   |   | 分区表信息 |   |  
            |   |   |   |   |  
            | 字节位移 | 字段长度 | 字段名和定义 |   |  
            |   |   |   |   |  
            | 0x00 | BYTE | 引导指示符(Boot Indicator),指明该分区是否 |   |  
            | 是活动分区,0x80=活动分区,0x00=非活动分区 |   |  
            |   |   |   |  
            | 0x01 | BYTE | 开始磁头(Starting Head) |   |  
            |   |   |   |   |  
            | 0x02 | 6Bits | 开始扇区(Starting Sector),只用了0~5位。后 |   |  
            | 面的两位(第6位和第7位)被开始柱面字段所使用 |   |  
            |   |   |   |  
            |   |   |   |   |  
            |   |   | 开始柱面(Starting Cylinder),除了开始扇区 |   |  
            | 0x03 | 10Bits | 字段的最后两位外,还使用了1位来组成该柱面 |   |  
            |   |   | 值。开始柱面是一个10位数,最大值为1023 |   |  
            | 0x04 | BYTE | 系统ID(System ID),定义了分区的类型,详见 |   |  
            | 下表 |   |  
            |   |   |   |  
            | 0x05 | BYTE | 结束磁头(Ending Head) |   |  
            |   |   |   |   |  
            | 0x06 | 6Bits | 结束扇区(Ending Sector),只使用了0~5位。最 |   |  
            | 后两位(第6、7位)被结束柱面字段所使用 |   |  
            |   |   |   |  
            |   |   | 结束柱面(Ending Cylinder),除了结束扇区字 |   |  
            | 0x07 | 10Bits | 段最后的两位外,还使用了1位,以组成该柱面 |   |  
            |   |   | 值。结束柱面是一个10位的数,最大值为1023 |   |  
            | 0x08 | DWORD | 相对扇区数(Relative Sectors),从该磁盘的开 |   |  
            | 始到该分区的开始的位移量,以扇区来计算 |   |  
            |   |   |   |  
            | 0x0C | DWORD | 总扇区数(Total Sectors),该分区中的扇区总 |   |  
            | 数 |   |  
            |   |   |   |     
    
        
            |   |   |   |   |   |   |   |  
            |   |   | 分区标志类型值及其含义 |   |   |   |  
            |   |   |   |   |   |   |   |  
            |   | 类型值 | 含义 | 类型值 | 含义 |   |   |  
            |   | (HEX) | (HEX) |   |   |  
            |   |   |   |   |   |  
            |   |   |   |   |   |   |   |  
            |   | 0 | 空。DOS或windows不允许 | 5C | Priam Edisk |   |   |  
            |   | 使用,视为非法 |   |   |  
            |   |   |   |   |   |   |  
            |   | 1 | FAT12 | 61 | Speed Stor |   |   |  
            |   | 2 | XENIX root | 63 | GNU HURD or Sys |   |   |  
            |   | 3 | XENIX usr | 64 | Novell Netware |   |   |  
            |   | 6 | FAT16分区小于32M时为 | 65 | Novell Netware |   |   |  
            |   | 0x04 |   |   |  
            |   |   |   |   |   |   |  
            |   | 7 | HPFS / NTFS | 70 | Disk Secure Mult |   |   |  
            |   | 8 | AIX | 75 | PC/IX |   |   |  
            |   | 9 | AIX bootable | 80 | Old Minix |   |   |  
            |   | 0A | OS/2 Boot Manage | 81 | Minix/Old Linux |   |   |  
            |   | 0B | Win95 FAT32 | 82 | Linux swap |   |   |  
            |   | 0C | Win95 FAT32 | 83 | Linux |   |   |  
            |   | 0E | Win95 FAT16 | 84 | 0s/2 hidden C: |   |   |  
            |   | 0F | Win95 Extended(大于 8GB) | 85 | Linux extended |   |   |  
            |   | 10 | OPUS | 86 | NTFS volume set |   |   |  
            |   | 11 | Hidden FAT12 | 87 | NTFS volume set |   |   |  
            |   | 12 | Compaq diagmost | 93 | Amoeba |   |   |  
            |   | 14 | Hidden FAT16<32MB | 94 | Amoeba BBT |   |   |  
            |   | 16 | HiddenFAT16 | A0 | IBM Thinkpad hidden |   |   |  
            |   | 17 | Hidden HPFS/NTFS | A5 | BSD/386 |   |   |  
            |   | 18 | AST Windows swap | A6 | Open BSD |   |   |  
            |   | 1B | Hidden FAT32 | A7 | NextSTEP |   |   |  
            |   | 1C | Hidden FAT32 partition | B7 | BSDI fs |   |   |  
            |   | (using LBA-mode INT 13 | B8 | BSDI swap |   |   |  
            |   |   | extensions) |   |   |  
            |   |   |   |   |   |   |  
            |   | 1E | Hidden LBA VFAT partition | BE | Solaris boot partition |   |   |  
            |   | 24 | NEC DOS | C0 | DR-DOS/Novell DOS |   |   |  
            |   | secured partition |   |   |  
            |   |   |   |   |   |   |  
            |   | 3C | Partition Magic | C1 | DRDOS/sec |   |   |  
            |   | 40 | Venix 80286 | C4 | DRDOS/sec |   |   |  
            |   | 41 | PPC Perp Boot | C6 | DRDOS/sec |   |   |  
            |   | 42 | NTFS动态分区 | C7 | Syrinx |   |   |  
            |   | 4D | QNX4.x | DB | CP/M/CTOS |   |   |  
            |   | 4E | QNX4.x 2nd part | E1 | DOS access |   |   |  
            |   | 4F | QNX4.x 3rd part | E3 | DOS r/0 |   |   |  
            |   | 50 | OnTrack DM | E4 | Speedstor |   |   |  
            |   | 51 | OnTrack DM6 Aux | EB | BeoS fs |   |   |  
            |   | 52 | CP/M | F1 | SpeedStor |   |   |  
            |   | 53 | OnTrack DM6 Aux | F2 | DOS 3.3+secondary |   |   |  
            |   | partition |   |   |  
            |   |   |   |   |   |   |  
            |   | 54 | OnTrack DM6 | F4 | SpeedStor |   |   |  
            |   | 55 | EZ-Drive | FE | LAN step |   |   |  
            |   | 56 | Golden Bow | FF | BBT |   |   |  |