Ldlabs.org - Home Page

Ivman e l'automount in fluxbox

Created by Lord_Dex on 30/12/2008

Come configurare l'automount in fluxbox grazie ad un handler facilmente configurabile e molto leggero.
Potete scaricarlo da qui.

Devices Automount on Gnu/Linux
Introduzione
Tratteremo brevemente la configurazione minimale per ottenere l'automount in debian. Io utilizzo fluxbox ma praticamente questo metodo può essere utilizzato con qualsiasi windows manager o desktop environment.
Nello specifico configureremo ivman, un handler per gli eventi hal.
In particolare ivman permette, oltre che l'automount della quasi totalità dei supporti estraibili (cdrom e floppy) e dei devices usb, di associare delle operazioni che verranno eseguite quando un determinato supporto verrà riconosciuto.
Può utilizzare sia mount che pmount (il secondo non necessita di voci opportune in fstab per montare il supporto).
Installazione
Per l'installazione basta utilizzare aptitude:
aptitude install ivman pmount
in questo modo installeremo pmount e ivman stesso, hal e udev sono già installati.
ivman può essere eseguito da un qualsiasi utente appartenente al gruppo plugdev o da root all'avvio del sistema; il mio consiglio e lanciarlo con l'avvio del vostro windows manager come utente normale (semplicemente inserendolo nel file di startup di fluxbox ad esempio), in questo modo si eviteranno molti problemi di permessi di lettura tentando di accedere ai device montati.
Configurazione
I file di configurazione di ivman sono tutti contenuti nella cartella /etc/ivman, iniziamo con l'editare il file IvmConfigBase.xml. Dobbiamo togliere i commenti dalle opzioni mountcommand e umountcommand ed editiamolo in questo modo:
<ivm:Option name="mountcommand" value="pmount '$hal.block.device$'" />
<ivm:Option name="umountcommand" value="pumount '$hal.block.device$'" />
Così avete impostato ivman per fare in modo di utilizzare pmount per montare e smontare i devices, ovviamente potete utilizzare il normale mount/umount semplicemente cambiando qui il comando da eseguire, ricordate che con pmount è comodo perchè permette di montare device che non sono contenuti in fstab.
In IvmConfigAction potete configurare delle azioni differenziate per ogni tipo di device che viene inserito; ad esempio notate la linea :
<ivm:Match name="hal.volume.disc.type" value="cd_rom">
<ivm:Match name="hal.volume.disc.has_audio" value="true">
<ivm:Match name="hal.volume.disc.has_data" value="false">
<ivm:Option name="exec" value="/usr/bin/cdplay -d '$hal.block.device$'" />
</ivm:Match>
</ivm:Match>
</ivm:Match>
; In questo modo un cd audio inserito nel lettore verrà eseguito automaticamente tramite cdplay (contenuto nel pacchetto cdtool).
Il file IvmConfigConditions.xml conterrà le regole che faranno eseguire determinati comandi se alcune condizioni verranno soddisfatte (ad esempio spegnere il computer quando premete il tasto di spegnimento).
Infine il file IvmConfigProperties.xml controllerà il mutare di alcune proprietà dei device e in base al valore che assumono eseguirà dei comandi opportuni.
Tips
HardDisk Usb (Modo 1): Se collegando un harddisk usb ivman in verbose mode (attivabile tramite un opzione nel file IvmConfigBase.xml) vi ritorna un errore del tipo "Device /dev/sdb1 won't be mounted because no mount policy was specified on volume or storage device and storage device does not appear to be removable" create un file in /etc/hal/fdi/policy con nome qualcosa.fdi inserendo all'interno queste righe:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="info.category" string="storage">
<match key="storage.hotpluggable" bool="true">
<merge key="storage.policy.should_mount" type="bool">true </match>
</match>
</device>
</deviceinfo>
HardDisk Usb (Modo 2): Editare il file /etc/hal/fdi/policy/preferences.fdi nella parte iniziale togliere il commento e modificare le righe come segue:
<device> <match key="storage.hotpluggable" bool="false">
<match key="storage.removable" bool="false">
<merge key="storage.automount_enabled_hint" type="bool">true </match>
</match>
</device>
Label come punti di mount: Se volete modificare i punti di mount che ivman utilizza per montare i vostri device (/media/DEVICENAME di default) utilizzando per ogni device una cartella corrispondente all'etichetta del disco eseguite le seguenti modifiche:
File IvmConfigBase.xml:
<ivm:Option name="mountcommand" value="pmount '$hal.block.device$' /media/'$hal.volume.label$'" />

Per ovviare al problema di dischi senza etichetta dobbiamo andare a modificare il file /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi aggiungendo ad ogni sezione dei filesystem che potrebbero non avere etichette le seguenti righe:
<match key="volume.label" string="">
<merge key="volume.label" type="string">ETICHETTA </match>
prendiamo per esempio la sezione ntfs:
<!-- allow these mount options for ntfs -->
<match key="volume.fstype" string="ntfs">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">uid= <append key="volume.mount.valid_options" type="strlist">gid= <append key="volume.mount.valid_options" type="strlist">umask= <append key="volume.mount.valid_options" type="strlist">locale= <append key="volume.mount.valid_options" type="strlist">utf8 </match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">-u= <append key="volume.mount.valid_options" type="strlist">-g= <append key="volume.mount.valid_options" type="strlist">-m= <append key="volume.mount.valid_options" type="strlist">-a <append key="volume.mount.valid_options" type="strlist">-i <append key="volume.mount.valid_options" type="strlist">-C= <append key="volume.mount.valid_options" type="strlist">-W= </match>
<!-- AGGIUNTA PER IMPOSTARE UNA ETICHETTA SE NON ESISTE UNA -->
<match key="volume.label" string="">
<merge key="volume.label" type="string">usb </match>
</match>
Abilitare la modalità di debug: editare il file IvmConfigBase.xml:
Montare tutti i dispositivi eccetto uno: editare il file IvmConfigActions.xml:
<ivm:Match name="ivm.mountable" value="true">
<ivm:Option name="mount" value="true" />
<ivm:Match name="hal.info.udi" value="/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial">
<ivm:Option name="mount" value="false" />
</ivm:Match>
</ivm:Match>
In questo caso montiamo tutti i dispositivi eccetto quello identificato dall'udi '/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial'
Alternative
Alternativa degna di nota a mio parere è autofs che ha una caratteristica molto carina l'umount automatico dopo tot secondi di timeout.

ldwebengine v 0.2 - By Francesco Apollonio - 2008-2010 - All right Reversed
Valid XHTML 1.0 Transitional CSS Valido!