no niin tämä on jatkoa edelliselle viestilleni.
Monta tuntia kokeiltuani olen tehnyt seuraavaa
1. /etc/udev/rules.d/10-camera.rules
BUS=="scsi", SYSFS{manufacturer}="PANA*", SYSFS{model}="DMC*", KERNEL="sd*",
SYMLINK ="camera" ------> kamera tunnistuu nyt AINA /dev/cameraksi.
2. /etc/fstabiin olen tehnyt tämän
/dev/camera /media/kamera vfat noauto,user,exec,umask=000 0 0
3. työpöydälle olen tehnyt pikakuvakkeen
"link to device--> camera device --> /media/kamera
nyt kun kytken kameran ja painan ikonia kamera mounttautuu ja pääsen suoraan sinne, mutta kun olen siirtänyt kuvat minun täytyy unmountata kamera pikakuvakkeen konteksti valikosta, jos en tee sitä niin seuraavalla kerralla kun siirrän kuvia tulee herja "is mounted multible times" ja en pääse enää laitteeseen käsiksi.
Miten siis saan tuon kameran unmountattua automaattisesti kun sammutan sen? Ei siis minkään konteksti valikon kautta.
Monta tuntia kokeiltuani olen tehnyt seuraavaa
1. /etc/udev/rules.d/10-camera.rules
BUS=="scsi", SYSFS{manufacturer}="PANA*", SYSFS{model}="DMC*", KERNEL="sd*",
SYMLINK ="camera" ------> kamera tunnistuu nyt AINA /dev/cameraksi.
2. /etc/fstabiin olen tehnyt tämän
/dev/camera /media/kamera vfat noauto,user,exec,umask=000 0 0
3. työpöydälle olen tehnyt pikakuvakkeen
"link to device--> camera device --> /media/kamera
nyt kun kytken kameran ja painan ikonia kamera mounttautuu ja pääsen suoraan sinne, mutta kun olen siirtänyt kuvat minun täytyy unmountata kamera pikakuvakkeen konteksti valikosta, jos en tee sitä niin seuraavalla kerralla kun siirrän kuvia tulee herja "is mounted multible times" ja en pääse enää laitteeseen käsiksi.
Miten siis saan tuon kameran unmountattua automaattisesti kun sammutan sen? Ei siis minkään konteksti valikon kautta.
Vastaukset 4
Vanhimmat
vaihda windowsiin.
Windows se vasta sekoileekin noiden kanssa. Kokeileppa läppärissä vaikkapa WLAN kortilla tyrkätä se eri PCMCIA korttipaikkaan kuin missä se on ennen ollut, Winsucs löytää "uuden laitteen" ja asennuttaa sen uudestaan kaikkine asetuksineen vaikka kysessä on jo kertaalleen asennettu ja konffattu kortti. Sama sekoilu USB laitteiden kanssa, hemmetinmoinen homma Winsekoilun kanssa muistaa että mihin PCMCIA/USB paikkaan mikäkin laite on asennettu ettei tyrkkää väärään paikkaan...
...ettet mitenkään. USB-muistilaiteet, kuten muutkin tulee umountata tai 'Irrottaa turvallisesti'. Aivan kuten Windowsissakin...
on tätä etsitty, vaan löytyhän se ratkaisu.
Nyt kun tyrkkään kameran koneeseen kiinni se tunnistuu ja mounttautuu /mnt/usb kansioon ja kun sammutan kameran se unmounttautuu.
Tässä ohjeet.
1. /etc/udev/rules.d kansioon seuraava sääntö
KERNEL=="sd*|sr*|ub*", ACTION=="add", SUBSYSTEMS=="usb", ENV{DEVFLAG}="usbdisk", NAME="%k", GROUP="cdrom", MODE="0660", RUN+="/lib/udev/usbmount.sh add /dev/%k"
KERNEL=="sd*|sr*|ub*", ACTION=="remove", ENV{DEVFLAG}=="usbdisk", RUN+="/lib/udev/usbmount.sh remove /dev/%k"
2. ja /lib/udev kansioon usbmount.sh skripti
VERBOSE="no"
log()
{
[ "$VERBOSE" = "yes" ] && logger -p user.$1 -t "usbmount[$$]" -- "$2"
}
in_list()
{
for v in $2; do
test "$1" != "$v" || return 0
done
return 1
}
test -x /lib/udev/vol_id || { log err "cannnot execute /lib/udev/vol_id"; exit 1; }
case "${0##*/}" in
firemount.sh)
MOUNTPOINTS="/mnt/fire /mnt/fire1 /mnt/fire2 /mnt/fire3 /mnt/fire4 /mnt/fire5 /mnt/fire6 /mnt/fire7 /mnt/fire8 /mnt/fire9 /mnt/fire10 /mnt/fire11"
;;
pcmciamount.sh)
MOUNTPOINTS="/mnt/pcm /mnt/pcm1 /mnt/pcm2 /mnt/pcm3 /mnt/pcm4 /mnt/pcm5 /mnt/pcm6 /mnt/pcm7 /mnt/pcm8 /mnt/pcm9 /mnt/pcm10 /mnt/pcm11"
;;
mmcmount.sh)
MOUNTPOINTS="/mnt/mmc /mnt/mmc1 /mnt/mmc2 /mnt/mmc3 /mnt/mmc4 /mnt/mmc5 /mnt/mmc6 /mnt/mmc7 /mnt/mmc8 /mnt/mmc9 /mnt/mmc10 /mnt/mmc11"
;;
*)
MOUNTPOINTS="/mnt/usb /mnt/usb1 /mnt/usb2 /mnt/usb3 /mnt/usb4 /mnt/usb5 /mnt/usb6 /mnt/usb7 /mnt/usb8 /mnt/usb9 /mnt/usb10 /mnt/usb11"
;;
esac
MOUNTOPTIONS=" noauto,user,rw,owner,exec"
DEVNAME="$2"
FSTABMOUNTPOINT="$(grep "$DEVNAME[[:space:]]" /etc/fstab | awk '{print $2}' | tail -n1)"
[ "$FSTABMOUNTPOINT" ] && MOUNTPOINTS="$FSTABMOUNTPOINT $MOUNTPOINTS"
FSTABMOUNTOPTIONS="$(grep "$DEVNAME[[:space:]]" /etc/fstab | awk '{print $4}' | tail -n1)"
[ "$3" ] && MOUNTPOINTS="$3 $MOUNTPOINTS"
[ "$NICEMOUNTPOINT" ] && MOUNTPOINTS="$NICEMOUNTPOINT $MOUNTPOINTS"
umask 000
if [ "$1" = add ] ; then
log info "devname == $DEVNAME !!"
log info "testing whether $DEVNAME is readable"
read_success=no
for t in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
dd if="$DEVNAME" of=/dev/null bs=512 count=1
if [ "$?" = "0" ] ; then
read_success=yes
break
fi
log info "attempt $t to read from $DEVNAME failed"
sleep 1
done
if [ "$read_success" != "yes" ]; then
log err "cannot read from $DEVNAME"
exit 1
fi
/lib/udev/vol_id "$DEVNAME" | egrep -q '^ID_FS_USAGE=(filesystem|disklabel)$'
if [ "$?" = "0" ] ; then
log info "$DEVNAME contains a filesystem or disklabel"
fstype="$(/lib/udev/vol_id -t $DEVNAME )"
log info "$DEVNAME contains filesystem type $fstype"
for mountpoint in $MOUNTPOINTS; do
for t in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
(set -C; echo "$$" > /var/lock/${mountpoint##*/}) && break
log info "waiting for $mountpoint lockfile to be released"
sleep 1
done
if [ -d "$mountpoint" ]; then
log info "mountpoint $mountpoint exists"
if [ ! "$( mount | awk '{print $3}' | grep "$mountpoint" )" ]; then
log info "mountpoint $mountpoint is available for $DEVNAME"
break
else
log info "mountpoint $mountpoint is busy"
rm -f /var/lock/${mountpoint##*/}
continue
fi
else
log info "creating mountpoint $mountpoint for $DEVNAME"
mkdir -p -m0 $mountpoint
umount -l "$mountpoint"
log info "mountpoint $mountpoint is available for $DEVNAME"
break
fi
rm -f /var/lock/${mountpoint##*/}
done
if [ "$mountpoint" ] ; then
# Determine mount options.
options=""
if [ "$FSTABMOUNTOPTIONS" ]; then
options="$FSTABMOUNTOPTIONS"
else
[ "$MOUNTOPTIONS" ] && options="$MOUNTOPTIONS"
[ ! "$fstype" = "vfat" ] && options="${options},sync,dirsync"
[ "$fstype" = "vfat" ] && options="${options},uid=0,gid=100,umask=0"
fi
# Mount the filesystem.
for t in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
[ "$( mount | awk '{print $1}' | grep "$DEVNAME" )" ] && break
log info "executing command: mount -t $fstype -o $options $DEVNAME $mountpoint"
eval "mount -t $fstype -o $options $DEVNAME $mountpoint"
done
rm -f /var/lock/${mountpoint##*/}
else
# No suitable mount point found.
log warning "no mountpoint found for $DEVNAME"
exit 1
fi
else
log info "$DEVNAME does not contain a filesystem or disklabel"
fi
elif [ "$1" = remove ] ; then
# A block or partition device has been removed.
# Test if it is mounted.
while read device mountpoint fstype remainder; do
if [ "$DEVNAME" = "$device" ] ; then
# If the mountpoint and filesystem type are maintained by
# this script, unmount the filesystem.
if in_list "$mountpoint" "$MOUNTPOINTS" ; then
log info "unmounting $mountpoint"
umount -l "$mountpoint"
rmdir $mountpoint && break
log info "cannot remove $mountpoint, maybe not empty"
fi
break
fi
done < /proc/mounts
fi
exit 0
sitten vaaan /etc/rc.d/rc.udev restart ja kamera tunnistuu.