- Is there a way to have a usb key always assigned to /dev/sda and the usb disk to /dev/sdb?
It is often useful to have a canonical name for your USB devices. This is easy to set up using udev. The following example is a modified /etc/udev/hal.rules that creates symlinks from /dev/mykey to /dev/sd*1 and from /dev/myusbdisk to /dev/sd*1, regardless the order they got plugged in. Only the first 4 uncommented lines have been added to the default configuration. You will need to modify the SYSFS{model}="<name>" according to the entries you find in /sys/bus/scsi/devices/*/model.
/etc/udev/hal.rules
# put removable IDE/SCSI devices into the hal group instead of 'disk' BUS="scsi", KERNEL="sd[a-z]*1", SYSFS{model}="JUMPDRIVE", SYMLINK="mykey", \ PROGRAM="/etc/udev/scripts/device-removable.sh %k", RESULT="1", NAME="%k", MODE="0640", GROUP="hal" BUS="scsi", KERNEL="sd[a-z]*1", SYSFS{model}="["SP1604N"]", SYMLINK="myusbdisk", \ PROGRAM="/etc/udev/scripts/device-removable.sh %k", RESULT="1", NAME="%k", MODE="0640", GROUP="hal" BUS="scsi",KERNEL="sd[a-z]*", PROGRAM="/etc/udev/scripts/device-removable.sh %k", RESULT="1", NAME="%k", MODE="0640", GROUP="hal" # BUS="ide", KERNEL="hd[a-z]*", PROGRAM="/etc/udev/scripts/device-removable.sh %k", RESULT="1", NAME="%k", MODE="0640", GROUP="hal" BUS="usb", KERNEL="ub[a-z]*", NAME="%k", MODE="0640", GROUP="hal"
'?tail -f /var/log/syslog' is useful to debug these new udev rules.
you can then add the following lines in your fstab:
/dev/mykey /media/key auto rw,user 0 0 /dev/myusbdisk /media/disk auto rw,user 0 0
A potentially easier method is to plug the MP3 player or camera or external hard drive (any "Mass Storage" USB device), and browse the /dev/disk/by-{id,label,path,uuid}/ directories, which contain symbolic links pointing to the corresponding device file. Some examples:
/dev/disk/by-id/ - contains a symbolic link named using a concatenation of various kernel details about the device (bus type/vendor/product name/serial number, etc.), pointing to the /dev/<device_name> device.
/dev/disk/by-label/ - contains symbolic links for disk partitions which have labels (such as those on the volume label for vfat/fat partitions, or ext2 or ext3 or xfs or reiserfs etc. partitions), for any disks that have one. Note that if you'd like to change labels on existing partitions, you can find good examples on Ubuntu's wiki or here.
/dev/disk/by-path/ - symbolic links created by referencing where on each PCI bus/device/function/etc. the devices are located
/dev/disk/by-uuid/ - using per-device Universally Unique IDs, if available.
If you find a symbolic link underneath this /dev/disk/by-*/ area, you can use that in your /etc/fstab file like the following example. With this setup, I can plug in USB devices in any order, such that they each are assigned to different /dev/sd* devices, yet the /dev/disk/by-*/ links specified in the /etc/fstab file remain unchanged, as those links are updated to point to the proper device file. This way, I can plug in a device, and as my user account, mount the /media/ location.
# Media devices (cameras, MP3 players, etc., identified by "id" (a concatenation of kernel information # gathered after the device is connected.)) This information should be unique and static per device. /dev/disk/by-id/usb-OLYMPUS_C-4040ZOOM_000197334942-part1 /media/OLYMPUS_C-4040ZOOM auto rw,user,noauto 0 0 /dev/disk/by-id/usb-NIKON_DSC_COOLPIX_P1_000030409725-part1 /media/NIKON_DSC_COOLPIX_P1 auto rw,user,noauto 0 0