一、声明和环境描述
1、本文来源
本文很多内容来自于SD卡中FAT32文件格式快速入门(图文详细介绍),这篇文章的理论阐释很到位,实验编排也不错。本文将这篇文章中讲解的部分实验重新演绎了一遍。
2、本文测试环境
测试硬件:物理硬盘 和 8G金士顿U盘(格式化)
操作系统:"Windows XP"
测试软件:WinHex
二、FAT32文件系统布局
三、文件系统MBR
1、MBR(Master Boot Record,硬盘的主引导记录)
为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。
2、DPT(Disk Partition Table,硬盘分区表)
DPT分区表位于MBR内,占据64 Bytes的空间,又将这64 Bytes的空间按照16 Bytes为一个表项进行划分,共4个表项。
3、MBR实例测试
<1> 硬盘测试
紫色区域主要为主引导代码区,红色区域的64字节交给了DPT,着重讲一下DPT分区表
【1】0x1BE 0x80,可引导标志;0x00代表不可引导
【2】0x1BF~0x1C1 分区起始地址CHS
【3】0x1C2 分区类型07
【4】0x1C3~0x1C5 分区结束地址CHS
【5】0x1C6 0x00 00 00 13,从磁盘开始到该分区开始的偏移量,以扇区来计算。此分区的偏移量为19,这与WinHex的分析一致
【6】0x1CA~0x1CF 0x02 80 0F ED,十进制为41947117,每个扇区512Bytes,所以该区大小21476923904Bytes,这与我C盘空间20G是匹配的
<2> U盘测试
U盘通常没有进行多个分区,就只有一个分区,所以在DPT分区表中就记录了一项内容。
紫色区域主要为主引导代码区,红色区域的64字节交给了DPT,着重讲一下DPT分区表
【1】0x1BE 0x80,可引导标志;0x00代表不可引导
【2】0x1BF~0x1C1 分区起始地址CHS
【3】0x1C2 分区类型0C
【4】0x1C3~0x1C5 分区结束地址CHS
【5】0x1C6 0x00 00 00 3F,从磁盘开始到该分区开始的偏移量,以扇区来计算。此分区的偏移量为63,这与WinHex的分析一致
【6】0x1CA~0x1CF 0x00 EF FF C1,也就是此分区包含15728577个扇区,每个扇区512Bytes,所以该区大小8053031424Bytes。需要注意的是这个分区不包含起始扇区的31.5KB。也就是说此分区的空间是U盘总容量去除“起始扇区”后的空间。15728577+63(起始扇区)=15728640(U盘总扇区)