11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.1. LA GESTIONE DI KERNEL E MODULI 183Ricapitolando, l’insieme dei vari passi per ottenere un nuovo kernel ed installare tutti i filerelativi, è il seguente:make configmake depmake -j 3 bzImagemake -j 3 modulesmake modules_installcp arch/i386/boot/bzImage /boot/vmlinuz-2.4.24-mycp System.map /boot/System.map-2.4.24-mycp .config /boot/config-2.4.24-mydopo di che occorrerà configurare il proprio bootloader (vedi sez. 5.3) per l’uso del nuovo kernel.5.1.4 La gestione dei moduliCome accennato nella sezione precedente una delle caratteristiche più significative del kernel<strong>Linux</strong> è la modularità, che permette, tutte le volte che si richiede una funzionalità mancante, ditentare, prima di restituire un errore, il caricamento del modulo che la provvede. Come abbiamovisto questo comporta la configurazione del relativo supporto nel kernel e la compilazionecome moduli delle varie funzionalità che si vogliono utilizzare in questo modo; inoltre occorreanche l’installazione di una serie di programmi in user space che permettono di gestire questafunzionalità: il pacchetto modutils.Nelle vecchie versioni del kernel la gestione dei moduli era fatta attraverso un appositodemone, kerneld, che riceveva le richieste dal kernel ed eseguiva il caricamento dei moduli. Apartire dalla serie 2.4.x il meccanismo è stato realizzato con un apposito sottosistema del kernel,detto kmod.Il meccanismo si basa una apposita funzione interna al kernel 24 che prende come parametrouna stringa indicante il modulo che si vuole caricare (ma con questa si possono anche richiedere,come vedremo fra poco, funzionalità generiche) e crea un processo temporaneo interno al kernelche consente di invocare un apposito programma in user space il quale si incarica di tutte leoperazioni necessarie al caricamento del modulo. 25 Questo è di norma modprobe (che esamineremoin dettaglio a breve) ma si può specificare un qualunque altro programma sia attraversol’interfaccia del sysctl che scrivendolo direttamente in /proc/sys/kernel/modprobe.Il programma fondamentale per l’uso dei moduli è insmod, che si incarica di caricare unmodulo all’interno del kernel, leggendolo dal disco, effettuando la risoluzione dei simboli, ecollegandolo al codice del kernel. Il comando prende come parametro il nome del modulo, eper trovare il file il comando cerca il corrispondente file oggetto (cioè nome.o) sotto la directory/lib/modules/‘uname -r‘, 26 a meno che non si sia usata la variabile di ambiente MODPATH ouna diversa opzione nel file di configurazione /etc/modules.conf per indicare una directorydiversa.Se il modulo li prevede possono essere ulteriormente specificati dei parametri nella formaparametro=valore dove il parametro dipende dal modulo (la lista dei parametri disponibili perciascun modulo si può ottenere tramite il comando modinfo), ed il valore può essere una stringao un numero intero, quest’ultimo specificabile sia in forma decimale (17), che ottale (021), cheesadecimale (0x11).24 la funzione è request_module, inizialmente oltre a questa kmod era un processo interno al kernel che girava inpermanenza, poi però l’interfaccia è stata semplificata in modo da usare solo questa funzione e creare il processosu richiesta.25 data la complessità delle operazioni non è possibile eseguire un compito del genere in kernel space, mentreusando un programma in user space si possono avere a disposizione tutte le funzionalità del sistema.26 si è indicata la directory con questa notazione in quanto uname -r restituisce appunto la stringa con il nomedella versione del kernel, ed è proprio con tale nome che vengono cercati i moduli.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!