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.

182 CAPITOLO 5. AMMINISTRAZIONE STRAORDINARIA DEL SISTEMAalla compilazione dei moduli. Questo viene fatto con il comando make modules.La compilazione del kernel (e dei moduli) è in genere un processo piuttosto lungo e cheutilizza pesantemente le risorse (memoria e CPU) della macchina. Pertanto viene spesso ancheusato come test di efficienza. 18 Il procedimento può essere velocizzato usando l’opzione -j delcomando make che consente di parallelizzare la compilazione. Questa è una funzionalità deltutto generale di make 19 che consente di specificare come parametro dell’opzione un numero diprocessi da eseguire in parallelo, 20 ciascuno dei quali compilerà parti indipendenti, 21 così daavere in generale sempre qualche processo in compilazione anche quando gli altri sono bloccatisull’I/O.Una volta eseguita la compilazione i passi successivi riguardano l’installazione; il primopasso è installare i moduli, questo viene fatto usando un ulteriore target, con il comando makemodules_install. I moduli vengono sempre installati sotto /lib/modules, in una directorydiversa per ciascuna versione del kernel, con lo stesso nome della versione del kernel (così comedefinita nel Makefile); così nel caso si installino i moduli del kernel 2.4.24 i moduli e tutti irelativi file saranno installati in /lib/modules/2.4.24/.I passi successivi sono l’installazione della nuova immagine del kernel e di file relativi. Perquesto vengono anche forniti alcuni target per make, ma in genere è preferibile eseguire l’operazionemanualmente, anche perché in questo caso le operazioni sono indipendenti dal bootloaderche si intende usare.Come spiegato in sez. 1.2.3 i file necessari all’avvio del sistema sono mantenuti in /boot,pertanto è qui che deve essere copiata l’immagine del kernel, che nella maggior parte dei casi èarch/i386.boot/bzImage; la convezione è chiamare il file con il nome vmlinuz-versione, dovela versione è quella impostata con il Makefile. In genere è utile anche copiare il file System.map,questo contiene le informazioni che permettono di identificare per nome (e non tramite l’indirizzoin memoria) le varie routine del kernel, la cosiddetta mappa dei simboli. 22Il contenuto di questo file è utilizzato dal processo interno al kernel che invia al servizio delsyslog gli eventuali errori riscontrati nell’esecuzione del kernel; questi contengono degli indirizzibinari, ed il file viene usato per poter ottenere i nomi delle funzioni coinvolte invece dei loroindirizzi. 23 La sua assenza perciò non comporta problemi di funzionamento del sistema, ma solouna maggiore difficoltà per chi dovrà andare ad analizzare gli errori.Lo stesso file è utilizzato anche in sede di installazione dei moduli quando vengono calcolatele dipendenze di un modulo da un altro, ed il comando depmod (che vedremo a breve) daràdegli errori in caso di sua mancanza o di non corrispondenza con il kernel attivo. Come perl’immagine del kernel questo viene di norma copiato su /boot appendendo un “-” e la versione;questo fa si che ogni kernel sia in grado di trovare ed utilizzare la sua mappa.Infine è buona norma, tutte le volte che si installa un nuovo kernel, salvare anche le opzionidi configurazione con cui lo si è prodotto, questo significa copiare anche il file .config, di normaquesto si fa (ad esempio è la scelta di Debian) copiandolo sempre sotto /boot, con il nomeconfig-versione.18 ad esempio può facilmente causare il surriscaldamento della CPU, per cui viene utilizzato spesso per verificarese un overclocking è andato a buon fine.19 in realtà la funzionalità è della versione <strong>GNU</strong> di make, non è detto la si ritrovi su altre versioni.20 la cosa è particolarmente efficiente su macchine multiprocessore.21 questo è possibile sfruttando appunto le informazioni sulle dipendenze usate da make per affidare a processidiversi la compilazioni di sorgenti indipendenti.22èin questo file cioè che viene mantenuto l’elenco completo dei nomi delle funzioni esportate (cioè rese visibilianche alle altre funzioni, così che queste possano chiamarle) all’interno del kernel, sia quelle presenti nell’immaginedi avvio che quelle presenti nei moduli.23 la funzionalità di per sé non è essenziale, ma senza questa informazione diventa molto complesso per chi sviluppail kernel capire dove si è verificato l’errore, ed anche più difficile per voi chiedere aiuto o cercare informazionirelativamente all’errore stesso.

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

Saved successfully!

Ooh no, something went wrong!