View previous topic :: View next topic |
Author |
Message |
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Thu Dec 16, 2004 8:57 pm Post subject: Creato script per mount penne usb |
|
|
Come da oggetto, ho creato un script che funziona tramite udev+hotplug per montare i dispositivi di archiviazione di massa usb (senza linee in fstab). Premetto che ancora non supporta partizione multiple su un solo device e che se anche avete messo delle linee in ftsab per quei device (magari tramite symlink) lui se ne sbatte (ma è tutta roba che sta nel todo, dovrebbe arrivare a breve). Cmq va. In pratica quando hotplug richiama udev, lui a sua volta fa partire questo script, in caso di inserimento che crea una cartella chiamata %s{vendor}-%s{model} (notazione sysfs, in pratica marca-modello es. Toshiba-mk2124) dentro la cartelle /mnt/usb-storage, opzione facilmente modificabile nello script. e in caso di rimozione smonta il device e cancella la cartella.
Ringrazio xchris che mi ha sopportato quando gli rompevo le scatole via chat se non ero capace a fare qualcosa _________________ about:mozilla |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Thu Dec 16, 2004 8:58 pm Post subject: |
|
|
Trovate lo script nella sezione donwload di www.gentoo-italia.net (qui)
per "installarlo", mettete lo script in /etc/dev.d/default/usb-storage.dev; ovviamente deve essere eseguibile. _________________ about:mozilla
Last edited by SilverXXX on Wed Dec 29, 2004 9:10 am; edited 2 times in total |
|
Back to top |
|
|
otaku Guru
Joined: 16 Dec 2004 Posts: 428 Location: Rho (MI)
|
Posted: Thu Dec 16, 2004 9:37 pm Post subject: |
|
|
è una paranoia mia... ma non si dovrebbe smontare prima di rimuovere? a volte quando smonto la mia fotocamera il SO la tiene in uso per una manciata di secondi e poi la smonta... per questo ho preferito crearmi uno scriptino che carica e scarica i moduli... qualcuno saprebbe dirmi se è possibile scollegare le usb così "a caldo" è un operazione sicura per l'integrità del filesystem? _________________ Ventiquattr'ore al giorno in preda a una follia contorta... |
|
Back to top |
|
|
Tùrin_Mormegil Guru
Joined: 21 Sep 2004 Posts: 478 Location: Gorizia - Milano
|
Posted: Thu Dec 16, 2004 10:04 pm Post subject: |
|
|
otaku wrote: | è una paranoia mia... ma non si dovrebbe smontare prima di rimuovere? a volte quando smonto la mia fotocamera il SO la tiene in uso per una manciata di secondi e poi la smonta... per questo ho preferito crearmi uno scriptino che carica e scarica i moduli... qualcuno saprebbe dirmi se è possibile scollegare le usb così "a caldo" è un operazione sicura per l'integrità del filesystem? |
cioè dare Code: | umount /mnt/digicam | ? _________________ Как я рад! |
|
Back to top |
|
|
otaku Guru
Joined: 16 Dec 2004 Posts: 428 Location: Rho (MI)
|
Posted: Thu Dec 16, 2004 10:43 pm Post subject: |
|
|
ho letto che durante l'umount il sitema sincronizza i dati sul device "realmente presenti" con quelli che teoricamente dovrebbero esserci. Però udev si accorge che il device usb è scollegato solo quando è effettivamente scollegato fisicamente, quindi non è possibile la sincronizzazione...oppure i device usb in quanto usb vengono trattati in modo particolare dal kernel?
scusa per il post contorto spero sia comprensibile _________________ Ventiquattr'ore al giorno in preda a una follia contorta... |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31202 Location: here
|
Posted: Thu Dec 16, 2004 10:47 pm Post subject: |
|
|
Non dovresti toglierli a caldo i device usb. Neanche con windows dovresti farlo visto che devi smontrarlo anche li a mano. _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
Geps Tux's lil' helper
Joined: 01 Mar 2004 Posts: 90 Location: Bologna
|
Posted: Thu Dec 16, 2004 10:55 pm Post subject: |
|
|
io sapevo che con "sync" nelle opzioni di fstab si risolveva il problema dei dati "volatili".
però attendo conferme. |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31202 Location: here
|
Posted: Thu Dec 16, 2004 10:56 pm Post subject: |
|
|
Geps wrote: | io sapevo che con "sync" nelle opzioni di fstab si risolveva il problema dei dati "volatili". |
Si ma lo fa ogni quanto il sync? _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Thu Dec 16, 2004 10:56 pm Post subject: |
|
|
Teoricamente è tutto vero (e anche con lo script, fareste meglio a smontarli), cmq ho aggiunto l'opzione sync in modo che eviti i buffer e copi direttamente nel dispositivo (dovrebbe saltare anche il buffer interno al dispositivo); quindi a meno che non scolleghiate il dispositivo durante la copia, non ci dovrebbero essere problemi _________________ about:mozilla |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Thu Dec 16, 2004 11:16 pm Post subject: |
|
|
SilverXXX wrote: | quindi a meno che non scolleghiate il dispositivo durante la copia, non ci dovrebbero essere problemi |
Hai fatto bene ad aggiungere il sync, e comunque andrebbero sempre smontati _________________ Ciao da me! |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Fri Dec 17, 2004 8:56 am Post subject: |
|
|
Piccolo update: rileggendo la pagine man di mount, ho notato che tra le opzioni è meglio aggiungere anche dirsync (come sync, ma per le cartelle) _________________ about:mozilla |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Fri Dec 17, 2004 10:15 am Post subject: |
|
|
Durante la scrittura della nuova versione (che supporta la ricerca del device anche con link in fstab, e più device con stesso modello e marca, ma ancora niente partizioni multiple) è sorto un problemino: se l'utente smonta la penna, lo script non riesce a cancellare la cartella, perchè è già sparita l'entrata in mtab; dovrei quindi utilizzare un file che mi permetta di segnarmi quali cartelle creo (oppure creo le cartelle di mount dentro tmp, così poi il sistema le pialla lui). Cosa suggerite in proposito? _________________ about:mozilla |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4801 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Sun Dec 19, 2004 10:40 pm Post subject: |
|
|
SilverXXX wrote: | ... è sorto un problemino: se l'utente smonta la penna, lo script non riesce a cancellare la cartella, perchè è già sparita l'entrata in mtab ... |
Ho provato il tuo programmino. Va piuttosto bene. Qualche volta, però, smontando la penna (anzi, la macchina fotografica), il sistema si inceppa completamente e obbliga a forzare lo shutdown.
Ho fatto le prove usando solamente il comando mount per osservare la connessione, quindi senza alcun accesso al dispositivo.
La cosa non è sistematica, ma può avvenire dopo tre o quattro prove favorevoli.
Usando "ls /mnt/usb-storage", invece, ho visto che, se le cose vanno bene la cartella viene cancellata correttamente.
Ancora: in fase d'avvio compaiono tre messaggi tipo " ... line 13: udevinfo command not found" _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Sun Dec 19, 2004 10:45 pm Post subject: |
|
|
lo so, era ancora un pò grezzo, adesso vi posto la nuova versione "stabile", che migliora un pò il comportamento generale, e ho spostato le cartelle di mount in /tmp/usb-mount. Sto lavorando al controllo di fstab, ma temo ci vorrà ancora un pò per quello _________________ about:mozilla |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Sun Dec 19, 2004 10:49 pm Post subject: |
|
|
Ecco il nuovo script :
Code: | #!/bin/bash
# Opzioni
UMSD_MNT_OPTIONS="-o sync,noatime,users,umask=000"
#forse sarebbe meglio passare a /tmp/usb-storage e togliere la cancellazione del dir dallo script
UMSD_MNT_DIR="/tmp/usb-storage"
#variabiler per il controllo di $UMSD_MNT_DIR in tmp; se yes, le cartelle di mount non vengono cancellate
UMSD_TMP_MNT="yes"
#come log, utilizzo UDEV_LOG
UMSD_LOG="/var/log/umsd.log"
#base monta in sda1,sdb1..; ext monta in /%vendor-%model
UMSD_TYPE="ext"
devDir=$(udevinfo -q path -n $DEVNAME)
vendor=""
model=""
mntDir=""
# 1 parametro
# - la stringa da loggare
function logStr {
if [ -n $UMSD_LOG ]
then
echo $1 >> $UMSD_LOG
fi
}
# 1 parametro
# - la dir da creare
# ritorna con echo la dir effettivamente creata, ritorna 1 (NON con echo) se dàerrore
function createFolder {
if [ ! -d $1 ]
then
logStr "Directory created"
mkdir -p $1
echo $1
return 0
else
#se la directory esiste, ma non è montata, la riuso
if [ -z $(cat '/etc/mtab' | grep $1 ) ]
then
logStr "Directory found not mounted"
echo $1
return 0
else
for i in 1 2 3 4 5 6 7 8 9
do
if [ ! -d $1-$i ]
then
logStr "Numeric directory created"
mkdir $1-$i
echo $1-$i
return 0
fi
done
fi
return 1
fi
}
if [ "$ACTION" = "add" ]
then
# se il device è un block device montabile (una partizione) deve contenere la variabile start
if [ -e /sys/$devDir/start ]
then
# ottengo vendor e model del device
model=$(cat /sys/$devDir/../device/model)
vendor=$(cat /sys/$devDir/../device/vendor)
if [ "$UMSD_TYPE" = "base" ]
then
mntDir=$UMSD_MNT_DIR/$(basename $DEVNAME)
elif [ "$UMSD_TYPE" = "ext" ]
then
mntDir=$UMSD_MNT_DIR/$(echo -n $vendor)-$(echo -n $model)
fi
#se non c'è la dir la creo
mntDir=$(createFolder $mntDir)
if [ $? = 0 ]
then
logStr "created $mntDir"
else
logStr "errror while creating $mntDir with code $?"
fi
#monto il dev in $mntDir
if ! mount -t auto $UMSD_MNT_OPTIONS $DEVNAME $mntDir
then
logStr "error while mounting $DEVNAME at $mntDir with code $?"
else
logStr "mounted $DEVNAME at $mntDir with $UMSD_MNT_OPTIONS"
fi
fi
elif [ "$ACTION" = "remove" ]
then
if [ $(cat /etc/mtab | grep $DEVNAME | gawk '{ print $1 }') = $DEVNAME ]#devo trovare il modo di stabilire in maniera univoca se $DEVNAME è un dev smontabile
then
mntDir=$(cat /etc/mtab | grep $DEVNAME | gawk '{ print $2 }')
if umount $DEVNAME
then
logStr "umounted $DEVNAME "
else
logStr "error while umounting $DEVNAME with code $?"
fi
if rmdir $mntDir
then
logStr "deleted $mntDir"
else
logStr "error while deleting $mntDir with code $?"
fi
fi
fi |
purtroppo ancora non ho capito dove bisogna mettere lo script per fare in modo che parta solo per i dispositivi usb-storage, se qualcuno lo sa batta un colpo _________________ about:mozilla |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31202 Location: here
|
Posted: Sun Dec 19, 2004 10:50 pm Post subject: |
|
|
Non hai un sito dove mettere il codice cosi' metti nel primo post solo il riferimento e riporti con nuovi post le nuove versioni? _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Sun Dec 19, 2004 11:06 pm Post subject: |
|
|
Purtroppo no, ma si mi dite dove potrei metterlo, lo faccio volentieri _________________ about:mozilla |
|
Back to top |
|
|
FMulder Tux's lil' helper
Joined: 25 Sep 2004 Posts: 83 Location: Cagliari, Italy
|
Posted: Sun Dec 19, 2004 11:36 pm Post subject: |
|
|
Ciao, ho provato il tuo script, sembra funzionare bene, grazie
Una domanda... non credo riguardi direttamente lo script..
in pratica io ho un iPod e una macchina fotografica, tramite udev e hotplug ho già creato dei mini-script per montarli automaticamente nelle cartelle che voglio io e con i device name e symlink che voglio io..
il tuo script lo sto usando per quando mi può capitare di dover collegare una penna usb generica.. però viene eseguito anche quando connetto l'ipod ad esempio, nonostante venga già eseguito lo script specifico per l'ipod!
Insomma, lo script dovrebbe venire eseguito come default appunto, e quindi se c'è uno script più "specifico" non dovrebbe venir preso in considerazione..
Certo, non è un grosso problema, funziona tutto comunque, ovviamente non fa un doppio mount, ma è una questione di principio
Soluzioni? |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Mon Dec 20, 2004 1:57 am Post subject: |
|
|
La sto implementando nella nuove versioni _________________ about:mozilla |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Mon Dec 20, 2004 8:28 am Post subject: |
|
|
SilverXXX wrote: | Purtroppo no, ma si mi dite dove potrei metterlo, lo faccio volentieri |
Prova con la sezione dowload di gentoo-italia _________________ Ciao da me! |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Mon Dec 20, 2004 10:22 am Post subject: |
|
|
Una sola domanda randomaze: mi sono iscritto, ma come faccio ad aggiungere lo script nella sezione download? _________________ about:mozilla |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Mon Dec 20, 2004 5:34 pm Post subject: |
|
|
Ok, è sorto un problemuzzo abbastanza grave al quale non avevo minimamente pensato; nella nuova versione ho fatto il controllo di fstab e va abbastanza bene (fin'ora nessun problema, ma devo ancora testare alcune condizioni), solo che quando monto il mio ngage con questa riga di fstab: Code: | /dev/ngage /mnt/ngage auto sync,users,noatime 0 0 | non si può entrare nella cartella dove è montato il dispositivo. Come mai?
EDIT: ho dimenticato un altra cosa; io monto un hd portatile con l'opzione users, per poterlo montare, smontare e scrivere da utente (è in fat32); per rendere possibile la scrittura anche dopo che è stato montato come root (dallo script) devo aggiungere umask=000 alle opzioni, giusto? _________________ about:mozilla |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Mon Dec 20, 2004 5:58 pm Post subject: |
|
|
Devi usare user e non users _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
FMulder Tux's lil' helper
Joined: 25 Sep 2004 Posts: 83 Location: Cagliari, Italy
|
Posted: Mon Dec 20, 2004 7:03 pm Post subject: |
|
|
SilverXXX wrote: | EDIT: ho dimenticato un altra cosa; io monto un hd portatile con l'opzione users, per poterlo montare, smontare e scrivere da utente (è in fat32); per rendere possibile la scrittura anche dopo che è stato montato come root (dallo script) devo aggiungere umask=000 alle opzioni, giusto? |
Devi usare user, come dice gutter, e per poterlo smontare devi prima averlo montato con lo stesso utente, mi sembra... umask=000 è giusto _________________ Chi rinuncia ai sogni, è destinato a morire
--> Jim Morrison |
|
Back to top |
|
|
SilverXXX l33t
Joined: 18 Sep 2004 Posts: 885
|
Posted: Mon Dec 20, 2004 9:23 pm Post subject: |
|
|
Appunto ho messo users, se io monto il device dallo script (come root, credo) per poterlo smontare anche da utente normale ho bisogno dell'opzione users. Solo non riesco a spiegarmi perchè non riesco a entrare nella cartella montata dell'ngage. _________________ about:mozilla |
|
Back to top |
|
|
|