MarketFAT filesystem and Linux
Company Profile

FAT filesystem and Linux

Linux has several filesystem drivers for the File Allocation Table (FAT) filesystem format. These are commonly known by the names used in the mount command to invoke particular drivers in the kernel: msdos, vfat, and umsdos.

History and support
Most of the major Linux distributions, including RedHat, SuSE, and Debian, do not employ '''' to permit installation of Linux on a FAT disc volume. A few distributions do, however. These include distributions such as Phat Linux, which installs in C:\PHAT on DOS by unpacking a ZIP file and is booted by running a COMMAND.COM script named LINUX.BAT, UVFAT, an extension of UMSDOS to use the Windows data structures for long filenames instead of its own, was discontinued before release. They should work in 2.4.x kernels. Earlier Linux distributions which used UMSDOS are MuLinux, Monkey Linux and Winlinux 2000. == Feature comparison ==
Feature comparison
All of the Linux filesystem drivers support all three FAT types, namely FAT12, FAT16 and FAT32. Where they differ is in the provision of support for long filenames, beyond the 8.3 filename structure of the original FAT filesystem format, and in the provision of Unix file semantics that do not exist as standard in the FAT filesystem format such as file permissions. The ' filesystem driver provides no extra Unix file semantics and no long filename support. If a FAT disk filesystem is mounted using this driver, only 8.3 filenames will be visible, no long filenames will be accessible, nor will any long filename data structures of any kind on the disk volume be maintained. The ' filesystem driver provides long filename support using the same disk data structures that Microsoft Windows uses for VFAT long filename support on FAT format volumes, but it does not support any extra Unix file semantics. The '''' filesystem driver provides long filename support, and extra Unix file semantics. However, it does so using on-disk data structures that are not recognized by any filesystem drivers for any operating systems other than Linux. The key advantage to '''' out of the three is that it provides full Unix file semantics. Therefore, it can be used in situations where it is desirable to install Linux on and run it from a FAT disk volume, which require such semantics to be available. However, Linux installed on and running from such a disk volume is slower than Linux installed on and running from a disk volume formatted with, for example, the ext2 filesystem format. Further, unless a utility program is regularly run every time that one switches from running Windows to running Linux, certain changes made to files and directories on the disk by Windows will cause error messages about inaccessible files in Linux. ', although lacking full Unix file semantics and lacking the ability to have Linux installed on and running from a FAT disk volume, does not have the aforementioned disadvantages of ' when it comes to simply sharing data on a FAT disk volume between Linux and other operating systems such as Windows. Its data structures are the same as those used by Windows for VFAT long filenames, and it does not require running a synchronization utility in order to prevent Windows and Linux data structures from becoming disjointed. For this reason, it is the most appropriate of Linux's FAT filesystem drivers to use in the majority of situations. == Commonalities ==
Commonalities
As mentioned previously, all of the Linux filesystem drivers support all of the three File Allocation Table sizes, 12-bit, 16-bit, and 32-bit. Other common features that they all support are various Linux mounting options (specified with the -o option to the mount command): ;uid and gid:These two options tell the filesystem driver to set the (default, in the case of ') owner user ID and group ID to be a single, specified, value for all files in the volume. Both IDs are specified as numeric values (as to be found in the /etc/passwd file). So, for example, to specify to the ' filesystem driver that all files and directories are to have owner ID 745 and group ID 15, the mount command would be invoked as Linux filesystem drivers do not at present incorporate support for file/directory passwords on FAT12/FAT16/FAT32 volumes and multi-user world/group/owner access permissions for read/write/delete/execute rights on FAT12/FAT16 volumes as implemented in various operating systems of the Digital Research family, including DR-DOS, PalmDOS, Novell DOS, OpenDOS, FlexOS, Concurrent DOS, Multiuser DOS, System Manager and REAL/32. ;umask:This option sets the umask to apply globally to all files in the volume. For example, to specify to the '''' filesystem driver that no "group" or "other" access is to be allowed, the mount command would be invoked as ;conv:This option specifies file content conversion semantics. It is possible for the filesystem drivers to convert the newline conventions in files, between LF termination and CRLF termination, on the fly as files are read and written. By default this conversion is entirely disabled. The filesystem drivers can perform conversion for some files, attempting to auto-detect what files to convert based upon the extension portion of the filename, or globally for all files. These three conversion levels are specified as conv=b (for "binary"), conv=a (for "auto-detect"), and conv=t (for "text"), respectively. The latter two options carry an inherent risk of corrupting non-text file data. No conversion at all is the default. == ==
{{Not a typo|umsdos}}
Data structure The '''' FAT filesystem driver stores all of the extra information relating to Unix file semantics in what, to another FAT filesystem driver, appears to be just a normal file in each directory and subdirectory, named --LINUX-.---. The installation of Linux into such a directory in the first place simply involves unpacking files from an archive into that directory and its subdirectories. Such an installation also generally requires the use of a swap file rather than a swap partition for Linux, however this is related to the desire not to repartition the hard disc and unrelated to the '''' filesystem driver per se. == Accessing FAT formatted volumes without kernel support ==
Accessing FAT formatted volumes without kernel support
Although the filesystem drivers in the kernel make it possible to access files and directories on FAT formatted volumes in the normal manner, it is also possible to do so without kernel driver support, using the utility programs that form the mtools utility suite. Like the '''' FAT filesystem driver, provides long filename support using the same disc data structures that Microsoft Windows uses. Alternately, one of the FUSE filesystem drivers may be used—FatFuse, FuseFat or . == POSIX overlay filesystem ==
POSIX overlay filesystem
A modern equivalent of UMSDOS is POSIX Overlay Filesystem (). It works in FUSE. ==See also==
tickerdossier.comtickerdossier.substack.com