This tutorial shows how to automatically mount external disk partitions on startup of Ubuntu, Fedora, Debian, and most other Linux.
I bought a new SSD recently. Now, I have 2 solid-state drives (SSDs) connected on my computer. Ubuntu 22.04 is installed on one SSD drive, while another one contains VirtualBox Virtual Machine files.
As result, I have to click open the external SSD partition in file manager every time on startup to mount it. So the files on that SSD are accessible via mount point (usually “/media/username/xxx
“). Or, all virtual machines in VirtualBox will be marked as “Inaccessible”.
To make life easier, it’s possible to auto-mount the external file partition. So user doesn’t have to make one more mouse click in file manager every time on startup. And, here’s what I did in Ubuntu 22.04.
UPDATE: For most desktop Linux, there’s an easier way to auto-mount disk driver or partitions on startup. See this tutorial for details.
Step 1: Get Device Name or ID of External Disk Partition
First, search for and open the “Disks” tool from system app launcher.
When it opens, select the disk in left pane, and highlight the desired file partition in right. There, copy or write down the Device name (usually /dev/xxx), and UUID.
In my case, I need to get the info about:
- UUID: 428E68968EE68846F
- Device name: /dev/nvme0n1p2
- file system type: NTFS (optional)
In case, your Linux Distro does not have “Disks” utility or you’re running a Linux server. Open terminal and run command:
df -h
Then find out the disk partition name you want to auto-mount on startup. (NOTE: You need to mount the external disk first).
Step 2: Get the user/group ID for current user
To auto-mount the external partition by using current user ownership, you also need to get the user ID and group ID.
For the default user that created while installing Linux, the ID is usually 1000. Just in case, open terminal and run command to get it:
id
Step 3: Enable Auto-Mount Disk Partition via /etc/fstab
Now, you can edit the “/etc/fstab” file to do the auto-mount configuration that works in most Linux!
To do so, open terminal and run command:
sudo gedit /etc/fstab
For Ubuntu 22.10+ and Fedora workstation, replace gedit
with gnome-text-editor
. For other Linux, either use your system text editor or nano
that works in most Linux.
When the file opens, add the new line in the bottom:
UUID_or_Device_Name Mount_Point File_system_type Options 0 0
In my case, I can use:
/dev/nvme0n1p2 /media/ji/sandisk ntfs defaults,uid=1000,gid=1000,umask=022 0 0
There are 6 parts in the new line separated with spaces. They are:
- Part 1: the device name or UUID. See yours via Step 1.
- Part 2: the mount point to access the external disk files. If you’ve associated your apps with the external disk files, it’s better to use the previous mount point (See screenshot in Step1).
- Part 3: the file system type of disk partition (e.g., ext4, fat, ntfs). Get it in step 1, or use “auto” to auto-detect.
- Part 4: mount options separated with commas but NO space between them. Here I use:
- defaults – means rw (read & write), auto (auto mount), exec, dev, etc. Run
man mount
to see more about it. - uid – specify the owner.
- gid – specify the group
- umask – specify the permissions. The first 0 means read, write and execute permission for user, and the two number 2 mean read and execute permission for group/others.
- defaults – means rw (read & write), auto (auto mount), exec, dev, etc. Run
- Part 5: Either to backup. Set 0 to not backup.
- Part 6: Either to check and repair file system. 0 for No.
When done, save the file. For nano
text editor, press Ctrl+X, type y and hit Enter to save it. And, the change will apply in next boot.
In addition
The uid=1000,gid=1000,umask=022
section specify the ownership and permissions, but it only works for non-Linux file systems, such as NTFS, FAT, etc, disk partitions.
If you’re going to auto-mount external partition with Linux file-system, such as Ext2/3/4, XFS, JFS, try to change the ownership manually after mount.
Clear and concise, thank you
Hi Ji
Those pictures make it very clear, thanks. I also edited etc/fstab so that partitions – ntfs to allow Windows users to share files – can read/write. All went well, until I re-sized partitions. As “re-size” takes a very long time, I deleted, re-created, and re-copied files in. And then, the system wouldn’t boot. It took me a bit of searching, before I realised the UUIDs had changed and that was the cause.
Obviously if UUIDs don’t change, end of problem. But given hard disks, sizes, HDD to SSD, etc, many changes. I wonder if it is better to mount the other drives *AFTER* boot up? Does that mean moving all the disk info, say, to a script, then execute after boot? What do you think? Thanks!