The default behavior of most Linux systems is to automatically mount a USB storage device (such as a flash drive or external drive) when it gets plugged into the computer. However, this is not the case across every distro, or sometimes configurations go awry and you may find that your device is not being automatically mounted. You may also just want your storage device to mount when you plug it in before booting.
In this guide, we’ll go over the step by step instructions to configure a USB storage device to be automatically mounted on Linux. There are a couple different ways to go about this, which will be covered below, so choose whichever you find more appropriate for your scenario.
In this tutorial you will learn:
- How to mount USB drive automatically with autofs
- How to mount USB drive automatically via UUID
Category | Requirements, Conventions or Software Version Used |
---|---|
System | Any Linux distro |
Software | autofs |
Other | Privileged access to your Linux system as root or via the sudo command. |
Conventions |
# – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command$ – requires given linux commands to be executed as a regular non-privileged user |
Automatically mount USB external drive with autofs
If your external USB drive mounts when it is attached before booting you may have a line in your /etc/fstab
configuration file which mounts it during the boot time. If this is the case and you plug in your external USB drive after the boot, execute as a root user:
# mount -a
However, this may not be the most reliable solution since the base device file name for your drive can be different every time you plugin your USB disk. Your base device file name for your USB disk can be anything like: /dev/sdb1
, /dev/sdd1
or /dev/sdXn
.
A very simple and neat solution to the problem is a tool called autofs. We’ll go over the setup and configuration in the following steps. But first, you will need to install the software on your system.
To install autofs on Ubuntu, Debian, and Linux Mint:
$ sudo apt install autofs
To install autofs on CentOS, Fedora, AlmaLinux, and Red Hat:
$ sudo dnf install autofs
To install autofs on Arch Linux and Manjaro:
$ sudo pacman -S autofs
- To avoid any confusion whether base name for your USB block device is
/dev/sdb1
,/dev/sdd1
or/dev/sdXn
, we can make it permanently/dev/myusb
any time you plug it in. This can be done with help of udev device manager. Start by identifying the name of your USB drive:# fdisk -l
This will return something like this:
Disk /dev/sdc: 2000.3 GB, 2000396746752 bytes 255 heads, 63 sectors/track, 243201 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x001425a0 Device Boot Start End Blocks Id System /dev/sdc1 1 243201 1953512001 b W95 FAT32
The base name for our external USB device in this example happens to be
/dev/sdc
, but yours may be different. - Next, use udevinfo command with
/dev/sdc
as an argument to get model attribute:$ udevinfo -a -p /sys/block/sdX/ | grep model ATTRS{model}=="Ext HDD 1021 "
- Now that we have the model attribute, we can add it to
/etc/udev/rules.d/custom.rules
with the following line:SUBSYSTEM=="scsi", ATTRS{model}=="Ext HDD 1021 ", SYMLINK+="myusb%n"
- At this point all we need to do is restart udev device manager:
# systemctl restart udev
- Now when we plug in our USB device, it will be accessible under the following base name:
# ls -l /dev/myusb* lrwxrwxrwx 1 root root 3 2011-02-23 12:36 /dev/myusb -> sdc lrwxrwxrwx 1 root root 12 2011-02-23 12:36 /dev/myusb0 -> bsg/14:0:0:0 lrwxrwxrwx 1 root root 4 2011-02-23 12:36 /dev/myusb1 -> sdc1 lrwxrwxrwx 1 root root 3 2011-02-23 12:36 /dev/myusb3 -> sg3
Please note that /dev/myusb points to a /dev/sdc1, which is exactly the partition we are interested in and we use it next to configure autofs.
- Configuring autofs is rather simple task. All we need to do is to edit two simple files. Let’s start with master file
/etc/auto.master
by appending the following line:/media/ /etc/auto.ext-usb --timeout=10,defaults,user,exec,uid=1000
- Next, edit
/etc/auto.ext-usb
file which we included in a master configuration file configuration:
myusb -fstype=auto :/dev/myusb1
- Restart autofs for the changes to take effect:
# systemctl restart autofs
- Every time you now plug in your external USB drive, autofs will add your device to a list of Active Mount Points. Plugin your external USB drive now and execute:
# autofs status
Output:
Configured Mount Points: ------------------------ /usr/sbin/automount --timeout=10 /media file /etc/auto.ext-usb ,defaults,user,exec,uid=1000 Active Mount Points: -------------------- /usr/sbin/automount --pid-file=/var/run/autofs/_media.pid --timeout=10\ /media file /etc/auto.ext-usb ,defaults,user,exec,uid=1000
- Please note, although our drive is now listed as an active mount point the disk is not mounted yet! autofs only waits for user to access specified mount point directory and once that happens it will mount the filesystem. For example:
$ cd /media/ $ ls $ cd myusb $ ls lost.dir music picture ps3 video mystuff $ cd .. $ ls myusb
From the output above you can see that myusb directory was created only when I tried to access it. Every time you now plug in you USB external disk you can instantly access it via some sort of Desktop or Bookmark shortcut.
Automatically mount USB drive by UUID
An alternative solution to the above is to mount a device automatically by its UUID.
- Use the following command to retrieve the UUID of all storage devices plugged into your system.
# blkid
- Once you have indentified the proper UUID, edit the
/etc/fstab
file and append the following line:UUID=17c1210c-8a88-42d6-b394-03f491415d5c /mnt/usb ext4 defaults 0 0
Of course, replace our example UUID with your own, and you may also use a different directory other than
/mnt/usb
if you want to mount your partition somewhere else. - Your USB device should now mount automatically at boot (assuming it’s plugged in). Otherwise, just run the following command to mount it at any time:
# mount -a
Closing Thoughts
In this guide, we saw how to automatically mount a USB external drive at boot time in Linux. We used two separate methods to accomplish this task, leaving you free to choose whichever one you find most convenient. The UUID method is quicker and doesn’t require any extra software, but autofs may already be used on your system to mount NFS shares and the like. If that’s the case, it may be more convenient for you to add another mount point to your autofs config. The choice is yours.