ExFAT
exFAT (Extended File Allocation Table), a Microsoft file system optimized for flash memory storage such as USB sticks, is available to Gentoo Linux systems through a FUSE module.
The availability of the exFAT filesystem had long been poor, because of its proprietary, unpublished specification. The situation, however, was improved after release of Linux kernel 5.7 with native exFAT driver implementation.[1]
Installation
Kernel
Kernel 5.7 and above
Enable exFAT support in the kernel:
File systems --->
DOS/FAT/EXFAT/NT Filesystems --->
<*> exFAT filesystem support
FUSE system for earlier kernels
Make sure support for Filesystem in Userspace (FUSE) is enabled in the kernel:
File systems --->
<*> FUSE (Filesystem in Userspace) support
Emerge
Kernel 5.7 and above
Install the sys-fs/exfatprogs package:
root #
emerge --ask sys-fs/exfatprogs
FUSE system for earlier kernels
Install the FUSE exfat package:
root #
emerge --ask sys-fs/fuse-exfat
For filesystem creation and manipulation beyond that of the mount command it is necessary to install the sys-fs/exfat-utils package:
root #
emerge --ask sys-fs/exfat-utils
Usage
Formatting
Kernel 5.7 and above
To create an exFAT file system, use mkfs.exfat:
user $
mkfs.exfat
exfatprogs 1.0.4 Usage: mkfs.exfat -L | --volume-label=label Set volume label -c | --cluster-size=size(or suffixed by 'K' or 'M') Specify cluster size -b | --boundary-align=size(or suffixed by 'K' or 'M') Specify boundary alignment -f | --full-format Full format -V | --version Show version -v | --verbose Print debug -h | --help Show help
For instance, to create it on a removable device present at /dev/sde1 while assigning "Flash" as the file system label:
root #
mkfs.exfat -L Flash /dev/sde1
FUSE system for earlier kernels
To create an exFAT file system, use mkfs.exfat (or the mkexfatfs command, which is synonymous):
user $
mkfs.exfat
mkexfatfs 1.2.1 Usage: mkfs.exfat [-i volume-id] [-n label] [-p partition-first-sector] [-s sectors-per-cluster] [-V] <device>
For instance, to create it on a removable device present at /dev/sde1 while assigning "Flash" as the file system label:
root #
mkfs.exfat -n Flash /dev/sde1
Mounting
Kernel 5.7 and above
With native support, standard mount commands work perfectly:
root #
mount /dev/sde1 /mnt/flash
FUSE system for earlier kernels
The file system can then be mounted using the mount.exfat-fuse command:
root #
mount.exfat-fuse
FUSE exfat 1.0.1 Usage: mount.exfat-fuse [-d] [-o options] [-v] <device> <dir>
For instance, to mount the file system created in the above example:
root #
mount.exfat-fuse /dev/sde1 /mnt/flash
To unmount, simply use the umount command:
root #
umount /mnt/flash
Integrity checking
To check the integrity of an exFAT filesystem, use fsck.exfat:
root #
fsck.exfat /dev/sde1
Troubleshooting
Compatibility with macOS
To allow ExFAT formatted disks to be read by macOS, the disk must use a GUID partition table, and have the Microsoft basic data flag set.
See also
- FAT — filesystem originally created for use with MS-DOS (and later pre-NT Microsoft Windows).
- NTFS — a proprietary disk filesystem by Microsoft for Windows and Windows-based operating systems.
- Ext4 — an open source disk filesystem and most recent version of the extended series of filesystems.