Automounting USB disk on boot with systemd in Fedora

By | 3rd December 2012

I had a requirement to boot a USB disk (a Hitachi SimpleDrive) on a machine I rarely log into via the GUI. In the good old days, I’d hack up a udev script to do it.

In Fedora, with the advent of systemd, I googled and quickly became horribly confused about how it should work.

I found some stuff about systemd and automount, but the idea of a system.automount unit file scared me and I *really* didn’t want to have to learn too much more about systemd, just in order to mount a disk (I guess I’m putting off the inevitable since, professionally, I support Oracle Linux and I imagine it will eventually start to use systemd).

I found the man page for systemd.mount(5) and read:

Mount units may either be configured via unit files, or via /etc/fstab
(see fstab(5) for details).

When reading /etc/fstab a few special mount options are understood by
systemd which influence how dependencies are created for mount points
from /etc/fstab. If comment=systemd.mount is specified as mount option,
then systemd will create a dependency of type Wants from either
local-fs.target or remote-fs.target, depending whether the file system
is local or remote. If comment=systemd.automount is set, an automount
unit will be created for the file system. See systemd.automount(5) for
details.

I obviously hadn’t drunk enough coffee, so I couldn’t seem to grok this, and had to read http://0pointer.de/blog/projects/blame-game.html:

Well, systemd possesses magic powers, in form of the comment=systemd.automount mount option in /etc/fstab. If you specify it, systemd will create an automount point at /home and when at the time of the first access to the file system it still isn’t backed by a proper file system systemd will wait for the device, fsck and mount it.

I added:

UUID=d0e1f72d-c56e-4239-ae79-277af99ada7a /simpledrive ext4 defaults,comment=systemd.automount 1 2

On reboot, I got dumped to a systemd console, and I thought maybe it was because the volume was being mounted before it was ready, so I added noauto, to let systemd pick it up later:

UUID=d0e1f72d-c56e-4239-ae79-277af99ada7a /simpledrive ext4 noauto,defaults,comment=systemd.automount 1 2

Still failed, but this time I got to see an error, and ran:

# systemctl status automount.simpledrive

and it told me something about a resource. I figured out I’d misunderstood this line by Lennart:

If you specify it, systemd will create an automount point

and that I needed to manually create /simpledrive:

# mkdir /simpledrive

After that,

# systemctl status simpledrive.automount
simpledrive.automount
Loaded: loaded
Active: active (running) since Mon, 03 Dec 2012 10:25:00 +0000; 1h 51min ago
Where: /simpledrive

and on reboot, the drive is mounted:

systemd-1 on /simpledrive type autofs (rw,relatime,fd=44,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
/dev/sdd1 on /simpledrive type ext4 (rw,relatime,data=ordered)

One thought on “Automounting USB disk on boot with systemd in Fedora

  1. DG

    Weird syntax for fstab, but useful to know.

    Presumably, unlike autofs, it won’t unmount drives which aren’t in use?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.