6

I'm currently working in a command line only environment.

When I plug my USB key in, I see a new device file in /dev:

...
sdi
sdi1
...

If I simply sudo mount /dev/sdi1 /media/tmp, and umount it when I'm done, I have to repeat the process all over again. This alone could be accomplished with a little script but my key doesn't always show up as sdi.

Is there a way for me to have it always auto-mount and maybe reserve sdi for it?

Note: Also, there seems to be orphaned device files in /dev if I forget to unmount and just pull the stick out.

nopcorn
  • 9,559

3 Answers3

6

I use this Udev rule from the Arch Wiki:

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

Just change the "sd[a-z][0-9]" in the first line to avoid clashes with your other drives...

jasonwryan
  • 73,126
  • So all I do is place this in /etc/udev/rules.d/automount_usb.rules? Do I need a reboot? – nopcorn Sep 19 '11 at 19:57
  • Not according to the wiki: "Udev automatically detects changes to rule files, so changes take effect immediately without requiring udev to be restarted." – jasonwryan Sep 19 '11 at 20:40
4

On Debian and Ubuntu there is the package usbmount that should do exactly what you ask.

I am sure it is available in other Linux distros too.

enzotib
  • 51,661
  • My bad, I should have mentioned I was on OpenSuse. usbmount isn't in the repos but I'm sure I could fine the source. – nopcorn Sep 19 '11 at 20:02
  • Source available on the usbmount home page :-) http://usbmount.alioth.debian.org/, it's dependencies are listed at http://packages.debian.org/squeeze/usbmount – invert Sep 19 '11 at 20:50
3

There are a number of auto-mount solutions out there, but I'd especially recommend those based on udev - like uam for example.

Also, for normal user, command-line, on-demand mounting I'd recommend pmount (Policy based mounting programs that does not require any sudo).