18.3. Agenti hotplug

Un agente hotplug non è altro che un programma eseguibile che esegue le operazioni adatte all'evento. Gli agenti per eventi dei dispositivi si trovano sotto /etc/hotplug e si chiamano <nome evento>.agent. Per eventi di interfacce, udev esegue tutti i programmi in /etc/dev.d.

Gli agenti dei dispositivi caricano soprattutto dei moduli del kernel, ma spesso devono invocare dei comandi aggiuntivi. Sotto questo compito viene assolto da /sbin/hwup o /sbin/hwdown. Questi programmi eseguono una ricerca di una configurazione appropriata al dispositivo nella directory /etc/sysconfig/hardware. Se un determinato dispositivo non deve essere inizializzato, allora va creato un file di configurazione adatto con il modo di avvio manual o off. Nel caso in cui /sbin/hwup non presenta alcuna configurazione appropriata vengono caricati automaticamente dei moduli. Per maggiori dettagli rimandiamo a  Section 18.4, “Caricamento automatico di moduli”. Informazioni su /sbin/hwup sono reperibili nel file /usr/share/doc/packages/sysconfig/README e nella pagina di manuale dihwup.

Agenti di interfacce vengono invocati in modo indiretto tramite udev, così udev creare un riferimento al dispositivo (ingl. device node) a cui accede il sistema. udev consente di dare dei nomi persistenti alle interfacce. Per maggiori dettagli rimandiamo alla sezione Chapter 19, Device node dinamici grazie a udev. I singoli agenti configurano infine le interfacce. Segue una descrizione di alcune interfacce.

18.3.1. Attivare interfacce di rete

Interfacce di rete vengono inizializzate con /sbin/ifup e disattivate con /sbin/ifdown. Per maggiori dettagli rimandiamo al file /usr/share/doc/packages/sysconfig/README e alla pagina di manuale di ifup. udev non amministra dei “device nodes” visto che Linux non vi ricorre per interfacce di rete.

Se un sistema dispone di vari dispositivi di rete con driver diversi, può succedere che i nomi delle interfacce cambiano dopo il processo di boot, se questa volta è stato caricato prima un driver diverso. Per questo motivo in gli eventi per dispositivi di rete PCI vengono amministrate tramite delle code. Potete sopprimere tale comportamento nel file /etc/sysconfig/hotplug tramite la variabile HOTPLUG_PCI_QUEUE_NIC_EVENTS=no.

La via maestra per avere dei nomi di interfacce consistenti è quella di indicare nei file di configurazione delle singole interfacce il nome desiderato. Per maggiori dettagli a riguardo rimandiamo al file /usr/share/doc/packages/sysconfig/README.

18.3.2. Abilitare dispositivi di memorizzazione

Il mount delle interfacce dei dispositivi di memorizzazione può avvenire in modo del tutto automatico oppure venire preconfigurato. La configurazione avviene in /etc/sysconfig/hotplug tramite le variabili HOTPLUG_DO_MOUNT, HOTPLUG_MOUNT_TYPE, HOTPLUG_MOUNT_SYNC e nel file /etc/fstab.

Il processo del tutto automatico viene abilitato impostando la variabile HOTPLUG_DO_MOUNT=yes. Vengono supportati due modi, potete passare dall'uno all'altro tramite la variabile HOTPLUG_MOUNT_TYPE.

Nel modo HOTPLUG_MOUNT_TYPE=subfs viene creata una directory nella directory /media, il cui nome si deduce dalle proprietà del dispositivo. Questo è il punto di mount automatico assegnatoli da submountd ogni volta che si accede al dispositivo. I dati in questo caso, i dati vengono scritti immediatamente, quindi in questa modalità potete rimuovere i dispositivi non appena si spegne il led luminoso per il controllo degli accessi.

Nella modalità HOTPLUG_MOUNT_TYPE=fstab i dispositivi di memorizzazione vengono montati nel modo tradizionale in base alla registrazione nel file /etc/fstab. Tramite la variabile HOTPLUG_MOUNT_SYNC potete selezionare se l'accesso debba avvenire nel modo sincrono o asincrono. Nel modo asincrono si ha un più rapido l'accesso in scrittura, visto che i risultati vengono bufferizzati; comunque può accadere che i dati non possano essere scritti in modo completo se si rimuove in modo repentino il supporto dati. Nel modo sincrono tutti i dati vengono immediatamente scritti e quindi l'accesso è più lento. Il processo di unmount, ovvero smontaggio, del dispositivo deve avvenire manualemente tramite umount.

Il modo operativo completamente automatico viene disabilitato tramite la variabile HOTPLUG_DO_MOUNT=no. Il dispositivo va in seguito montato e smontato (mount e unmount) manualmente.

Negli ultimi due modi operativi si consiglia l'utilizzo di nomi di dispositivi persistenti, dato che i nomi di dispositivo tradizionali possono cambiare a seconda della sequenza di inizializzazione. Per maggiori dettagli sui nomi nomi di dispositivo persistenti rimandiamo al capitolo Chapter 19, Device node dinamici grazie a udev.