Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
html
La maggior parte degli utenti di NetBSD finisce, prima o poi, per compilare un kernel personalizzato. In questo
modo si ottengono vari risultati apprezzabili:
si riducono considerevolmente le dimensioni del kernel (per es. da 2.5 MB a 1 MB) e quindi l'occupazione di
memoria. Sulla versione 1.5 di NetBSD creando un kernel personalizzato si può passare da 4.7 MB a meno di
due MB.
si migliorano le prestazioni.
si ottimizza il sistema.
si personalizzano alcune opzioni (per esempio il tipo di tastiera, l'offset dell'orologio BIOS, ecc.).
Se non avete l'archivio dei sorgenti del sistema operativo, lo potete scaricare dalla stessa fonte da cui avete
ottenuto il sistema installato, per esempio: ftp://ftp.netbsd.org. È importante scaricare i sorgenti corrispondenti
alla versione del sistema installato!
Il programma di installazione (sysinst) non installa i sorgenti del kernel, che devono quindi essere estratti a mano.
L'archivio che li contiene è syssrc.tgz che si trova nella directory source/sets. Il file si scompatta con
# gzip -dc syssrc.tgz | (cd / ; tar xvf -)
Bisogna avere un po' di pazienza perché i file da estrarre sono molti e l'operazione dura parecchi minuti. I sorgenti
vengono estratti nella directory /usr/src/sys; per accedervi si può anche usare il link simbolico /sys. Pertanto i
comandi
# cd /usr/src/sys
# cd /sys
sono equivalenti.
Terminata l'installazione è possibile rimuovere i sorgenti relativi alle architetture che non ci interessano e risparmiare
un po' di spazio su disco (se questo è un problema). Per fare questo bisogna portarsi nella directory /sys/arch ed
eliminare le sottodirectory non necessarie. Per esempio, per il port-i386 è sufficiente conservare la directory i386 Per
altri port può essere necessario conservare più di una directory sorgente in quanto vi possono essere delle
1 di 5 09/02/2007 9.30
Compilare il kernel http://www.mclink.it/personal/MG2508/netbsd/chap-kernel.html
dipendenze.
Tutto è pronto per creare un kernel personalizzato. Compilare un nuovo kernel è tutt'altro che difficile; le operazioni
da eseguire (quattro o cinque in tutto) sono descritte sul sito di NetBSD.
Combinazione Carattere
Alt Gr + 7 {
Alt Gr + 8 [
Alt Gr + 9 ]
Alt Gr + 0 }
Alt Gr + ' `
Alt Gr + ì ~
Alt Gr + é [
Alt Gr + + ]
Shift + Alt Gr + è {
Shift + Alt Gr + + }
Driver di console: dalla versione 1.4 NetBSD utilizza il driver multipiattaforma wscons per la gestione
dello schermo e della tastiera. Le versioni precedenti utilizzavano pccons oppure pcvt. Per maggiori
dettagli, vedere il Capitolo 13.
Per poter ricompilare il kernel è necessario aver installato il set del compilatore (comp.tgz). La ricompilazione del
kernel consiste dei seguenti passi
2. Configurare il kernel
2 di 5 09/02/2007 9.30
Compilare il kernel http://www.mclink.it/personal/MG2508/netbsd/chap-kernel.html
3. Generare le dipendenze
4. Ricompilare
Quando si modifica un file di configurazione del kernel si compiono, in sostanza, due tipi di operazioni:
1. si disabilita il supporto per le periferiche non presenti sul sistema e si abilita il supporto per quelle presenti (per
esempio, chi non ha dispositivi SCSI può disabilitare il supporto per l'interfaccia SCSI nel kernel).
2. si abilita/disabilita il supporto delle caratteristiche supportate dal kernel (per esempio, il supporto per la
compatibilità Linux, ecc.).
Per disabilitare una linea del file di configurazione bisogna aggingere un carattere "#" all'inizio della linea stessa. Un
buon punto di partenza per determinare cosa si può eliminare è lo studio dell'output del comando dmesg: per ogni
linea del tipo
<XXX> at <YYY>
è necessario che nel file di configurazione siano presenti sia XXX sia YYY. Prima di arrivare a una configurazione
minima è necessaria un po' di sperimentazione; per un sistema desktop, senza periferiche SCSI e schede PCMCIA si
può arrivare a produrre un kernel di dimensioni meno che dimezzate rispetto a quello generico.
Conviene anche dare un'occhiata alle opzioni presenti nel file di configurazione, disabilitando quelle che non
interessano. Ogni opzione è accompagnata da una breve descrizione; molte opzioni sono descritte più
approfonditamente su options(4). Prima di ricompilare conviene sistemare le opzioni per il supporto della tastiera
italiana e per il fuso orario:
options RTC_OFFSET=-60
...
options PCKBD_LAYOUT="KB_IT"
Esiste anche un script Perl che genera automaticamente un file di configurazione ridotto analizzando l'output di
dmesg. Questo script si può installare con la collezione dei package (pkgsrc/sysutils/adjustkernel). Per poterlo
eseguire, naturalmente, è necessario avere installato Perl sul sistema, il che è tutt'altro che difficile: vedere il Capitolo
8. A titolo di anticipazione, un modo semplicissimo di installare Perl consiste nel procurarsi il package precompilato
perl-5.00404.tgz e poi dare il comando:
# pkg_add perl-5.00404.tgz
A questo punto Perl è installato, configurato e pronto per lavorare: più facile di così...
3 di 5 09/02/2007 9.30
Compilare il kernel http://www.mclink.it/personal/MG2508/netbsd/chap-kernel.html
# cd /sys/arch/i386/conf
# perl adjustkernel GENERIC > MYKERNEL
Personalmente, ho usato una sola volta questo script e ha dato ottimi risultati. Si faccia attenzione però al fatto che lo
script configura le righe relative ai dispositivi, non quelle delle opzioni.
Se MYKERNEL non contiene errori il programma creerà i file necessari per poter compilare il kernel. In caso contrario
si deve tornare al punto precedente e sistemare gli errori. Il programma config analizza il file di configurazione
indicato come parametro e crea i file necessari per la compilazione, abilitando i dispositivi richiesti.
In compilazione si possono verificare degli errori, nel qual caso la compilazione stessa si arresta. Se ciò avviene
significa che il file di configurazione non è stato modificato correttamente e bisogna controllarlo e ripetere il
procedimento. Un esempio tipico è il seguente: l'opzione B, che richiede l'opzione A, è attiva; l'opzione A, però, è
commentata.
Una compilazione completa può durare da pochi minuti a molte ore, a seconda dell'hardware utilizzato. La tabella
seguente contiene alcuni esempi:
Al termine della compilazione nella directory corrente sarà stato creato il file netbsd. L'ultimo passo da compiere è la
copia del nuovo kernel in / (previo salvataggio del kernel precedente, mi raccomando).
# mv /netbsd /netbsd.old
# mv netbsd /
Come già detto, personalizzando il kernel se ne possono ridurre le dimensioni in modo considerevole. Per esempio, al
termine delle precedenti operazioni si ha:
-rwxr-xr-x 1 root wheel 1342567 Nov 13 16:47 /netbsd
-rwxr-xr-x 1 root wheel 3111739 Sep 27 01:20 /netbsd.old
A questo punto non rimane che riavviare il sistema con un bel reboot.
È sempre possibile che al riavvio qualcosa non vada come sperato; al limite il nuovo kernel potrebbe non riuscire
nemmeno a avviarsi. In questo caso non bisogna disperare; basta ripristinare il precedente kernel, che avevamo
provvidenzialmente salvato, in modalità mono utente in questo modo:
Riavviare la macchina
Premere la barra spazio quando compare il prompt del boot durante il conto alla rovescia di 5 secondi
boot:
Dare il comando
> boot netbsd.old -s
5 di 5 09/02/2007 9.30