FAT12 文件系统

FAT 简介

FAT全称File Allocation Table,是一种计算机文件系统体系结构。最初于1977年设计用于软盘,20年来,fat很快被广泛应用于整个dos和windows 9x时代的硬盘上。[4]随着磁盘驱动器的发展,文件系统的功能也相应地得到了扩展,产生了三种主要的文件系统变体:fat12、fat16和fat32。

本文主要探讨FAT12文件系统。

FAT 结构

FAT文件系统把存储介质看成一维的数组,基本单位是簇(cluster)。存储介质被划分为3个区域:boot record、FAT、directory和data area。

一个簇包含一个扇区,大小为512B。

image

Boot Record

引导扇区包含了数据和代码,数据被称为BPB(BIOS Parameter Block)。

Offset(decimal) Offset(hex) Size(in bytes) Meaning
0 0x000 3 前三个字节EB 3C 90分解为JMP SHORT 3C NOP。(3C值可能有所不同)这样做的原因是要“翻阅磁盘格式信息(BPB和EBPB)。由于磁盘的第一个扇区已加载到0x0000:0x7c00位置的ram中,并且已执行, 如果没有这种跳转,处理器将尝试执行非代码数据,即使对于不可引导的卷,Windows和OS X都必须提供与模式匹配的代码(或使用E9跳转选项)。 为了满足要求,可以在此处放置带有字节EB FE 90的无限循环。
3 0x003 8 OEM标识符。(后面看不看无所谓) 前8个字节(3-10)是所使用的DOS版本。 接下来的八个字节29 3A 63 7E 2D 49 48和43读出版本名称。 Microsoft的官方FAT规范说,该字段实际上是没有意义的,MS FAT驱动程序将忽略它,但是它确实建议使用值“ MSWIN4.1”,因为某些第三方驱动程序应该检查并期望它具有该值。 DOS的较旧版本也报告MSDOS5.1,Linux格式的软盘可能在此处带有“ mkdosfs”,而FreeDOS格式的磁盘在此处具有“ FRDOS5.1”。
11 0x00B 2 每个扇区的字节数
13 0x00D 1 每个簇的扇区数
14 0x00E 2 保留的扇区数,boot record的扇区包含在其中;也可以说是boot record占用的扇区数。
16 0x010 1 FAT的数量,一般为2
17 0x011 2 根目录文件数(的最大值,must be set so that the root directory occupies entire sectors)。
19 0x013 2 扇区数。如果此值为0,则说明这个卷有超过65535个扇区,真实的数量将存在0x20处
21 0x015 1 此字节指示媒体描述符类型
22 0x016 2 每个FAT的扇区数。仅FAT12/FAT16使用。
24 0x018 2 每个磁道的扇区数
26 0x01A 2 存储介质上的磁头或磁头数
28 0x01C 4 隐藏扇区数(即分区开头的LBA)
32 0x020 4 大扇区数。当卷中超过65535个扇区(在0x13出放不下,仅2 byte)时设置。
36 0x024 1 驱动器号。 此处的值应与BIOS中断Ox13返回的值相同,或与DL寄存器中传递的值相同。 即软盘为0x00,硬盘为Ox80。 该编号无用,因为该介质很可能会移动到另一台计算机上,并插入到具有不同驱动器编号的驱动器中。
37 0x025 1 Windows NT中的标志;否则保留(不使用)。
38 0x026 1 Signature,必须为0x28或0x29
39 0x027 4 卷ID“序列号”。 用于跟踪计算机之间的卷。 如果你想的话,可以忽略它。
43 0x02B 11 卷标签字符串。该字段用空格填充。
54 0x036 8 系统标识符字符串。 该字段是FAT文件系统类型的字符串表示形式。 它用空格填充。 规范说永远不要相信此字符串的内容用于任何用途
62 0x03E 448 Boot代码
510 0x1FE 2 可启动分区签名0xAA55(0x55AA)

Boot Record占据了第一个扇区。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。