kerneld è una caratteristica introdotta durante lo sviluppo dei kernel 1.3 da Bjorn Ekwall. Essa permette ai moduli del kernel come driver di periferica, driver di rete, filesystem di venir caricati all'ocorrenza automaticamente invece di doverlo fare manualmente con modprobe o insmod.
E per motivi ancor più divertenti, nonostante questi non siano (ancora?) integrati con il kernel standard:
può essere impostato per lanciare un programma utente, invece del solito schermo nero, permettendo così di usare qualsiasi programma come uno screen-saver;
in modo analogo al supporto dell'oscuramento dello schermo, è anche possibile cambiare il «beep» di console in qualche cosa di completamente differente.
kerneld consiste di due componenti:
un supporto nel kernel di Linux che permette di inviare delle richieste ad un demone, affinché sappia che un modulo è necessario per una certa operazione;
un demone a livello utente che capisca quali moduli devono essere caricati per soddisfare alle richieste del kernel.
Entrambe le parti dovranno essere operative per far funzionare il supporto kerneld. Non è sufficiente che ne sia configurata una sola.
Ci sono alcune buone ragioni per usare kerneld. Quelle che menzionerò sono le mie, gli altri potrebbero volerlo usare per altri motivi.
Se c'è la necessità di compilare dei kernel per svariati sistemi che si distinguono di poco (differenti tipi di schede di rete, per esempio), è possibile preparare un singolo kernel e alcuni moduli invece di essere costretti a compilare un kernel per ogni sistema.
I moduli sono più facili da provare per gli sviluppatori (non c'è bisogno di ravviare il sistema per caricare e scaricare i driver). Questo vale per tutti i moduli, non solo per quelli caricati da kerneld.
Limita l'utilizzo di memoria da parte del kernel, cioè si possiede più memoria disponibile per le applicazioni. La memoria usata dal kernel non è mai trasferita alla memoria di swap, così, se ci sono 100kB di driver inutilizzati compilati nel kernel, questi sono semplicemente RAM sprecata.
Alcune delle cose che uso (il driver per l'unità a nastro, per esempio, o l'iBCS) sono solo disponibili come moduli. Ma non voglio scocciarmi con il loro caricamento e scaricamento ogni volta che ne ho bisogno.
Le persone che curano le distribuzioni di Linux non devono compilare 284 differenti immagini di boot: ogni utente carica i driver di cui ha bisogno per il suo hardware. Distribuzioni Linux più moderne rileveranno l'hardware in uso e caricheranno solamente i moduli effettivamente necessari.
Certamente ci sono anche ragioni per le quali si potrebbe non volerlo usare (ad esempio quando si preferisce un unico file d'immagine per il kernel con tutti i driver compilati staticamente). In tal caso questo non è il documento giusto.
Il supporto nel kernel di Linux fu introdotto con Linux 1.3.57. Se si possiede una versione di kernel precedente, sarà necessario di aggiornarla se si desidera il supporto per kerneld. Tutti i maggiori siti ftp di Linux contengono i sorgenti del kernel inclusi:
Il demone a livello utente è incluso nel pacchetto modules. Questi sono normalmente disponibili dallo stesso sito in cui sono stati trovati i sorgenti del kernel.
se si vuole provare a caricare i moduli con gli ultimi kernel in fase di sviluppo, è necessario procurarsi il pacchetto modutils e non modules. Controllare sempre il file Documentation/Changes nei sorgenti del kernel per il numero di versione minimo richiesto per la propria immagine del kernel. Si veda anche per i problemi che si possono avere con i moduli ed il kernel 2.1. |