Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Creato script per mount penne usb
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Thu Dec 16, 2004 8:57 pm    Post subject: Creato script per mount penne usb Reply with quote

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 :oops:
_________________
about:mozilla
Back to top
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Thu Dec 16, 2004 8:58 pm    Post subject: Reply with quote

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
View user's profile Send private message
otaku
Guru
Guru


Joined: 16 Dec 2004
Posts: 428
Location: Rho (MI)

PostPosted: Thu Dec 16, 2004 9:37 pm    Post subject: Reply with quote

è 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
View user's profile Send private message
Tùrin_Mormegil
Guru
Guru


Joined: 21 Sep 2004
Posts: 478
Location: Gorizia - Milano

PostPosted: Thu Dec 16, 2004 10:04 pm    Post subject: Reply with quote

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
View user's profile Send private message
otaku
Guru
Guru


Joined: 16 Dec 2004
Posts: 428
Location: Rho (MI)

PostPosted: Thu Dec 16, 2004 10:43 pm    Post subject: Reply with quote

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
View user's profile Send private message
fedeliallalinea
Administrator
Administrator


Joined: 08 Mar 2003
Posts: 30965
Location: here

PostPosted: Thu Dec 16, 2004 10:47 pm    Post subject: Reply with quote

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
View user's profile Send private message
Geps
Tux's lil' helper
Tux's lil' helper


Joined: 01 Mar 2004
Posts: 90
Location: Bologna

PostPosted: Thu Dec 16, 2004 10:55 pm    Post subject: Reply with quote

io sapevo che con "sync" nelle opzioni di fstab si risolveva il problema dei dati "volatili".

però attendo conferme.
Back to top
View user's profile Send private message
fedeliallalinea
Administrator
Administrator


Joined: 08 Mar 2003
Posts: 30965
Location: here

PostPosted: Thu Dec 16, 2004 10:56 pm    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Thu Dec 16, 2004 10:56 pm    Post subject: Reply with quote

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
View user's profile Send private message
randomaze
Bodhisattva
Bodhisattva


Joined: 21 Oct 2003
Posts: 9985

PostPosted: Thu Dec 16, 2004 11:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Fri Dec 17, 2004 8:56 am    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Fri Dec 17, 2004 10:15 am    Post subject: Reply with quote

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
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4795
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Sun Dec 19, 2004 10:40 pm    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Sun Dec 19, 2004 10:45 pm    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Sun Dec 19, 2004 10:49 pm    Post subject: Reply with quote

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 :D
_________________
about:mozilla
Back to top
View user's profile Send private message
fedeliallalinea
Administrator
Administrator


Joined: 08 Mar 2003
Posts: 30965
Location: here

PostPosted: Sun Dec 19, 2004 10:50 pm    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Sun Dec 19, 2004 11:06 pm    Post subject: Reply with quote

Purtroppo no, ma si mi dite dove potrei metterlo, lo faccio volentieri
_________________
about:mozilla
Back to top
View user's profile Send private message
FMulder
Tux's lil' helper
Tux's lil' helper


Joined: 25 Sep 2004
Posts: 83
Location: Cagliari, Italy

PostPosted: Sun Dec 19, 2004 11:36 pm    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Mon Dec 20, 2004 1:57 am    Post subject: Reply with quote

La sto implementando nella nuove versioni :D
_________________
about:mozilla
Back to top
View user's profile Send private message
randomaze
Bodhisattva
Bodhisattva


Joined: 21 Oct 2003
Posts: 9985

PostPosted: Mon Dec 20, 2004 8:28 am    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Mon Dec 20, 2004 10:22 am    Post subject: Reply with quote

Una sola domanda randomaze: mi sono iscritto, ma come faccio ad aggiungere lo script nella sezione download?
_________________
about:mozilla
Back to top
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Mon Dec 20, 2004 5:34 pm    Post subject: Reply with quote

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
View user's profile Send private message
gutter
Bodhisattva
Bodhisattva


Joined: 13 Mar 2004
Posts: 7162
Location: Aarau, Aargau, Switzerland

PostPosted: Mon Dec 20, 2004 5:58 pm    Post subject: Reply with quote

Devi usare user e non users :D
_________________
Registered as User #281564 and Machines #163761
Back to top
View user's profile Send private message
FMulder
Tux's lil' helper
Tux's lil' helper


Joined: 25 Sep 2004
Posts: 83
Location: Cagliari, Italy

PostPosted: Mon Dec 20, 2004 7:03 pm    Post subject: Reply with quote

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
View user's profile Send private message
SilverXXX
l33t
l33t


Joined: 18 Sep 2004
Posts: 885

PostPosted: Mon Dec 20, 2004 9:23 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum