How To Mount Usb In Linux

How To Mount Usb In Linux

Reading time1 min
#Linux#USB#Mounting#AutoMount#Filesystem

Mastering USB Mounting in Linux: From Auto-Mounting to Manual Control

Modern Linux distributions handle USB storage mounting behind a web of services—udev, udisks2, graphical automounters. Yet, as soon as you leave a desktop environment, automount convenience vanishes. Operations teams working with headless servers, embedded systems, or constrained security profiles see this firsthand.


Case: USB Not Mounting? Start Here

A client arrives with a FAT32-formatted drive. You insert it into a bare-metal Ubuntu 22.04 server (no GUI). Nothing surfaces in /media. No surprise there—mounting isn’t “set and forget” on CLI-driven systems.

First priority: determine if the kernel detects the device at all.

dmesg | tail -n 20

Sample output after insertion:

[ 2531.176599] usb 3-2: new high-speed USB device number 7 using xhci_hcd
[ 2531.326593] sd 7:0:0:0: [sdb] 15124992 512-byte logical blocks: (7.74 GB/7.21 GiB)
[ 2531.327116]  sdb: sdb1

Always check for sd* assignments; if you only see usb 3-2: new high-speed USB device, the block driver may be missing.


Device Discovery, Precisely

Skip guessing. Use lsblk or blkid to locate the block device and its partitions.

lsblk -o NAME,MODEL,SIZE,FSTYPE,MOUNTPOINT,LABEL,UUID

Practical output:

NAME   MODEL             SIZE FSTYPE   MOUNTPOINT LABEL     UUID
sda    Samsung_SSD      232G
└─sda1                  232G ext4      /         
sdb    SanDisk_USB_Cri 14.9G
└─sdb1                  14.9G vfat               BACKUP    4FAE-38A6

If FSTYPE is blank, filesystem recognition tools may be missing. See below.


Manual Mounting Procedure

1. Create a Mount Point

Don’t mount drives directly to /media—reserve that for automounters. Use /mnt or a custom path.

sudo mkdir -p /mnt/usb-backup

2. Mount the Device

Explicitly specify filesystem type to prevent silent errors, e.g., for FAT32:

sudo mount -t vfat /dev/sdb1 /mnt/usb-backup

For NTFS:

sudo mount -t ntfs /dev/sdb1 /mnt/usb-backup

You’ll get mount: unknown filesystem type 'ntfs' if ntfs-3g isn’t installed.

Gotcha: If you see mount: /mnt/usb-backup: wrong fs type, bad option, bad superblock...—run dmesg | tail for actual kernel error. Filesystem corruption is common after Windows 10 “fast startup”.

3. Adjust Mount Options

Common arguments:

  • -o ro: mount read-only (never trust an unscanned USB writeable).
  • -o uid=1000,gid=1000: ensure the target user has file access on FAT/NTFS.
OptionUse-Case
roWrite protection
noexecMitigate accidental execution
syncSafer unmounts (performance hit)
umask=007Restricts group/other permissions

Example:

sudo mount -o ro,noexec,uid=1000,gid=1000 /dev/sdb1 /mnt/usb-backup

Safe Removal

If you unmount prematurely, cached writes can be lost. Always:

sudo umount /mnt/usb-backup

If the device is “busy”, use:

sudo lsof +D /mnt/usb-backup

Then close hanging processes.

Known issue: On GNOME/KDE with automounters, avoid command-line umount; desktop may remount instantly via udisks2.


Automounting with /etc/fstab: Reliable, but Rigid

For stateful hardware—NAS appliances, backup appliances—define static mount rules in /etc/fstab.

Example (read-only, FAT32):

UUID=4FAE-38A6  /mnt/usb-backup  vfat  ro,users,noauto,nofail   0  0
  • nofail prevents boot failure if drive is absent.
  • noauto disables automatic mounting (manual only).
  • users allows non-root mounts.

Find UUID using:

blkid /dev/sdb1

Mount as user:

mount /mnt/usb-backup

Side note: Swap USBs with different UUIDs? The mount fails until you update /etc/fstab.


Installing Filesystem Drivers

VFAT usually “just works.” For exFAT or NTFS, not so.

On Ubuntu/Debian 22.04+:

sudo apt install exfat-fuse exfatprogs ntfs-3g

On RHEL/CentOS-based:

sudo dnf install exfat-utils fuse-exfat ntfs-3g

Trade-off: ntfs-3g incurs higher CPU usage during heavy I/O than kernel-native filesystems.


Troubleshooting: Fast Checks

  • Device appears, but lsblk shows no partitions? Suspect a partition table issue. Try:
    sudo fdisk -l /dev/sdb
    
  • Receiving mount: unknown filesystem? Double-check installed utilities.
  • File permissions wrong after mounting FAT/NTFS? Use uid= and gid= as above.
  • ExFAT sometimes fails with “failed to get vfs_fd” on older kernels—update to >=5.4, or install latest exfat-fuse.

Recap: Minimal Commands

# Identify device and partition
lsblk
sudo fdisk -l

# Create mountpoint
sudo mkdir -p /mnt/usb-backup

# Mount, read-only as user ID 1000
sudo mount -t vfat -o ro,uid=1000 /dev/sdb1 /mnt/usb-backup

# Locate UUID for fstab
blkid /dev/sdb1

# Unmount
sudo umount /mnt/usb-backup

Tip: On production appliances, always mount USBs read-only by default and explicitly remount as writeable as needed. Automounter quirks (especially from GNOME-based udisks2) can interfere with manual processes—disable those services on servers.


This isn’t perfect—edge cases exist, e.g., hotplug on ZFS-backed systems behaves differently.

Debug with journalctl -xe for hardware-level issues.