FAT32文件系统详细介绍

通过使用DiskEditor对硬盘的分析,现对硬盘的MBR区及FAT32文件系统做一个详细的介绍。

 

新硬盘->低格后         变化:所有扇区中的字节数据填充为0x00

低格后->分区后         变化:写硬盘的MBR(主引导扇区)区

分区后->格式华         变化:写硬盘的FAT(文件分配表)区

 

MBR区介绍:

       起始位置:0柱面0磁头1扇区(硬盘的第一个扇区)

       结束位置:0柱面0磁头1扇区

       大小:512(硬盘每个扇区的所占用的字节数)个字节

               

 

00

01

02

03

04

05

06

07

 

08

09

0a

0b

0c

0d

0e

0f

00000000

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00000010

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

…………

000001b0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

80

01

000001c0

01

00

0c

ff

ff

fe

3f

00

00

00

fc

8a

38

01

00

00

000001d0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001e0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001f0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

55

aa

 

              000 ~ 1bd 446字节)executable code(我们不使用,固定填写0x00

              1be ~ 1cd       16字节)1st partition entry(参数解释见下面)

              1ce ~ 1dd       16字节)2st partition entry(同第一个分区)

              1de ~ 1ed       16字节)3st partition entry(同第一个分区)

              1ee ~ 1fd 16字节)4st partition entry(同第一个分区)

              1fe ~ 1ff 2字节)boot record signature(固定值:55 aa

 

现以第一个分区的入口参数为例:

       80           分区状态(80H表示为激活分区, 00H表示为非激活分区)

       01         分区的开始磁头

01 00      分区的开始柱面和扇区(0 ~ 5位为扇区号、8 ~ 15位为柱面号的低8位,6 ~ 7位为柱面号的高两位)

0c           分区的类型(0c表示为FAT32,用LBA方式)

ff            分区的结束磁头

ff fe       分区的结束柱面和扇区(表示同开始磁头)

3f 00 00 00    MBR到第一个分区扇区的扇区个数(一般为硬盘扇区的最大值)

fc 8a 38 01    分区的总扇区数(可以计算扇区的总大小)

 

 

 

 

 

FAT区介绍:

起始位置:0柱面1磁头0扇区

       结束位置:根据硬盘参数不同有所不同

       大小:硬盘的总簇数×4字节

 

FAT区中的BOOT

       起始位置:0柱面1磁头0扇区

       结束位置:0柱面1磁头0扇区

       大小:512字节

 

 

00

01

02

03

04

05

06

07

 

08

09

0a

0b

0c

0d

0e

0f

00000000

eb

58

90

4d

53

57

49

4e

34

2e

31

00

02

08

20

00

00000010

02

00

00

00

00

f8

00

00

3f

00

ff

00

3f

00

00

00

00000020

fc

8a

38

01

fc

4d

00

00

00

00

00

00

02

00

00

00

00000030

01

00

06

00

00

00

00

00

00

00

00

00

00

00

00

00

00000040

80

00

29

ab

0b

64

15

00

00

00

00

00

00

00

00

00

00000050

00

00

46

41

54

33

32

20

20

20

xx

xx

xx

xx

xx

xx

00000060

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

……

000001f0

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

55

aa

 

              000 ~ 059 60字节)各个参数(参数解释见下面)

              000 ~ 059 420字节)executable code(初始值固定)

              000 ~ 059 2字节)boot record signature(固定值:55 aa

 

现解释各个参数的含义:

       eb 58 90               跳转代码(固定值: eb 58 90

       4d 53 57 49 4e 34 2e 31       OEM名字(固定值: 表示MSWIN4.1

       00 02             每扇区的字节数(512

       08                  每簇的扇区数

       20 00             保留的扇区数(通常固定为32

       02                FAT表的个数(通常有2个)

       00 00             未使用(固定为0

       00 00            未使用(固定为0

       f8                  介质类型(硬盘为f8

       00 00            未使用(固定为0

       3f 00             每磁道的最大扇区数(硬盘的参数)

       ff 00                     最大磁头数(硬盘的参数)

       3f 00 00 00    分区中隐藏的扇区数(初始化时写入每磁道的最大扇区数)

       fc 8a 38 01     分区中的扇区总数(自己根据硬盘参数计算)

fc 4d 00 00     每个FAT表占用的扇区数

00 00             Flags(Bits 0-4 Indiate Active FAT Copy)(Bit 7 Indicates whether FAT mirroring is enabled or disable <clear is enabled>)(if FAT mirroring is disabled, the FAT information is only written to the copy indicated by bits 0-4)

00 00             FAT32驱动版本(固定值:00 00

02 00 00 00    根目录区的开始簇号(00 01 两个簇号不使用)

01 00            文件系统信息(后面有相关的说明)扇区所在位置的扇区号(此扇区号为相对位置)

06 00             备份引导扇区所在位置的扇区号(此扇区号为相对位置)

00 00 00 00 00 00 00 00 00 00 00 00 保留

80                  分区的逻辑驱动号(第一个分区固定为80

00                 未使用

29                  扩展标识(固定值:29

ab 0b 64 15    分区的串号(工控机硬盘为74 00 e6 f0

00 00 00 00 00 00 00 00 00 00 00        分区的名称(工控机硬盘为4e 4f 20 4e 41 4d 45 20 20 20 20意思为“NO NAME”)

46 41 54 33 32 20 20 20              FAT名称(固定值:表示“FAT32

 

 

executable code

       具体含义不明(应该是用来引导用的代码)

 

FAT区中的文件系统信息区:

       起始位置:0柱面1磁头1扇区

       结束位置:0柱面1磁头1扇区

       大小:512字节

 

 

00

01

02

03

04

05

06

07

 

08

09

0a

0b

0c

0d

0e

0f

00000000

52

52

61

41

00

00

00

00

00

00

00

00

00

00

00

00

00000010

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

……

000001e0

00

00

00

00

72

72

41

61

75

90

1d

00

44

05

00

00

000001f0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

55

aa

 

              000 ~ 003      1e4 ~ 1fd 30字节)各个参数(参数解释见下面)

              004 ~ 1e3 480字节)未知(固定值:00

              000 ~ 059 2字节)boot record signature(固定值:55 aa

 

现解释各个参数的含义:

       52 52 61 41           标识(First Signature

       72 72 41 61           标识(Signture of FSInfo sector

75 90 1d 00                  剩余的簇数(如果设置为ff ff ff ff,表示未知)(工控机硬盘为fc 94 18 00

       44 05 00 00           最近一次被分配的簇号(工控机硬盘为02 00 00 00

       00 00 00 00 00 00 00 00 00 00 00 00          保留

       00 00                    未知

      

 

FAT区中的未知数据区

       起始位置:0柱面1磁头2扇区

       结束位置:0柱面1磁头2扇区

       大小:512字节

 

 

00

01

02

03

04

05

06

07

 

08

09

0a

0b

0c

0d

0e

0f

00000000

fa

66

0f

b6

46

10

66

8b

4e

24

66

f7

e1

66

03

46

00000010

1c

66

0f

b7

56

0e

66

03

c2

33

c9

66

89

46

fc

66

00000020

c7

46

f8

ff

ff

ff

ff

fa

66

8b

46

2c

66

83

f8

02

00000030

0f

82

cf

fc

66

3d

f8

ff

ff

0f

0f

83

c5

fc

66

0f

00000040

a4

c2

10

fb

52

50

fa

66

c1

e0

10

66

0f

ac

d0

10

00000050

66

83

e8

02

66

0f

b6

5e

0d

8b

f3

66

f7

e3

66

03

00000060

46

fc

66

0f

a4

c2

10

fb

bb

00

07

8b

fb

b9

01

00

00000070

e8

be

fc

0f

82

aa

fc

38

2d

74

1e

b1

0b

56

be

d8

00000080

7d

f3

a6

5e

74

19

03

f9

83

c7

15

3b

fb

72

e8

4e

00000090

75

d6

58

5a

e8

66

00

72

ab

83

c4

04

e9

64

fc

83

000000a0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000000b0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000000c0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000000d0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000000e0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000000f0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000100

d2

03

c0

13

d2

e8

18

00

fa

26

66

8b

01

66

25

ff

00000110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000120

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000130

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000140

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000150

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000160

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000170

0f

a4

c2

10

fb

8b

df

b9

01

00

e8

b4

fb

5a

0f

82

00000180

9f

fb

fb

8b

da

c3

00

00

00

00

00

00

00

00

00

00

00000190

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001a0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001b0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001c0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001d0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001e0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

000001f0

00

00

00

00

00

00

00

00

00

00

00

00

00

00

55

aa

 

 

 

 

 

FAT表介绍:

       起始位置:0柱面1磁道1扇区+保留扇区数+(每个FAT表占用的扇区数×2

       结束位置:根据分区情况确定

       大小:根据分区情况确定

 

 

00

01

02

03

04

05

06

07

 

08

09

0a

0b

0c

0d

0e

0f

00000000

f8

ff

ff

0f

ff

ff

ff

ff

 

ff

ff

ff

0f

ff

ff

ff

0f

00000010

a6

00

00

00

ff

ff

ff

0f

 

ff

ff

ff

0f

ff

ff

ff

0f

……

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000001e0

ff

ff

ff

0f

ff

ff

ff

0f

 

ff

ff

ff

0f

ff

ff

ff

0f

000001f0

ff

ff

ff

0f

ff

ff

ff

0f

 

ff

ff

ff

0f

ff

ff

ff

0f

 

说明:

       每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。0000000H00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号。FAT表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区

 

 

DATA区介绍:

       起始位置:0柱面1磁道1扇区+保留扇区数+(每个FAT表占用的扇区数×2

       结束位置:根据分区情况确定

       大小:根据分区情况确定

 

 

00

01

02

03

04

05

06

07

 

08

09

0a

0b

0c

0d

0e

0f

00000000

57

49

4e

39

38

20

20

20

20

20

20

10

00

00

00

00

00000010

00

00

1b

2f

00

00

e8

60

1b

2f

03

00

00

00

00

00

……

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

000001e0

53

59

53

54

45

4d

20

20

31

53

54

06

00

00

00

00

000001f0

00

00

26

2f

01

00

a7

61

1b

2f

9c

6d

20

60

08

00

 

              000 ~ 01f 32字节) 根目录区中的WIN98子目录(参数解释见下面)

              1e0 ~ 1ff 32字节)根目录区中的SYSTEM.1st文件(参数解释同上)

 

现解释各个参数的含义:

       57 49 4e 39 38 20 20 20              文件名(WIN98

       20 20 20        文件扩展名(无)

10                         文件属性(最高两位保留未用,05位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位

00                         仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等

00 00 00         24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟

00 00            16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期

1b 2f              16位二进制的文件最新访问日期,定义同上

00 00             起始簇号的高16

e8 60             16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数

1b 2f              16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期

03 00             起始簇号的低16

00 00 00 00    32位的文件字节长度(对于子目录,此项为0

 

 

 

图示硬盘分区结构:

开始位置:0柱面0磁道1扇区(逻辑扇区号为0

 


MBR(硬盘主引导分区)

FAT(文件分配表区)…………

BOOT(1个扇区)+文件系统信息区(1个扇区)+未知(固定数据,1个扇区)3个保留扇区

BOOT(1个扇区)+文件系统信息区(1个扇区)+未知(固定数据,1个扇区)3个保留扇区

开始位置:0柱面1磁道1扇区+保留扇区数

                     63 32 95

 FAT

 FAT

DATA(数据区)

开始位置:0柱面1磁道1扇区(逻辑扇区号为63

 

 

 

 

开始位置:0柱面1磁道1扇区+保留扇区数+(每个FAT表占用的扇区数×2

                   63 32 19964×2 40023

 

 

 

 

 

 


以上数据都是超的硬盘中数据,针对不同的硬盘参数和使用,我们应该修改相应的数据。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值