Sometimes Linux users need to exchange files with computers running other operating systems, such as Windows or macOS. That’s pretty simple with a USB drive, as long as it’s formatted correctly.
The universal format?
Linux hard drives are usually formatted in ext4, although other formats are slowly gaining popularity, such as btrfs and ZFS. These are Linux-specific file system formats. With USB drives, it’s a different story. For maximum flexibility and use on Windows or macOS, as well as Linux, they need to be formatted to something that works on all three operating systems.
Obviously, using a Linux-only format won’t give us what we need. You’re also not using an Apple-exclusive format. The closest thing we had to an Esperanto of file storage formats was FAT32. USB drives formatted according to this Microsoft standard can be used interchangeably on Windows, Linux, and macOS. That was great until you tried to store a file that was larger than 4 GB. That was the fixed upper limit file size built into FAT32.
The exFAT file system overcomes that limitation. It is another format from Microsoft and is compatible with macOS and, since kernel 5.4, Linux. That makes it a strong contender for the best file system for USB drives that need to work with all three big operating systems. It doesn’t have the drawbacks of FAT32, but it doesn’t have the overhead and added functionality of NTFS either. That also makes it fast.
As long as you have a Linux kernel version 5.4 or higher, you can use exFAT just as easily as any other supported file system. At the time of writing, the current Linux kernel is 5.18, so as long as you have a recently updated and patched system, you’re good to go. We will demonstrate a graphical method using GNOME Disks, as well as a terminal method.
The most important steps
When you write a new file system to a USB drive, everything on it is erased. That means it’s vital that you:
- Check that you don’t mind anything and everything on the USB drive being erased either make sure you have copied everything you want to keep to another drive.
- Make sure you know which storage device you want to format. Don’t format the wrong drive. It’s an easy mistake to make on a computer with multiple drives.
RELATED: How to list your computer’s devices from the Linux terminal
Formatting with GNOME disks
The safest way to start is with the USB drive unplugged. In Ubuntu, you can press the “Super” key, then type “disks” in the search field. you will see the
disks icon. Click on the icon to start GNOME
disks The app lists the storage devices that you can find on the left sidebar.
This computer has a mix of physical drives and SSD drives, and a CD/DVD optical drive.
Plug in the USB drive. Linux will detect it and the change will be reflected in the GNOME
The drive has been added to the list of known storage devices and is correctly identified as Kingston Data Traveler. The total capacity of this USB drive is 32 GB, but it is listed as 31 GB. This is because you lose a bit of space when you format a drive. Don’t be surprised if the capacity of your USB drive is not as large as you expected.
Click on the unit to see information about it.
We can see that it is formatted with the ext4 file system, and its Linux designation is “/dev/sdc”.
Click the gear icon, then click the “Format Partition…” menu option.
Type a name for your USB drive, select the “Other” radio button, then click the “Next” button.
Select the “exFAT” radio button, then click the “Next” button.
You are warned that the USB drive will be erased and you are shown the details of the drive so you can confirm that it is the drive you want to format. Only when you are satisfied that it is the correct drive, click the red “Format” button.
The drive automatically formats and returns to the main screen.
disks display. The USB drive entry now shows that it is formatted with the exFAT file system.
Formatting on the command line
The first step is to positively identify the USB drive. We can do this using the
lsblk domain. Without connected USB drive, run the
Connect the USB drive to the computer and wait a moment for Linux to recognize and mount it. Then run the same
We can see the new entry for the USB drive. It appears as device “/dev/sdc”, and is mounted at “/run/media/dave/MetalUSB”.
Before we can format it, we need to unmount it. we will have to use
sudo. Note that there is no “n” in the “unmount” command.
We pass the mount point to
umount domain. What this does is unmount the File System. If we use the
lsblk command we will see that the USB drive is still recognized, but is no longer associated with a mount point.
sudo umount /run/media/dave/MetalUSB
To format the USB drive with the new file system, we use the
mkfs.exfat domain. We need to reference the USB drive using its device name, which is “/dev/sdc”.
-L The (label) option allows us to provide a volume label. Let’s call this USB drive “Metal32”.
sudo mkfs.exfat -L Metal32 /dev/sdc
Unplug the USB drive, wait a moment, and then plug it back in. Use the
lsblk command once more and you will see that the drive is now mounted and the mount point name has changed to reflect the name we chose when we created the file system.
To verify that the file system is exFAT, we can use the df command with the
-T (type) option.
df -T /dev/sdc
We can see that the file system is listed as exFAT.
RELATED: How to use the mkfs command in Linux
Just to make sure Microsoft Windows was happy with the USB drive, we plugged it into a Windows computer and looked at its properties. Windows 10 treated the drive as a properly formatted and functional USB drive, using the exFAT file system.
Avoid the 4GB barrier
The theoretical maximum size of a file under exFAT is 16EB (Exbibytes). While it’s unlikely you’ll ever need to carry a file that size, the need to transfer and share files larger than 4 GB is a fairly common requirement for exFAT to be a good candidate for a universal format for USB drives.