313

How do you make HDDs and partitions mount at startup on Ubuntu?

I always keep my media and data files on separate partitions - one 2tb HDD and a 400 odd gig partition. I have been trying to swap the default folder location for the home directory to my other drives.

It works when I change the /home/user_name/.config/user-dirs.dirs file to the directories I want, but only until I reboot the system. I am only assuming that the drives not mounting is the problem with it, but it would be helpful either way. If any one knows another reason for why the directories change back to default each time that would be good also.

2

7 Answers 7

378

GUI Method (recommended for newbies) - The Disks program will automatically edit /etc/fstab for you and not break anything. Type disks on the launcher or gnome-disks in the terminal start the Disks application.

Select Drive, then partition, then use More actions (cogs icon) button to access 'Edit Mount Options' menu. Turn off User Defaults because you would not be here if it was really set to automount. The rest should be obvious.

Disks application Disks application - cogs icon menu, about to click Edit Mount Options... Disks application - Mount Options dialog

18
  • 56
    Just don't forget to uncheck "Automatic mount options". I was confused because auto-mount was not working even though the "Mount at startup" checkbox was checked in the grayed out UI.
    – Étienne
    Aug 15, 2016 at 14:41
  • 25
    WAY easier than manually editing fstab. This is the best answer. Sep 28, 2016 at 3:33
  • 4
    In 16.04 this way mount disks to /mnt instead of /dev
    – dstonek
    Dec 2, 2016 at 15:54
  • 22
    Don't use sudo with GUI tools. gnome-disks will ask for permission when required. Nov 14, 2017 at 11:30
  • 2
    "rest should be obvious" I liked it.
    – Adil Saju
    Oct 22, 2018 at 14:06
229

Terminal Method for experienced users only. This can break your boot.
If you are okay with this, fire up a terminal.

  1. [IMPORTANT] sudo cp /etc/fstab /etc/fstab.old - Create a backup of the fstab file just in case something unwanted happens. If something happens, you will need a bootable (live) usb. If you do not have one, use the GUI method instead.

  2. sudo blkid - Note the UUID of the partition you want to automount.

  3. sudo nano /etc/fstab - Copy the following line to the end of the file, save it and reboot afterwards to check if it worked.

  4. mkdir /my/path/tomount # to quote : "you must create the mount point before you mount the partition." see https://help.ubuntu.com/community/Fstab

Examples

A common setup is:

UUID=<uuid> <pathtomount> <filesystem> defaults 0 0

Use lsblk -o NAME,FSTYPE,UUID to find out the UUIDs and filesystems of the partition you want to mount. For example:

$ lsblk -o NAME,FSTYPE,UUID
NAME   FSTYPE UUID
sda
├─sda2
├─sda5 swap   498d24e5-7755-422f-be45-1b78d50b44e8
└─sda1 ext4   d4873b63-0956-42a7-9dcf-bd64e495a9ff

NTFS

UUID=<uuid> <pathtomount> ntfs uid=<userid>,gid=<groupid>,umask=0022,sync,auto,rw 0 0

Examples for the <> variables:

  • <uuid>=3087106951D2FA7E
  • <pathtomount>=/home/data/ # create this before rebooting
  • <userid>=1000
  • <groupid>=1000

Use id -u <username> to get the userid and id -g <username> to get the groupid.

(Note that specifying the sync option can slow down write performance as it disables the cache. async is the default.)

Screenshot of my computer's _fstab_ file

16
  • 15
    +1'd, fstab tutorial for free: linuxstall.com/fstab Jul 19, 2012 at 10:13
  • 9
    Careful about being too prescriptive with the mount options; not everybody's uid & gid will be the default 1000.
    – IlluminAce
    Mar 17, 2013 at 22:17
  • 9
    use 'id -u <username>' to get the uid and 'id -g <username>' to get the group id. this should be stated in the answer.
    – user383919
    Apr 2, 2016 at 20:41
  • 6
    @bbodenmiller sync option should be avoided here. It slows down disk writes because you ask for every byte to be flushed instantly instead of letting your computer optimize that for you. The answer should remove sync
    – Masadow
    May 24, 2017 at 21:27
  • 3
    I read in man mount that in the case of media with a limited number of write cycles (e.g. some flash drives), sync may cause life-cycle shortening.
    – Enlico
    Oct 15, 2018 at 17:31
