I have a large external SSD disk attached to my new desktop, and because I multiboot between Windows and different versions of Linux, I decided to keep it factory formatted with exFAT, which is an extended FAT32 implementation easily accessible from all of the operating systems for both read and write operations.
In today’s Unix Tutorial project I compile exFAT-FUSE software to accesse the exFAT partition from that external disk my RHEL 8 PC.
What is exFAT
FAT32 and ExFAT originate from Windows. It’s a family of filesystems that are native to Windows but go back to MS-DOS roots so the format is generally well-known, well-documented and widely implemented in moder Unix and Linux systems.
What is exFAT-FUSE
Usually filesystems require kernel modules to be providing desired functionality. Working with filesystems is considered to be low-level enough functionality that they’re done in kernel space (vs regular programs that run in user space).
But when this functionality is not easily available, it’s possible to get some filesystem drivers working in the userspace, by using FUSE technology.
FUSE means Filesystem in USEr space. It requires no kernel module for it to work, provided that functionality is slightly limited.
exFAT-FUSE is an example of FUSE implementation of filesystem driver – you compile binaries and run commands without any updates to Linux kernel or modules.
Installing exFAT Packages from EPEL
Usual approach is to use the EPEL repository and install exFAT utils from it…
Unfortunately, exfat packages are not available in RHEL 8 version of EPEL repository yet:
This leaves us with the option of compiling exfat-fuse package ourselves.
IMPORTANT: you need to have development tools (automake, autoconf, make, gcc and a few other bits and pieces) installed on your RHEL 8 system before going through the rest of procedure.
You can install these tools using dnf:
Compile exFAT-FUSE in RHEL 8
Let’s download the exfat-fuse source code from GitHub:
Now prepare the configuration files for compiling:
… and attempt running the configure script:
Ok, that didn’t work. Need the FUSE development library installed:
This time configure works:
Let’s make the software. Make command compiles source codes into binary objects and eventually gives us executable files with commands that we can execute. End result of making exFAT-FUSE will be a number of exFAT specific commands for creating and mounting exFAT filesystems.
That’s done. Now we need to install the software, for this we run make install:
We now can go into /soft/sbin directory and find new binaries we just installed:
Compiled ExFAT-FUSE binaries in RHEL 8
Mount exFAT Filesystem
The moment of truth!
While in the same /soft/sbin directory, let’s run the mount.exfat-fuse command and attempt to mount the /dev/sdc1 filesystem again: