External Media

I Try Arch (btw)  |      17.02.2023   2min read 

While trying out photography workflows I discovered that I need to configure how external storage (or devices) such as SD cards are automatically mounted when plugging them in. You can, of course, don’t automount them and sudo mount and sudo unmount them all the time, but I want a little more convenience.

udisks

Udisks is a utility that let’s users other than root handle (un)mounting file systems. Also it auto creates the needed mountpoints:

$ udisksctl mount -b /dev/mmcblk0p1
Mounted /dev/mmcblk0p1 at /run/media/jan/EOS_DIGITAL

That’s already better, but still not automatic

udiskie

There are several mount helpers listed in the Arch wiki, for me the easiest was to install Udiskie. For the first try, you can just run udiskie in the foreground. Upon inserting the SD card you see it automatically mounting the device (by using udisks2 under the hood). So that’s pretty nice, but I don’t want to run udiskie in the foreground all the time.

To run udiskie in the background, I wrote a simple systemd user service:

[Unit]
Description=Udiskie auto mount utility

[Service]
ExecStart=/usr/bin/udiskie

[Install]
WantedBy=default.target

Now just enable it with systemctl --user enable --now udiskie and have your external media mounted automatically!

Runnig udiskie as a systemd unit has the advantage of having all it’s output available via journalctl -u udiskie. Also autostarting it with sway would mean that another window manager would also have to do that, should I switch to anotherone, so letting systemd handle such a system task felt right.

So why a user service instead of a system-wide service? Well, I guess there’s no big difference on a single user system. However I try to do as much as possible configuration in my $XDG_CONFIG_HOME so I can keep it nicely under version control, and leave /etc as default as possible.