I want my USB filesystems to automount when I connect the device.
How do I setup automount with systemd via /etc/fstab?
Connect your device and find out the UUID of the filesystem by running either blkid or lsblk -f.
Add a line to /etc/fstab such as:
UUID=05C5-A73A /mnt/32GBkey vfat noauto,nofail,x-systemd.automount,x-systemd.idle-timeout=2,x-systemd.device-timeout=2
Then execute:
systemctl daemon-reload && systemctl restart local-fs.target
Explanation:
noauto - don't mount with mount -anofail - boot will continue even if this mount point is not mounted successfullyx-systemd.automount tell systemd to automount this etnryx-systemd.idle-timeout=2 - wait 2 seconds before unmounting the device after last usagex-systemd.device-timeout=2 - wait only 2 seconds before giving No such device if the device is not connectedNote:
UUID number.For more information about the options available, see systemd.mount(5)
udev rule? This seems very specific for a single device (given the UUID-dependency of fstab), where a udev rule could cover e.g. any USB flash drive.
/etc/fstab doesn't have the dependency you assert, accepting LABEL=..., PARTLABEL=... and good old /dev/usbkey. You could always setup a udev rule to make /dev/usbkey, but I don't know how to mount using udev alone.
df might not show the filesystem as mounted.
nofail (noting that you do not use noauto) then the USB will be mounted at boot if it is plugged in. And, in fact, will be mounted any some point in the future if the USB device were to be plugged in at some later time. No need to involve systemd as directly as shown.