USB storage devices
Related articles
This document describes how to use the popular USB memory sticks with Linux. However, it is also valid for other devices such as digital cameras that act as if they were just a USB storage device.
If you have an up-to-date system with the standard Arch kernel and a modern Desktop environment your device should just show up on your desktop, with no need to open a console.
Contents
Auto-mounting with udisks
This is the easiest and most frequently used method. It is used by many desktop environments, but can be used separately too. See Udisks for details.
Manual mounting
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 its identifier assigned by kernel. See fstab#Identifying filesystems for details.
Mounting USB memory
You need to create the directory in which you are going to mount the device:
# mkdir /mnt/usbstick
As root
Mount the device as root with this command (do not forget to replace device_node by the path you found):
# mount device_node /mnt/usbstick
or
# mount -U UUID /mnt/usbstick
If mount
does not recognize the format of the device you can try to use the -t
argument, see man mount
for details.
As normal user with mount
If you want non-root users to be able to write to the USB stick, you can issue the following command:
# mount -o gid=users,fmask=113,dmask=002 /dev/sda1 /mnt/usbstick
As normal user with fstab
If you want non-root users to be able to mount a USB memory stick via fstab, add the following line to your /etc/fstab
file:
/dev/sdXY /mnt/usbstick vfat user,noauto,noatime,flush 0 0
or better:
UUID=E8F1-5438 /mnt/usbstick vfat user,noauto,noatime,flush 0 0
(see description of user and other options in the main article)
Now, any user can mount it with:
$ mount /mnt/usbstick
And unmount it with:
$ umount /mnt/usbstick
Unmounting devices mounted with udev or systemd/udev
Create an executable file (e.g. /usr/local/bin/unmount.sh
):
#!/bin/sh # Global variables TITLE="Unmount Utility" COLUMNS=3 # TARGET,SOURCE,FSTYPE #IFS=$'\n' # Populate list of unmountable devices deviceList=($(findmnt -Do TARGET,SOURCE,FSTYPE | grep -e "sd[b-z]")) deviceCount=$((${#deviceList[@]} / $COLUMNS)) # Start of program output echo $TITLE # Display list of devices that can be unmounted for ((device=0; device<${#deviceList[@]}; device+=COLUMNS)) do printf "%4s) %-25s%-13s%-10s\n"\ "$(($device / $COLUMNS))"\ "${deviceList[$device]}"\ "${deviceList[$(($device + 1))]}"\ "${deviceList[$(($device + 2))]}" done printf "%4s) Exit\n" "x" # Get input from user read -p "Choose a menu option: " input # Input validation if [ "$input" = "X" ] || [ "$input" = "x" ] then echo "Exiting" exit 0 fi if (( $input>=0 )) && (( $input<$deviceCount )) then echo "Unmounting: ${deviceList[$(($input * $deviceCount))]}" sudo umount "${deviceList[$(($input * $deviceCount))]}" exit 0 else echo "Invalid menu choice" exit 1 fi