#! /bin/sh # This script generates and sends to stdout a set of udev.rules for use # with all scsi block devices on your system. It creates a udev key NAME # with prefix defaulting to "disk-", and appends the current kernel name # and the udev kernel number (the partition number, empty for the entire # disk). # # Managing these is probably better done via a gui interface. # # You can edit and append the output to your /etc/udev/udev.rules file. # You probably want to to change names to be non-kernel defaults, so as to # avoid confusion if a configuration change modifies /sys/block/sd* # naming. # # /etc/scsi_id.config must be properly configured. If you are using this # script, you probably want a single line enabling scsi_id for all # devices as follows: # # options=-g # # The above assumes you will not attach block devices that do not # properly support the page codes used by scsi_id, this is especially true # of many USB mass storage devices (mainly flash card readers). # prefix=disk- scsi_id=/sbin/scsi_id sysfs_dir=$(mount | awk '$5 == "sysfs" {print $3}') if [ "$sysfs_dir" = "" ] then sysfs_dir="/sys" echo "Using sysfs mount point \"$sysfs_dir\"" >&2 fi c=$(ls /${sysfs_dir}/block/sd* 2>/dev/null | wc -l) if [ $c = 0 ] then echo $0 no block devices present >&2 exit 1 fi echo "#" echo "# Start of autogenerated scsi_id rules. Edit the NAME portions of these" echo "# rules to your liking." echo "#" first_line=yes # cd ${sysfs_dir}/block for name in sd* do id=$($scsi_id -s /block/$name) if [ $? != 0 ] then echo $0 failed for device $name exiting >&2 exit 1 fi if [ $first_line = "yes" ] then first_line=no echo "BUS=\"scsi\", PROGRAM=\"${scsi_id} -d %N -s %p\", RESULT=\"${id}\", NAME=\"${prefix}${name}%n\"" echo echo "# Further RESULT keys use the result of the last PROGRAM rule." echo "# Be careful not to add any rules containing PROGRAM key between here" echo "# and the end of this section" echo else # No PROGRAM, so just use the last result of PROGRAM. The # following is the same as the above without the PROGRAM # key. echo "BUS=\"scsi\", RESULT=\"${id}\", NAME=\"${prefix}${name}%n\"" fi done echo "#" echo "# End of autogenerated scsi_id rules" echo "#"