How to mount/automount USB drive on Linux Systems.
In this guide, we will walk you through the steps to manually mount a USB drive, and then show you how to configure your system for automounting to ensure a smooth and efficient experience with removable storage on Linux.
Step 1 - Detecting USB drive
After you plug in your USB device, locate your USB drive, which might be listed as something like /dev/sdb
or /dev/sdc
. Make sure to identify the correct device to avoid data loss. However, at this stage, the device cannot be used yet, as the filesystem on the USB drive needs to be mounted before you can access or store any data.
To find out the name of your block device, run the following command:
$ sudo fdisk -l
NOTE: fdisk
command required administrative privileges to access the required information, thus from this reason, the command needs to be executed as a root user or with sudo
The output should be like this:
$ sudo fdisk -l
Disk /dev/sdb: 7.21 GiB, 7739768832 bytes, 15116736 sectors
Disk model: ImationFlashDriv
Units: sectors of 1 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc3072e18
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8064 15116735 15108672 7.2G b W95 FAT32
Take note of the block device name of the partition you intend to mount, in our case that will be /dev/sdb
with FAT32 filesystem.
Partition in Linux.
In Linux, /dev/sdb
and /dev/sdb1
refer to different levels of storage devices:
1. /dev/sdb
:
• Represents the entire physical storage device (e.g., a USB drive or hard disk).
• It is the block device node for the whole disk.
• This device might contain multiple partitions.
2. /dev/sdb1
:
• Refers to a specific partition on the /dev/sdb
device.
• The number 1 indicates the first partition on the disk. Subsequent partitions would be numbered /dev/sdb2
, /dev/sdb3
, and so on.
• Partitions are used to divide the physical disk into separate sections, each of which can have its own filesystem.
When mounting, you typically use the partition /dev/sdb1
, as it contains the filesystem you want to access.
Step 2 - Create a mounting point
You need to create a mount point, which can be any new or existing directory within your system. To create a new mount point directory where you want to mount your USB device, use themkdir
command:
$ sudo mkdir /mnt/SNUB-drive
Step 3 - Mounting the Partition
We are now ready to mount our USB's partition identifier /dev/sdb1
to /mnt/SNUB-drive
mount point as below:
$ sudo mount /dev/sdb1 /mnt/SNUB-drive
To verify whether your USB drive has been mounted correctly, you can use the mount
command without any arguments and filter the output using grep
to search for your USB block device name. Here’s how you can do it:
1. Run the mount Command
$ sudo mount
2. Filter the Output
Use grep to search for your USB block device name (e.g., /dev/sdb1). Replace sdb1 with your actual device name:
$ sudo mount | grep /dev/sdb1
This command will show if /dev/sdb1
is mounted and display the mount point. If the device is mounted, you should see an output similar to:
/dev/sdb1 on /mnt/SNUB-drive type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
This indicates that /dev/sdb1
is mounted at /mnt/SNUB-drive
with the vfat filesystem type. If there is no output, the device might not be mounted or might have been mounted at a different directory.
Step 4 - Formatting the USB Drive (if needed)
Formatting a USB drive on Linux involves preparing the drive with a specific filesystem, which will erase all existing data.
Here's a step-by-step guide:
Unmount the USB Drive
If the USB drive is already mounted, unmount it using:
$ sudo umount /dev/sdb1
Of course, replace /dev/sdb1
with the appropriate partition identifier.
Format the USB Drive
Use the mkfs
command to format the drive. Choose the filesystem you want (e.g., ext4, FAT32, NTFS).
Here are examples for different filesystems:
• For vfat
$ sudo mkfs.vfat /dev/sdb1
• For NFFS
$ sudo mkfs.ntfs /dev/sdb1
• For EXT4
$ sudo mkfs.etx4 /dev/sdb1
When you are asked to confirm your choice, just press "y" and wait as the selected partition would be wiped.
Step 5 - Accessing your USB Data
We can now access our USB data simply by navigating to our previously created mount point /mnt/SNUB-drive
:
cd /mnt/SNUB-drive
Step 6 - Automount
In order to automatically mount a drive at boot time run the the following command to see the name of your drive, its UUID (Universal Unique Identifier) and file system type. Here's how you can tackle it:
$ sudo blkid
The above command will output information about all block devices; similar to this:
/dev/mmcblk0p1: LABEL_FATBOOT="system-boot" LABEL="system-boot" UUID="B726-57E2" TYPE="vfat" PARTUUID="ab86aefd-01"
/dev/mmcblk0p2: LABEL="writable" UUID="483efb12-d682-4daf-9b34-6e2f774b56f7" TYPE="ext4" PARTUUID="ab86aefd-02"
/dev/sda: UUID="0d28feb1-b6c4-4788-a4db-22238b82f638" TYPE="ext4"
/dev/sdb1: UUID="1a5e99de-399b-4d46-b8c6-ac2e51df1fe9" TYPE="ext4"
As you can see the UUID of our USB Drive /dev/sdb1
is 1a5e99de-399b-4d46-b8c6-ac2e51df1fe9 and was formatted with the ext4 file system.
Edit /etc/fstab
File
The /etc/fstab
file lists all available disks and partitions and specifies how they should be initialized and integrated into the system’s filesystem. It provides essential information about each device, including the device identifier, mount point, filesystem type, mount options, and parameters for filesystem checks and backups. This configuration ensures that disks and partitions are automatically mounted according to the specified settings each time the system boots.
Edit the /etc/fstab
file:
$ sudo nano /etc/fstab
Add this line of code at the end of the file as shown below:
UUID=<uuid-of-your-drive> <mount-point> <file-system-type> <mount-option> <dump> <pass>
Note that you must separate these items using the Tab key.
In our case, it looks like this:
UUID=1a5e99de-399b-4d46-b8c6-ac2e51df1fe9 /mnt/SNUB-drive ext4 defaults 0 2
Save and close the file and run the following command to mount all filesystems listed in the /etc/fstab
file and see if it works.
$ sudo mount -a
Here is a full description of each line:
Device Identifier: The UUID, label, or device path (e.g., /dev/sdb1 or UUID=1a5e99de-399b-4d46-b8c6-ac2e51df1fe9).
Mount Point: The directory where the device will be mounted (e.g., /mnt/usb).
Filesystem Type: The type of filesystem used (e.g., ext4, vfat).
Mount Options:
These settings control how the filesystem is mounted. Common options include:
-defaults: Uses default mount settings.
-noatime: Disables updating of access times to improve performance.
-ro: Mounts the filesystem as read-only.
-rw: Mounts the filesystem with read and write permissions.
-user: Allows non-root users to mount the filesystem.
Dump and fsck Options:
-Dump Option: This value (typically 0 or 1) indicates whether the filesystem should be backed up by the dump utility. 0 means no backup, while 1 means it is included in backups.
-fsck Option: This value (typically 0, 1, or 2) determines the order in which filesystems are checked by the fsck utility at boot. 0 means the filesystem will not be checked, 1 is usually for the root filesystem, and 2 is for other filesystems to be checked sequentially.
Additional Tips
Label the Filesystem
Labeling a filesystem provides a human-readable name for it, especially when managing multiple disks or partitions.
• For ext4 Filesystems
Use e2label
$ sudo e2label /dev/sdb1 SNUBmonkey-drive
• For vfat Filesystems
Use dosfslabel
$ sudo dosfslabel /dev/sdX1 SNUBmonkey-drive
Of course, replace /dev/sdb1
with your device identifier as well as SNUBmonkey-drive with your desired label.
Congratulations!
We hope this was of great use!
You now know "How to mount an USB drive in a Linux System".