View Full Version : automount penne usb con udev+hotplug
SilverXXX
15-12-2004, 07:33
Il problema è il seguente: vorrei riuscire a fare in modo che, appena si inserisce una penna usb (o dispositivi simili) essa venga montata in una cartella creata sul momento, con nome "model - vendor" della periferica in questione. Cercando su google non sono riuscito a trovare niente (che usasse udev + hotplug), ma in compenso ho capito qualcosa:[list=1] Aggiungere in /etc/hotplug/usb/ uno script chiamato come il moduel che si occupa del device (dovrebbe essere usb-storage)
Lo script deve (credo) agire in base alle variabili ACTION (add o remove) e DEVPATH (che dovrebbe essere il device che è stato montato)
model e vendor si trovano tramite /sys o /proc/bus/usb/device
[/list=1]Nessuno sa come fare ? (o lo ha già fatto)
ps. la mia distro è una gentoo con kernel 2.6.9-gentoo-r4
SE prendi il numero 15 d Linux Pratico c'e' un articolo esattamente su questo....
D contro t posso dire ke io l'ho provato e nn mi ha funzionato nel senso ke andava a metà (caricava tutto ma dentro /mnt/pendrive nn vedevo i miei files)...
SilverXXX
15-12-2004, 09:09
è ancora in edicola?
Originariamente inviato da SilverXXX
è ancora in edicola?
Boh, io mi sono abbonato x 1 anno e mi arriva a casa....
Al massimo, se nn lo trovo, fai 1 fischio ^_^
SilverXXX
15-12-2004, 09:35
è già uscito il 18; dubito che qualcuno che conosco lo abbia comprato se mi fai il favore di postare un sunto dell'articolo ti ringrazio ( e magari lo metto a posto per farlo andare bene del tutto :D )
prova con questo, ma devi sostituire 000/000/000 con quello che leggi nel file tmp/usb-storage-vars
la riga di mount del dispositivo usb deve essere presente nel file fstab con l'opzione sync.
A me nn funziona benissimo però almeno fa il mount in automatico. Prova tu, magari riesci a sistemarlo
#!/bin/bash
set > /tmp/usb-storage-vars
case "$ACTION" in
add)
case "$PRODUCT" in
000/000/000)
[ -e /dev/usbmp3 ] && rm /dev/usbmp3
mknod /dev/usbmp3 b 8 1
chmod 660 /dev/usbmp3
mkdir /mnt/usbmp3
sleep 2
mount /dev/usbmp3
echo "#!/bin/bash" > $REMOVER
echo "umount /dev/usbmp3" >> $REMOVER
echo "rm /dev/usbmp3" >> $REMOVER
echo "rmdir /mnt/usbmp3" >> $REMOVER
chmod 775 $REMOVER
;;
esac
;;
esac
SilverXXX
15-12-2004, 12:57
Da quel che ho letto finora, non si deve tentare di creare il dev nello script ma usare quello che creano udev+hotplug (che dovrebbe essere in $DEVPATH). Avrei anche qualche problema nel prendere il nome del modello e del venditore, ma facendo il giusto "cat /purc/bus/usb/devices | grep " dovrei prendere entrambi, o almeno spero :p
SilverXXX
15-12-2004, 15:10
Allora, ho rimediato qualcosa (ovviamente nnon è ancora funzionante, ma ho appena scritto qualcosa.....) ma mi sono trovato un problema che non so esattamente come aggirare: il sistema hotplug mi passa in DEVPATH la cartella in cui si trovano le informazioni (del tipo /sys/bus/usb/devices/1-1:2.0/) se è un dispositivo di massa, si trova la dir host + un numero (penso) da 1 a 9, dentro ad essa una cartella n:0:0:0, poi block e dentro i vari sda1, sda2 eccetera (alla fine la stringa è /sys/bus/usb/devices/1-1:2.0/host1/1:0:0:0/block/sda1/) da cui estrarre il dev sda1. Non c'è un modo più semplice per montare un dev sapendo solo fino a /sys/bus/usb/devices/1-1:2.0/ (perchè penso sarebbe uno spreco cercare tutti gli host*) ?
edit: mory scusa ma non me ne ero accorto, io volevo fare che montasse automaticamente le penne usb anche non presenti in fstab
Originariamente inviato da SilverXXX
Allora, ho rimediato qualcosa (ovviamente nnon è ancora funzionante, ma ho appena scritto qualcosa.....) ma mi sono trovato un problema che non so esattamente come aggirare: il sistema hotplug mi passa in DEVPATH la cartella in cui si trovano le informazioni (del tipo /sys/bus/usb/devices/1-1:2.0/) se è un dispositivo di massa, si trova la dir host + un numero (penso) da 1 a 9, dentro ad essa una cartella n:0:0:0, poi block e dentro i vari sda1, sda2 eccetera (alla fine la stringa è /sys/bus/usb/devices/1-1:2.0/host1/1:0:0:0/block/sda1/) da cui estrarre il dev sda1. Non c'è un modo più semplice per montare un dev sapendo solo fino a /sys/bus/usb/devices/1-1:2.0/ (perchè penso sarebbe uno spreco cercare tutti gli host*) ?
edit: mory scusa ma non me ne ero accorto, io volevo fare che montasse automaticamente le penne usb anche non presenti in fstab
no problem, cambia il comando di mount ;)
mount -t auto -o sync /dev/.... ecc.
dovrebbe andare senza riga nel fstab
SilverXXX
15-12-2004, 18:38
Purtroppo è più complesso di quel che credevo; cmq posto una versione incompleta (e già abbastanza incasinata) tanto per darvi un'idea.
Originariamente inviato da SilverXXX
Purtroppo è più complesso di quel che credevo; cmq posto una versione incompleta (e già abbastanza incasinata) tanto per darvi un'idea.
cmq nel mount ti conviene usare sync altrimenti se stacchi senza smontare le modifiche nn te le fa
SilverXXX
15-12-2004, 18:48
Nello script lo ho aggiunto; cmq sto pensando anche alla possibilità di controllare anche fstab, per monare i device se è presente una riga che li punti (ma dopo dovrò anche risolvere i symlink)
Originariamente inviato da SilverXXX
Nello script lo ho aggiunto; cmq sto pensando anche alla possibilità di controllare anche fstab, per monare i device se è presente una riga che li punti (ma dopo dovrò anche risolvere i symlink)
cmq tutta sta roba la fa già gvm ;)
SilverXXX
16-12-2004, 07:51
Non fosse che con le penne usb che non avevo settato in fstab non andava, si, direi di si, cmq io uso kde :D e vorrei mantenere il tutto un pò integrato. Sarebbe interessante vedere il codice di gvm e preparare un kvm, basata sempre su hal e dbus, ma sarebbe mooooolto :sofico: più lungo.
Scusate, mi inserisco visto che si parla di automount. Io riesco a montare una partizione Dati che o messo in mnt, ma non ho i permessi per scriverci da utente.
In fstab ho modificato da root la riga aggiungendo umask=022 ma non combia nulla....
Grazie per l'aiuto!
SilverXXX
16-12-2004, 08:06
Che fs usi? se ne usi uno unix, basta impostare i permessi della cartella su cui vuoi scrivere da root. Se usi un fs win mi sembra che umask=000 sia meglio (da tutti i permessi, per stare sul sicuro)
Fat32. Ci provo e ti dico....
Ma ci devo mettere anche defaults,umask=000?
Non funzia!
Io che ho fatto: ho nella cartella mnt una cartella dati su cui non ho il permesso giusto?
Per far ciò ho aggiunto una riga al file. L'aggiunta di umask=000 deve essere fatta su quella riga?
SilverXXX
16-12-2004, 08:48
Premetto che di solito io uso l'opzione users, così lo posso montare tranquillamente da utente, ma mi pare defaults non ci debba andare in fstab
SilverXXX
16-12-2004, 08:59
Allora, ho trovato qualcosa per lo script, che semplifica molto il tutto, ma richiede udev come device manager (niente dev statici o devfs); in pratica udev dopo aver creato i device richiama uno script passando il device come variabile DEVNAME. Adesso dovrei implementare il tutto abbastanza in fretta.
Originariamente inviato da SilverXXX
Allora, ho trovato qualcosa per lo script, che semplifica molto il tutto, ma richiede udev come device manager (niente dev statici o devfs); in pratica udev dopo aver creato i device richiama uno script passando il device come variabile DEVNAME. Adesso dovrei implementare il tutto abbastanza in fretta.
ok, tienici aggiornati ;)
SilverXXX
16-12-2004, 11:52
Ok, arrivano un aggiornamento + una richiesta d'aiuto. L'aggiornamento è che bene o male sono riuscito a montare, e non manca molto alla fine; però mi manca una cosa da fare: devo estrarre dalla stringa del device (es /dev/usb-storage/sda1) la parte finale e non so come fare. C'è qualcuno in grado di aiutarmi?
SilverXXX
16-12-2004, 20:35
Adesso invece arriva lo script :D .
Ancora è in fase 0.0 periodico 1 :sofico: cmq va e non fa danni; in pratica quando attacate qualcusa all'usb, vi crea una cartella dentro /mnt/usb-storage (che può essere cambiata andando a modificare una variabile nello script) chiamata come la marca e il modello del device che avere inserito (es. il mio N-Gage viene montato in /mnt/usb-storage/Nokia-N-Gage); e quando lo disinserite lo smonta e cancella la directory.
Con Gnome e Kde, se avete messo l'apposita voce nelle opzioni, farà anche apparire il collegamente sul desktop (ma questo lo fa il de, no lo script :p ).
L'installazione è semplice, basta metterlo in /etc/dev.d/default/ (o almeno da me è cosi, ma basta controllare in udev.conf dove stanno gli script, e metterlo in quella directory).
Se andate a vedere nell faq di udev, dice che esso non è fatto per montare i device usb, ma chi se ne frega, dato che tramite hotplug era molto più complesso?
ps. per chi non ha letto le prime risposte lo script richiede udev e hotplug
brutta storia! ho apt-gettato udev e nn si avviava + kdm e di conseguenza neanche kde :cry: ho dovuto rimuoverlo
SilverXXX
16-12-2004, 22:57
non basta udev, devi anche mettere hotplug nel runleve di default
Originariamente inviato da SilverXXX
non basta udev, devi anche mettere hotplug nel runleve di default
Io hotplug ce l'ho già funzionante; quando avvio linux mi rileva automaticamente tutti i dispositivi usb collegati; webcam, stampante,scanner, ups e hub
SilverXXX
20-12-2004, 02:18
Se dai un'occhiata, nove su dieci che è un problemai di permessi con qualche dev o ti ha spostato alcune cose; se rimetti udev e posti il log di xorg passato con grep EE, ti dovrei saper dire qualcosa.
Originariamente inviato da SilverXXX
Se dai un'occhiata, nove su dieci che è un problemai di permessi con qualche dev o ti ha spostato alcune cose; se rimetti udev e posti il log di xorg passato con grep EE, ti dovrei saper dire qualcosa.
ecco qui il log, però di xfree. Non dice niente
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(II) Loading extension MIT-SCREEN-SAVER
(EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module!
(EE) NVIDIA(0): *** Aborting ***
(EE) Screen(s) found, but none have a usable configuration.
SilverXXX
20-12-2004, 16:05
ah, allora dovrebbe essere abbastanza facile: dovrebbe essere un problema di permessi dei device del driver nvidia (inoltre ti conviene metterlo in /etc/modules.autoload.d/kernel-2.6); tu dovresti avevere "nvidia*:root:video:0660" in /etc/udev/permissions.d/50-permissions.dev (il nome del file potrebbe non essere identico, ma simile). Se la cambi con "nvidia*:root:video:0666" dovrebbe funzionare tutto perfettamente.
la directory modules.autoload.d nn ce l'ho
il mio file 50-permissions.dev si chiama solamente permissions.dev Ho cambiato i permessi alla riga nvidia, ma il problema rimane uguale identico a prima
Metti la stringa "nvidia" nel file /etc/modules/, mi sa che non ti carica il modulo della scheda automaticamente.
SilverXXX
20-12-2004, 21:25
Devi anche usare versioni di udev e dei driver abbastanza aggiornati, versioni vecchie andavano in conflitto.
Ricordando che udev funziona al 100% con le versioni superiori alla 2.6.7 del kernel linux.
@SilverXXX : A parte scaricare il tuo script e metterlo al posto giusto quanti pacchetti e/o moduli sono necessari avere ?
Es. Per i device usb devo caricare quanti moduli ? A parte installare il pacchetto udev devo mettere qlc altro ?
P.S. L'umount a caldo è sicuro (in termini di perdita di dati) ?
TNK
SilverXXX
07-01-2005, 11:43
i moduli necessario sono quelli per il tuo chip usb, più l'usb storage e i dischi scsi. Lo script lo devi mettere in /etc/dev.d/block/. Come pacchetti installati bastano udev e hotplug (ovviamente devono essere attivati). Scollegare i device senza smontarli, anche se possibile con le opzioni di mount che ho messo, è sconsigliato.
Purtroppo sono un pò fermo come upgrade allo script, ho incontrato un paio di problemi che ancora non sono riuscito a risolvere, appena posso cerco di farlo funzionare.
Originariamente inviato da SilverXXX
i moduli necessario sono quelli per il tuo chip usb, più l'usb storage e i dischi scsi.
Come faccio a sapere quali sono i moduli relativi al mio chip usb ?
Per dischi scsi cosa intendi esattamente ?
Originariamente inviato da SilverXXX
Lo script lo devi mettere in /etc/dev.d/block/. Come pacchetti installati bastano udev e hotplug (ovviamente devono essere attivati).
Per attivati cosa intendi ?
Io ho debian, dopo aver fatto l'apt-get devo fare qlc altro ?
TNK
SilverXXX
07-01-2005, 12:28
i moduli, se usi i kernel precompilati debian, li hai tutti. Per attivati intendo che devono partire al boot. Io uso gentoo, quindi non saprei dirti esattamente come si "attivano" in debian.
Originariamente inviato da SilverXXX
i moduli, se usi i kernel precompilati debian, li hai tutti. Per attivati intendo che devono partire al boot. Io uso gentoo, quindi non saprei dirti esattamente come si "attivano" in debian.
Ah beh.... far partire al boot un modulo, sotto debian, è 1 cazzata... basta mettere il nome del modulo dentro il file /etc/modules :D
Per "attivarli" credevo ke t riferissi ai pacchetti installati.... x questo nn capivo cosa volevi dire ^_^
Tnk
SilverXXX
09-01-2005, 14:16
Sono demoni, non moduli, udev e hotplug (udev non è propriamente un demone). usb-storage e gli altri per i dischi scsi invece sono moduli.
Originariamente inviato da SilverXXX
Sono demoni, non moduli, udev e hotplug (udev non è propriamente un demone). usb-storage e gli altri per i dischi scsi invece sono moduli.
ah ecco.... allora vedrò d attivarli al boot... so fare anke questo :)
tnk
Allora... ho attivato tutti i moduli necessari, ho installato udev e hotplug e messo il tuo script dentro /etc/dev.d/block MA non funziona....
All'inserimento della pen (o da un dmesg) ottengo questo messagio :
usb 5-1: new high speed USB device using address 3
scsi3 : SCSI emulation for USB Mass Storage devices
Vendor: SanDisk Model: Cruzer Mini Rev: 0.1
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sda: 250879 512-byte hdwr sectors (128 MB)
sda: assuming Write Enabled
sda: assuming drive cache: write through
/dev/scsi/host3/bus0/target0/lun0: p1
Attached scsi removable disk sda at scsi3, channel 0, id 0, lun 0
USB Mass Storage device found at 3
P.S. Io dentro /etc/dev.d nn avevo la cartella block MA solo le cartelle "default" e "net"
SilverXXX
13-01-2005, 11:01
block va creata, non è presente di default DI SOLITO, tranquillo. Adesso appena torno a casa al mio pc, do un'occhiata allo script per sapere cosa non va.
Originariamente inviato da SilverXXX
block va creata, non è presente di default DI SOLITO, tranquillo. Adesso appena torno a casa al mio pc, do un'occhiata allo script per sapere cosa non va.
OK, ricreerò quella cartella e c metto il tuo script...
2 domande :
1) Che permessi devo dare al tuo script ?
2) Devo creare, prima di attaccare 1 qlc penna, la cartella "usb-storage" dentro /mnt ?
TNK
[OT]
So che non e` molto attinente, ma io non riesco a montare la mia fotocamera.
E` una Canon a200.
Quando la accendo dmesg mi passa:
usb 1-2.4: new full speed USB device using address 3
ma non mi racconta tutta la storia come quando per esempio attacco una penna usb:
usb 1-2.2: new full speed USB device using address 4
usb 1-2.2: not running at top speed; connect to a high speed hub
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: Fujifilm Model: USB Drive Rev: 4.70
Type: Direct-Access ANSI SCSI revision: 02
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
USB Mass Storage device found at 4
(la penna e` usb2 l'hub usb e` usb 1.1)
vuol dire che la fotocamera non puo` essere montata come disco?
Per vedere il contenuto ho risolto con gphoto2.
Ma vorrei capire se la posso montare come disco esterno o no.
grazie
SilverXXX
13-01-2005, 18:56
@ the X: lo script deve essere eseguibile da root, quindi fai chown root nomefile e chmod 777 nomefile
@ jacko, se isa gphoto, quasi sicuramente non è usabile come disco esterno.
@SilverXXX : Ho installato ed avviato i pacchetti udev e hotplug, ho caricato i moduli usb del mio chip, usb-storage ed sd_mod; ho creato la cartella block dentro /etc/dev.d (root:root 755) e c ho messo il tuo file usb-storage.dev (root:root 777)...
All'inserimento della penna continuo però ad ottenere SOLO il messaggio :
code:
usb 5-1: new high speed USB device using address 3
scsi3 : SCSI emulation for USB Mass Storage devices
Vendor: SanDisk Model: Cruzer Mini Rev: 0.1
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sda: 250879 512-byte hdwr sectors (128 MB)
sda: assuming Write Enabled
sda: assuming drive cache: write through
/dev/scsi/host3/bus0/target0/lun0: p1
Attached scsi removable disk sda at scsi3, channel 0, id 0, lun 0
USB Mass Storage device found at 3
:(
SilverXXX
17-01-2005, 10:57
lo script crea un log in /var/log/umsd.log, prova a vedere se c'è e cosa c'è scritto. Poi magari postalo qui
ps. adesso che ho dato un pò di esami, sto riprendendo il lavoro sullo script
Originariamente inviato da SilverXXX
lo script crea un log in /var/log/umsd.log, prova a vedere se c'è e cosa c'è scritto. Poi magari postalo qui
ps. adesso che ho dato un pò di esami, sto riprendendo il lavoro sullo script
Ovviamente nn ho nessun log chiamato umsd.log MA dagli altri log vari leggo sono "successefull" ecc ecc
A parte questo dentro daemon.log vedo :
Jan 17 10:48:17 internet01 udev[1451]: removing device node '/dev/vcs1'
Jan 17 10:48:17 internet01 udev[1458]: removing device node '/dev/vcsa1'
Jan 17 10:48:17 internet01 udev[1466]: creating device node '/dev/vcs1'
Jan 17 10:48:17 internet01 udev[1484]: creating device node '/dev/vcsa1'
Jan 17 10:48:17 internet01 udev[1491]: creating device node '/dev/vcs3'
Jan 17 10:48:17 internet01 udev[1498]: creating device node '/dev/vcs4'
Jan 17 10:48:17 internet01 udev[1505]: creating device node '/dev/vcsa3'
Jan 17 10:48:18 internet01 udev[1511]: creating device node '/dev/vcsa4'
Jan 17 10:48:18 internet01 udev[1518]: creating device node '/dev/vcs2'
Jan 17 10:48:18 internet01 udev[1525]: creating device node '/dev/vcsa2'
Jan 17 10:48:18 internet01 udev[1476]: creating device node '/dev/vcs5'
Jan 17 10:48:18 internet01 udev[1533]: creating device node '/dev/vcsa5'
Jan 17 10:48:18 internet01 udev[1541]: creating device node '/dev/vcs6'
Jan 17 10:48:18 internet01 udev[1548]: creating device node '/dev/vcsa6'
Jan 17 10:48:19 internet01 udev[1560]: creating device node '/dev/vcs7'
Jan 17 10:48:19 internet01 udev[1563]: creating device node '/dev/vcsa7'
Jan 17 12:27:59 internet01 udev[1863]: creating device node '/dev/sda'
Jan 17 12:27:59 internet01 udev[1876]: creating device node '/dev/sda1'
SilverXXX
17-01-2005, 12:13
Forse non hai l'ultima versione dello script; vai si www.gentoo-italia.net, nella sezione download -> utility c'è anche il mio script, scarica quello. La versione lì presente è funzionante, e fa il log, quindi se ancora non dà log di errore in umsd.log ci deve essere un problema di configurazione in udev o hotplug.
Ho controllato il file in mio possesso ed è datato 17-dic mentre quello sul sito gentoo 21-dic quindi in effetti è + nuovo...
Proverò col nuovo file e poi t farò sapere...
tnk
Col nuovo file sono riuscito finalmente a far funzionare lo script d auto-mount :D
T chiedo adesso 2 piccole cose :
1) Come mai mi monta 2 volte la penna ? dentro la cartella /tmp/usb-storage mi trovo 2 cartelle col nome della mia penna...
2) Come mai ho i nomi dei files troncati ? Come se fossimo sul vecchio dos...
3) E' possibile fare in modo ke appaia sul desktop il collegamento alla penna e magari l'opzione (col tasto destro) x smontarla ?
TNK
SilverXXX
18-01-2005, 15:59
1) non so, a me non dava problemi quella versione, cmq appena riesco finisco la nuova (anche se ho un intoppo al momento cusa morte improvvisa di un quantum fireball 20gb)
2) per i nomi dei file troncati mi sembra strano, dato che come tipo di filesystem ho messo auto
3)Se usi kde o gnome con configurazioni abbastanza standard, dovrebbero già farlo; controlla (in kde che nelle impostazioni del desktop ci sia quella di mostrare i device)
Originariamente inviato da SilverXXX
1) non so, a me non dava problemi quella versione, cmq appena riesco finisco la nuova (anche se ho un intoppo al momento cusa morte improvvisa di un quantum fireball 20gb)
Appena posso proverò su d 1 altro pc x vedere se mi da lo stesso problema... Se poi trovi prima tu il problema fammelo sapere così scarico il nuovo script :)
Originariamente inviato da SilverXXX
2) per i nomi dei file troncati mi sembra strano, dato che come tipo di filesystem ho messo auto
Nn so cosa dirti... sono proprio in stile dos :(
Originariamente inviato da SilverXXX
3)Se usi kde o gnome con configurazioni abbastanza standard, dovrebbero già farlo; controlla (in kde che nelle impostazioni del desktop ci sia quella di mostrare i device)
Ho trovato l'opzione, adesso provo ad abilitarla e vediamo se funziona :)
TNK
TNK
SilverXXX
18-07-2005, 12:29
Se a qualcuno interessa ancora, ci sto rimettendo mano per implementare il supporto a più di una partizione (e per tentare di pulire quello schifo di codice)
Ah, ricordo questo 3d, però il prob nn sussite + in quanto con kde 3.4.1 mi sono piazziato le icone dei dispositivi rimovibili sulla barra di avvio e basta cliccarci sopra per montare automaticamente il dispositivo stesso e visualizzarne i file contenuti. Ecco qui uno SS, basta cliccare sulla penna e fare "open in new window" e si aprirà konqueror. Lo stesso vale per il CD e il DVD ;)
http://digilander.libero.it/mordel/t/mount.jpg
SilverXXX
30-07-2005, 22:03
Sì, in effetti con kde 3.4 hal+dbus sono supportati (anche se ancora kvm non si vede :muro: ), ma lo script cmq non li richiedeva, se qualcuno non li vuole o non li può usare, magari gli torna comodo.
ps. mi sta dando qualche problema udev al momento, nelle versioni recenti sono cambiate alcune cose che impediscono al mio script di girare; dato che c'è un altro file che parte (credo) e non il mio. Appena ho tempo cerco di capire perchè fa così.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.