FAT

The File Allocation Table (FAT) was Article description::originally created for use with MS-DOS (and later pre-NT Microsoft Windows); currently a later revision of FAT (FAT32) is used for USB flash disks. It has made its way over to Linux systems and has official support in the Linux kernel.

As of August 26th, 2019 Microsoft has published the exFAT filesystem specification which means support for exFAT can be worked into the mainline Linux kernel. Kernel 5.4 includes initial staging code for support.

Kernel
When planning on FAT s, users may need to specify a   option with mount. In the example above the codepage for the United States and Canada is used, however other codepages can be enabled a necessary. Optionally, users can also set a default codepage for FAT in the kernel configuration. Be sure each codepage value which is to be used has been enabled in the kernel.

Avoid setting  to ; it is not recommended. Instead, pass the  option when  FAT partitions (this requires CONFIG_NLS_UTF8 to be enabled in the kernel). For further information see or see the appropriate kernel documentation at

Emerge
The package is needed for FAT userspace utilities:

Usage
It should be possible to mount FAT filesystems with the command. Resizing could be done using.

Slow file transfer speeds
If file transfer speeds are slow (can be viewed using ), ensure the filesystem is mounted with the  filesystem option. Edit (or  when using autofs) system files as needed, likely removing the   mount option. By default, filesystems are mounted using the  mount option.

If file transfer speeds are still slow, try remounting the filesystem with the  mount option:

Alternative operating system compatible filesystems
Try UDF filesystem using UDFTools, requiring and Linux kernel UDF filesystem driver. Recently code was added to mkudffs for a fix for creating a mock partition increasing compatibility with Microsoft related operating systems. If using an older Linux kernel, ensure block size is set to 512 for increased compatibility. Most options are now default for compatibility, except for the required  creating the mock partition.

Try Samsung's F2FS filesystem.

UTF-8/UTF-16 character hardware bugs
Sometimes hardware firmware bugs will occur on embedded devices (eg. car radios) when reading their required formatted FAT/FAT32 filesystems containing UTF-8 characters. A workaround is to ensure initially mounting the FAT filesystem using (current default) mount options.

For short filenames,  is IBM-PC characters or basically ASCII. For long filenames,  specifies ASCII. The option  is default, and can also try   option. Of which, are all current defaults. Additionally to further remedy UTF-8/UTF-16 incompatible characters, use a loop with to replace all incompatible UTF-8/UTF-16 characters with an underscore or other ASCII character. (See this replace_chars.sh script.)

For reference, this bug was encountered with a Sony car radio. The MEX-GS610BT radio model would hard reset upon attempting to read a USB flash media/drive containing UTF-8/UTF-16 characters.

As mentioned previously, see, the Linux Kernel vfat source code documentation, for further explanation on whether to use codepage, iocharset, or utf8 mount options.

Unsorted files and folders
When writing files to the FAT/FAT32 filesystem, devices used for reading the filesystem may show the files and folders as unsorted. Commonly, viewer prefer seeing files and folders sorted alphabetically. Install, and issue the following command:

External resources

 * - Documentation on the VFAT filesystem included with the Linux kernel sources.
 * FAT filesystem and Linux - from Wikipedia
 * FAT - from the Arch Linux wiki