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).
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.
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.
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'
Alternativa degna di nota a mio parere è autofs che ha una caratteristica molto carina l'umount automatico dopo tot secondi di timeout.