FAT File System Learning Path

Even though the FAT family of file systems are widely used, there exist few high-quality resources out there. As the file system concepts are mostly thought of as outdated almost no new file system related books are being published on it.

Even though there exist fewer resources, the ones we encounter well explain the concepts. Here are some of the resources I find useful for understanding the FAT file systems. I also mention the specific book chapters as some of the books’ main themes are not FAT file systems but they present them thoroughly in these few chapters.

FAT Reading List

File System Forensic Analysis By Brian Carrier

FAT Specification By Microsoft Corporation (2005)

FAT On-Disk Format Overview By Microsoft(2000)

FAT Long File Name Specification By Microsoft (1992)

FAT Extended Attributes (2000)

FAT32 File System By Mustafa Katipoğlu

FAT By LSoft Technologies

FAT Hands-on Experience

While the books and articles help you understand the FAT file system conceptually, it is also important to get practical and work with a FAT file system source code.

Here I recommend you to work with the open-source Elm-Chan FAT file system. It is well documented both in terms of FAT standards as well as the provided API.

For example, Elm-Chan FatFs Path Name documentation well explains how they implemented the path names, the volume structure and their behaviour when interpreting different input paths. The theoretical knowledge combined with the different implementations can help you grasp the concepts better.

FAT Compatibility

The following compatibility hints can be given to the users so that they do not have operating system-related incompatibilities.

Windows Compatibility

The following names are reserved:

CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN, NUL

FAT Overview By Windows [3]

UNIX Compatibility

Many of the UNIX tools have a special marker “–” to signal the end of the options. Files starting with ‘-‘ and ‘--‘ are a pain from the shell, since those character sequences are interpreted by the application, not the shell.

gzip -9vf -- -mydashedfilename
[r1]

FAT Tools

Fatcat – FAT Forensic Exploration Tool

Dosfstools – mkfs, fsck and its tests.

FAT Interface

Here is an example FAT interface found in an open-source fat32 library.

FAT File System Learning Path FAT file system learning path
Image Source

Further Reading

Here are a set of articles I have seen on the web which can help you better understand the FAT file system.

[0] “Portability Guide,” Boost.org, 2022. [Online]. Available: https://www.boost.org/doc/libs/1_36_0/libs/filesystem/doc/portability_guide.htm. [Accessed: Dec. 19, 2022]

[1] Archiveddocs, “What Is FAT?: Local File Systems,” Microsoft.com, Oct. 08, 2009. [Online]. Available: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc738068(v=ws.10). [Accessed: Dec. 19, 2022]

[2] Archiveddocs, “How FAT Works: Local File Systems,” Microsoft.com, Oct. 08, 2009. [Online]. Available: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc776720(v=ws.10). [Accessed: Dec. 19, 2022]

[3] Deland-Han, “Overview of FAT, HPFS, and NTFS File Systems – Windows Client,” Microsoft.com, Sep. 23, 2021. [Online]. Available: https://learn.microsoft.com/en-us/troubleshoot/windows-client/backup-and-storage/fat-hpfs-and-ntfs-file-systems. [Accessed: Dec. 19, 2022]

[4] C. Staff, “Long File Name (LFN) Entries in the FAT Root Directory of Floppy Disks | CodeGuru,” CodeGuru, Jun. 29, 2007. [Online]. Available: https://www.codeguru.com/cplusplus/long-file-name-lfn-entries-in-the-fat-root-directory-of-floppy-disks/. [Accessed: Dec. 19, 2022]

[5] C. Staff, “FAT Root Directory Structure on Floppy Disk and File Information | CodeGuru,” CodeGuru, Jun. 15, 2007. [Online]. Available: https://www.codeguru.com/cplusplus/fat-root-directory-structure-on-floppy-disk-and-file-information/. [Accessed: Dec. 19, 2022]

[6] Archiveddocs, “FAT Tools and Settings: Local File Systems,” Microsoft.com, Oct. 08, 2009. [Online]. Available: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc737727(v=ws.10). [Accessed: Dec. 19, 2022]

References

[r1] erickson, “What are reserved filenames for various platforms?,” Stack Overflow, Sep. 23, 2008. [Online]. Available: https://stackoverflow.com/questions/122400/what-are-reserved-filenames-for-various-platforms. [Accessed: Dec. 19, 2022]

By codeguru