How to Read exFAT/NTFS External Drives on Arch Linux
Categories:
5 minute read
One of the common tasks for Linux users, especially those who dual-boot or transfer data between multiple systems, is accessing external storage drives formatted with exFAT or NTFS. These file systems are prevalent on Windows and macOS, and while Linux has matured to support them well, users on minimalist distributions like Arch Linux often need to set up support manually.
In this guide, we will walk through everything you need to read and write to exFAT and NTFS drives on Arch Linux, covering the necessary packages, mounting techniques, and useful tips for troubleshooting and automation.
📁 Understanding exFAT and NTFS
Before diving into the technical steps, it helps to understand what these file systems are:
- NTFS (New Technology File System) is the default file system used by Windows. It supports large files, permissions, compression, encryption, and more.
- exFAT (Extended File Allocation Table) is designed for flash storage devices and external drives. It’s simpler than NTFS and supported by both Windows and macOS, making it ideal for cross-platform portability.
While Linux can read/write FAT32 out of the box, NTFS and exFAT require additional drivers or packages, especially in Arch’s rolling-release ecosystem.
🔧 Step 1: Identify the Drive
Before mounting any drive, you need to know its device name. Plug in your external drive and run:
lsblk
This will output something like:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 64G 0 part /
└─sda3 8:3 0 401.3G 0 part /home
sdb 8:16 1 58.8G 0 disk
└─sdb1 8:17 1 58.8G 0 part
Assume /dev/sdb1
is your external drive partition.
To detect the file system type, use:
sudo blkid /dev/sdb1
Sample output:
/dev/sdb1: LABEL="MYDRIVE" UUID="XXXX-XXXX" TYPE="exfat" ...
or:
/dev/sdb1: LABEL="MYDRIVE" UUID="XXXX-XXXX" TYPE="ntfs" ...
Now that you know the file system, let’s install the required tools.
📦 Step 2: Install Required Packages
2.1 exFAT Support
Arch uses the open-source exfatprogs and exfat-utils tools along with kernel modules for native support.
Install the required package:
sudo pacman -S exfatprogs
This package provides utilities like mkfs.exfat
, fsck.exfat
, etc.
Note: Kernel 5.7 and later (which Arch always provides) has built-in support for exFAT, so no third-party kernel module is needed.
2.2 NTFS Support
There are two main options for NTFS support:
- ntfs-3g (FUSE-based and stable)
- ntfsprogs (legacy, mostly merged into ntfs-3g)
We’ll go with ntfs-3g:
sudo pacman -S ntfs-3g
ntfs-3g
enables full read-write capabilities for NTFS volumes and is very reliable.
📂 Step 3: Mount the Drive Manually
Let’s manually mount the external drive to verify everything is working.
3.1 Create a Mount Point
sudo mkdir -p /mnt/external
3.2 Mount exFAT Drive
sudo mount -t exfat /dev/sdb1 /mnt/external
If the file system is detected automatically, you can omit -t exfat
:
sudo mount /dev/sdb1 /mnt/external
3.3 Mount NTFS Drive
Use ntfs-3g
:
sudo mount -t ntfs-3g /dev/sdb1 /mnt/external
Or:
sudo mount /dev/sdb1 /mnt/external
After mounting, use:
ls /mnt/external
to list contents and verify access.
🛠 Step 4: Fixing Permissions
One common issue is that the drive mounts with root ownership, making it unwritable for normal users.
You can specify ownership using uid
and gid
options. First, find your user ID:
id -u
id -g
Then mount with options:
sudo mount -t exfat -o uid=1000,gid=1000 /dev/sdb1 /mnt/external
For NTFS:
sudo mount -t ntfs-3g -o uid=1000,gid=1000 /dev/sdb1 /mnt/external
This gives your user permission to read/write files.
🧩 Step 5: Automounting with fstab
If you frequently use the same drive and want it to mount automatically, you can add an entry in /etc/fstab
.
5.1 Get the UUID
sudo blkid /dev/sdb1
Example UUID output:
UUID=XXXX-XXXX
5.2 Edit fstab
Open /etc/fstab
:
sudo nano /etc/fstab
Add a line like this:
For exFAT:
UUID=XXXX-XXXX /mnt/external exfat defaults,uid=1000,gid=1000,noatime 0 0
For NTFS:
UUID=XXXX-XXXX /mnt/external ntfs-3g defaults,uid=1000,gid=1000,noatime 0 0
Save and test with:
sudo mount -a
🔄 Step 6: Using udisksctl
(Optional)
If you prefer not to deal with manual mounts and permissions, udisksctl
offers a simpler, user-friendly approach.
To mount an external drive:
udisksctl mount -b /dev/sdb1
To unmount:
udisksctl unmount -b /dev/sdb1
This method uses D-Bus and is designed to work well with desktop environments.
🧹 Step 7: Unmounting Safely
Always unmount your drive before unplugging to avoid data loss:
sudo umount /mnt/external
Or if using udisksctl
:
udisksctl unmount -b /dev/sdb1
If the device is busy, you can check what’s holding it:
lsof | grep /mnt/external
Or use:
fuser -vam /mnt/external
Kill the process or wait for it to finish before unmounting.
🧪 Step 8: Troubleshooting
Here are common issues and fixes:
🧷 Mount: unknown filesystem type
- Make sure you’ve installed
exfatprogs
orntfs-3g
. - Try mounting with the
-t
option explicitly.
🚫 Read-Only Mode
If the drive is marked dirty or has errors, Linux may mount it as read-only.
For NTFS, fix it on Windows:
chkdsk /f X:
Where X:
is your drive letter.
For exFAT, try:
sudo fsck.exfat /dev/sdb1
🔐 Permission Denied
Make sure to use the uid
/gid
mount options or run as root. Also check if the files have restrictive permission bits.
💡 Bonus: Graphical Mounting Tools
If you use a desktop environment like GNOME, KDE, or XFCE, tools like GNOME Disks or KDE Partition Manager can manage and mount drives graphically.
Install them via:
sudo pacman -S gnome-disk-utility
# or
sudo pacman -S partitionmanager
These tools can even set mount options persistently.
✅ Conclusion
Reading and writing to exFAT and NTFS external drives on Arch Linux is straightforward once you install the proper packages and understand basic mounting principles. Arch’s philosophy of minimalism gives you full control, but also expects you to configure things yourself.
To recap:
- Use
exfatprogs
for exFAT, andntfs-3g
for NTFS. - Mount manually with correct options or automate with
/etc/fstab
. - Use
udisksctl
or GUI tools for convenience. - Always unmount drives safely.
This setup ensures you can seamlessly exchange data across systems while staying fully in control of your Linux environment.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.