Sommario
Estratto
Il sistema hotplug controlla l'inizializzazione di quasi tutti i dispositivi installati su un computer. Non può essere utilizzato solo con i dispositivi che è possibile inserire o rimuovere durante un'operazione, bensì per tutti quelli che vengono rilevati durante l'avvio del sistema. Viene inoltre utilizzato con il file system sysfs e lo strumento udev, illustrati in Capitolo 33, Nodi di dispositivi dinamici con udev.
Finché non viene avviato il kernel, vengono inizializzati solo i dispositivi assolutamente necessari, ad esempio il bus di sistema, i dischi di avvio e la tastiera. Il kernel avvia gli eventi hotplug di tutti i dispositivi rilevati. Questi eventi vengono visualizzati nel daemon di udevd il quale esegue udev per creare il nodo del dispositivo e configurarlo. Per i dispositivi che non è possibile rilevare automaticamente, come ad esempio le vecchie schede ISA, viene utilizzata una configurazione statica.
A parte poche eccezioni, quasi tutti dispositivi vengono inizializzati non appena diventano accessibili, durante l'avvio del sistema o al momento dell'inserimento. Durante il processo di inizializzazione, le interfacce vengono registrate con il kernel. La registrazione avvia altri eventi hotplug che provocano la configurazione automatica della rispettiva interfaccia.
Nelle versioni precedenti di SUSE Linux veniva utilizzato un gruppo statico di dati di configurazione come base per l'inizializzazione dei dispositivi. Tutti gli eventi hotplug erano gestiti da script separati, chiamati agenti. In questa versione di SUSE Linux, invece, il sottosistema hotplug è integrato in udev, le cui regole forniscono le stesse funzionalità dei precedenti agenti hotplug.
Le impostazioni generali del sottosistema hotplug sono disponibili in /etc/sysconfig/hotplug con le descrizioni di tutte le variabili. La configurazione generale di un dispositivo dipende dalle regole di corrispondenza disponibili in /etc/udev/rules.d (vedere il Capitolo 33, Nodi di dispositivi dinamici con udev). I file di configurazione dei dispositivi specifici sono archiviati in /etc/sysconfig/hardware. La richiamata di un evento hotplug /proc/sys/kernel/hotplug, utilizzata nella versione precedente di SUSE Linux, è generalmente vuota perché udevd riceve i messaggi hotplug mediante un socket netlink.
Un sistema hotplug può essere utilizzato anche per configurare le interfacce, oltre ai dispositivi. Un dispositivo è generalmente collegato a un bus e offre le funzionalità necessarie a un'interfaccia la quale rappresenta l'astrazione visibile dall'utente di un gruppo, intero o parziale, di periferiche. Per il corretto funzionamento di un dispositivo è necessario utilizzare il driver corrispondente sotto forma di moduli del kernel. Inoltre, per offrire l'interfaccia all'utente, potrebbero essere necessari anche alcuni driver di livello più elevato. Le interfacce sono generalmente rappresentate da nodi di dispositivi creati da udev. La distinzione tra interfacce e dispositivi è importante per la comprensione di tutto il contesto.
I dispositivi specificati nel file system sysfs sono disponibili in /sys/devices. Le interfacce, invece, sono archiviate in /sys/class o /sys/block. Tutte le interfacce in sysfs devono includere un collegamento ai relativi dispositivi. Tuttavia, alcuni driver non supportano l'aggiunta automatica di questo collegamento senza il quale non è possibile conoscere il dispositivo a cui appartiene l'interfaccia e di conseguenza non è possibile individuare la configurazione appropriata.
Per fare riferimento a un dispositivo viene generalmente utilizzata una descrizione, che può corrispondere al percorso del dispositivo in sysfs (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0), a una descrizione del punto di connessione (bus-pci-0000:02:00.0), a un singolo ID (id-32311AE03FB82538) o simili. In passato, i nomi assegnati alle interfacce corrispondevano alla numerazione dei dispositivi esistenti e potevano quindi cambiare ogni volta che veniva aggiunto o rimosso un dispositivo.
Per indentificare le interfacce, è anche possibile utilizzare una descrizione del dispositivo associato. Generalmente, è possibile capire dal contesto se la descrizione fa riferimento al dispositivo o alla relativa interfaccia. Di seguito sono riportati alcuni esempi di dispositivi, interfacce e descrizioni.
Dispositivo collegato al bus PCI (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0 o bus-pci-0000:02:00.0) che presenta un'interfaccia di rete (eth0, id-00:0d:60:7f:0b:22 o bus-pci-0000:02:00.0). Quest'ultima è utilizzata dai servizi di rete oppure connessa a un dispositivo di rete virtuale, ad esempio un tunnel o una VLAN, che a sua volta dispone di un'interfaccia.
Dispositivo (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 o bus-scsi-1:0:0:0) che crea molte interfacce fisiche sotto forma di un bus (/sys/class/scsi_host/host1).
Dispositivo (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 o bus-scsi-1:0:0:0) con numerose interfacce (/sys/block/sda*).