When a drive is inserted, it will be mounted, and a Terminal will pop-up. To umount the device, simply press Control+D in the terminal window. The mountpoint is looked for in /etc/fstab or, if absent, generated from the label of the partition.

If the terminal doesn't appear as expected, that may because wrong options are used. For example, in XFCE4, we use "Terminal -T title -e script-file instead"

Auto-mounting with udev and systemd

The above solution does not work, since the RUN directive is for only short processes, and udev enforces this; Scripts will be killed shortly after starting.
Instead, the following solution based on the previous one uses systemd, udev and screen to create a more elegant solution.

First, we create a systemd service template (/etc/systemd/system/automount@.service):

To access the screen session which controls the mounted partitions, simply run

$ screen -d -r AUTOMOUNT

I would suggest putting this in a command key shortcut, for example with xbindkeys to run in a terminal.

Manual mounting

Note: Before you decide that Arch Linux does not mount your USB device, be sure to check all available ports. Some ports might not share the same controller, preventing you from mounting the device.

Getting a kernel that supports usb_storage

If you do not use a custom-made kernel, you are ready to go, for all Arch Linux stock kernels are properly configured. If you do use a custom-made kernel, ensure it is compiled with SCSI-Support, SCSI-Disk-Support and usb_storage. If you use the latest udev, you may just plug your device in and the system will automatically load all necessary kernel modules. Older releases of udev would need hotplug installed too. Otherwise, you can do the same thing manually:

# modprobe usb-storage
# modprobe sd_mod (only for non SCSI kernels)

Identifying device

First thing one need to access storage device is it's identifier assigned by kernel.

Using device node names ( /sd* )

This is the simplest way, but assigned name depends on order of insertion. Ways to get node name:

search in the output of dmesg for the kernel device name, you can use grep to help you find what you are looking for:

$ dmesg | grep -E "sd[a-z]"

List all available partition tables:

# fdisk -l

Note: If you cannot find your device you can use lsusb to verify that it is indeed recognized by the system.

Using UUID

Every drive creates a UUID (Universally Unique Identifier), these identifiers can be used to track individual drive no matter their device node (i.e. /dev/sda).