ted_chou12 |
08-26-2012 01:19 PM |
Hi, I got udev to work finally, but now I am trying to customize the name in the dev rather than sdf, sdg...etc. I have the following in /etc/udev/rules.d/local.rules:
Code:
KERNEL=="sd*", SUBSYSTEM=="block", ATTR{size}=="7700432", ATTRS{vendor}=="Lexar ", ATTRS{model}=="USB Flash Drive ", SYMLINK+="lexar"
KERNEL=="sd*", SUBSYSTEM=="block", ATTR{size}=="625137282", ATTRS{vendor}=="FUJITSU ", ATTRS{model}=="MHZ2320BH G2 ", SYMLINK+="fujitsu320g"
KERNEL=="sd*", SUBSYSTEM=="block", ATTR{size}=="976766976", ATTRS{vendor}=="Seagate ", ATTRS{model}=="Expansion ", SYMLINK+="seagate500g"
KERNEL=="sd*", SUBSYSTEM=="block", ATTR{size}=="31944704", ATTRS{vendor}=="RockChip", ATTRS{model}=="USBDISK User ", SYMLINK+="mp3"
KERNEL=="sd*", SUBSYSTEM=="block", RUN+="/mnt/main/script/udev.sh %k"
The following is the error shows in syslog:
Code:
Aug 27 02:12:18 vector kernel: [ 73.146245] sd 7:0:0:0: [sdf] No Caching mode page present
Aug 27 02:12:18 vector kernel: [ 73.146252] sd 7:0:0:0: [sdf] Assuming drive cache: write through
Aug 27 02:12:19 vector udevd-work[2535]: exec of program '/mnt/main/script/udev.sh' failed
Aug 27 02:12:19 vector udevd-work[2539]: exec of program '/mnt/main/script/udev.sh' failed
Here is my script, I have tested it quite a few times and it gives the right response:
Code:
ted:$ cat /mnt/main/script/udev.sh
string="$1" ; name="${string:0:3}" ; number="${string:3}"
echo "$(date) $string" > "/mnt/main/report.log"
if [ -z "$number" ] && [ ! -e "/dev/${name}1" ] ; then
mname="$name"
elif [ ! -e "/dev/${name:0:3}$((number+1))" ] ; then
mname="${name:0:3}/${name:0:3}$number"
fi
if [ ! -z "$mname" ] ; then
size=$(udevadm info -a -p /sys/block/$mname | grep "ATTR{size}==")
size=$(echo "$size" | sed "s:\"::g")
size=$(echo "$size" | sed "s:ATTR{size}==::g")
if [ $size -lt 20000000 ] && [ $size != 0 ] ; then
for each in "/dev/pendrive"* ; do
max=$(echo "$each" | sed 's:/dev/pendrive::g')
done
if [ -z "$max" ] || [ "$max" == "*" ] ; then
echo "pendrive"
else
echo "pendrive$((max+1))"
fi
fi
fivector:/~
This is the error log for the debug mode, I don't understand why, my code runs perfectly, but it keeps give me error feedback:
Code:
.052872 [7141] udev_node_mknod: set permissions /dev/sdg1, 060660, uid=0, gid=83
1346012453.053078 [7141] node_symlink: preserve already existing symlink '/dev/block/8:97' to '../sdg1'
1346012453.053220 [7141] link_update: creating link '/dev/disk/by-id/usb-USB_Mass_Storage_Device_812320090519-0:0-part1' to '/dev/sdg1'
1346012453.053284 [7141] node_symlink: creating symlink '/dev/disk/by-id/usb-USB_Mass_Storage_Device_812320090519-0:0-part1' to '../../sdg1'
1346012453.053414 [7141] link_update: creating link '/dev/disk/by-path/pci-0000:00:1d.7-usb-0:4:1.0-scsi-0:0:0:0-part1' to '/dev/sdg1'
1346012453.053474 [7141] node_symlink: creating symlink '/dev/disk/by-path/pci-0000:00:1d.7-usb-0:4:1.0-scsi-0:0:0:0-part1' to '../../sdg1'
1346012453.053577 [7141] link_update: creating link '/dev/disk/by-uuid/F84E-1690' to '/dev/sdg1'
1346012453.053705 [7141] node_symlink: creating symlink '/dev/disk/by-uuid/F84E-1690' to '../../sdg1'
1346012453.054098 [7141] udev_device_update_db: created db file '/dev/.udev/db/b8:97' for '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host20/target20:0:0/20:0:0:0/block/sdg/sdg1'
1346012453.054247 [7141] util_run_program: '/mnt/main/script/udev.sh sdg1' started
1346012453.058529 [7141] util_run_program: '/mnt/main/script/udev.sh' (stderr) '1346012453.058372 [7161] util_run_program: exec of program '/mnt/main/script/udev.sh' failed'
1346012453.059124 [7141] util_run_program: '/mnt/main/script/udev.sh sdg1' returned with exitcode 1
1346012453.059236 [7141] udev_watch_begin: adding watch on '/dev/sdg1'
1346012453.059748 [7141] udev_device_update_db: created db file '/dev/.udev/db/b8:97' for '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host20/target20:0:0/20:0:0:0/block/sdg/sdg1'
1346012453.059900 [7141] udev_monitor_send_device: passed -1 bytes to netlink monitor 0x80756a0
I made it write into report.log file to make sure it was ran, but no luck.
I am not sure how I can pass the kernel variable to my script.
Thanks,
Ted
|