30

In Ubuntu follow these steps to auto-mount your partition:

  1. Open file manager and look left side on the devices listed.

  2. Choose the device you want to auto-mount on start-up by just clicking it and you will see the folders in the right pane shown for that device (partition), keep this window open.

  3. Go to your desktop Ubuntu search and type disks, you'll see disks shown in results.

  4. Click on disks and disks manager will start.

  5. You will see HDD's listed on the left pane and details of partitions on the right pane for each HDD you have.

  6. Now highlight the partition by clicking it, IMPORTANT (don't set mount on start-up for all partitions as it slows down the system).

  7. Make sure that the partition name you want to auto-mount have the same name by comparing the partitions in disk manager with the open partition window which you opened previously, by looking at the name of device at the top-left part of file manager (opened earlier), and looking the same name of drive or partition in the disks manager at the Contents field of the chosen partition in disks manager.

  8. Now after making sure that you have chosen the correct partition, in disks manager just click more actions icon, sub-menu list will open, choose edit mount options, mount options will open with Automatic mount options = ON, so you turn this off and by default you'll see that mount at start-up is checked and show in user interface is checked, then hit OK and restart your system, after log-in go to file manager you'll see the part you choose to mount at start-up is already mounted.

2
  • In 16.04 this way mount disks to /mnt instead of /dev
    – dstonek
    Dec 2, 2016 at 15:57
  • @dstonek -- You have option to specify Mount Point in the Edit Mount Options at the step 8 above . That is, you can tell it to mount in /dev if you want it there..
    – gare
    Apr 10, 2018 at 15:47
11

When the system boots, it checks the file /etc/fstab (which stands for "filesystem table") for the list of partitions to mount automatically.

How to use this file is described here.

In brief:

The syntax of a fstab entry is :

[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]

You can add your own entries, but you'll need to know the device path (eg, /dev/sdb1), or their UUID (a big long string of numbers) to identify them.

2
  • 7
    Though a link may theoretically solves the problem, it's a good practice to include essential part in the question
    – Web-E
    Jul 19, 2012 at 9:29
  • 3
    @Web-E probably meant answer. Jul 19, 2012 at 10:11
7

use fstab

echo '/dev/[VolumeGroup]/[VolumeName] [custom-directory] ext4 defaults 0 2' >> /etc/fstab

Example:

echo '/dev/hdd/hdd /mnt/hdd ext4 defaults 0 2' >> /etc/fstab
echo '/dev/ssd/ssd /mnt/ssd ext4 defaults 0 2' >> /etc/fstab
1
  • Perfect, Bull's eye
    – Umair Aziz
    Oct 18, 2023 at 10:21
5

All the answers use a GUI tool, or /etc/fstab. My problem with these is that I run headless servers (no GUI) and, most importantly, that I am usually mounting secondary USB hard-drives, where fstab will prevent your system from booting up if the drive is missing, damaged, etc. This has happened to me in the past, and it has left stranded otherwise perfectly functioning systems.

My solution is to use cron. In particular, add this line to your crontab -e with the specific info of your system.

@reboot mount /dev/sdX /mnt/my-usb/

With this, cron will try and mount your drive upon every system start.

Warning: this relies on /dev/sdX to remain unchanged through reboots, which is not guaranteed. In other words, the drive under /dev/sda might become /dev/sdb on the next boot. But in my non-professional setting, it's been working.

If you need more reliability, you can create a shell or python script to search for the right /dev/sdX based on the serial number, and then mount it, and execute the script with cron and the @reboot trigger.

1
1

Try "usbmount" package

sudo apt-get install usbmount

It will automatically mount USB devices

2
  • 10
    -1. It would be better to also include instructions on how to use usbmount. Just telling someone "install this software" isn't enough.
    – Parto
    Jun 18, 2014 at 7:06
  • 1
    This is a script intended for non-desktop installs to automatically mount USB devices in /media/usb[0-7] when plugged in. If the drives need to be mounted during startup this might not be suitable, since it may not mount them until too late, and the mount point may not be predictable, though if all you need is for it to be mounted somewhere once startup is complete it should be fine. If you use a graphical desktop you shouldn't need this as it will have its own way of automatically mounting USB devices. Oct 4, 2018 at 1:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .