Compilare e ottimizzare il kernel FreeBSD
Una volta eseguita l’installazione di una macchina FreeBSD solitamente si richiede una minima ottimizzazione ricompilando il kernel installato di default.
Prima di addentrarsi nei meandri della compilazione è necessario procurarsi i sorgenti del kernel con questi pochi passaggi:
# /stand/sysinstall
scegliere
‘Configure’
‘Distributions’
’src’
’sys’
quindi ‘OK’ e di nuovo ‘OK’
Selezionare un FTP da cui scaricare i sorgenti. Quindi, ad installazione completata uscire da sysinstall scegliendo ‘Exit’
Il nuovo albero dei sorgenti risiede in /usr/src/sys
Entriamo in /usr/src/sys/i386/conf
GENERIC è il file di configurazione di un kernel generico che dovrebbe funzionare con qualsiasi sistema.
E’ chiaro che se non si possiede alcuna interfaccia scsi o dispositivi elencati nel file suddetto sarebbe bene commentarli o rimuovere le voci corrispondeti.
Di solito si copia il file GENERIC in un file miokernel e si eseguono le modifiche su quest’ultimo.
A questo punto lanciare un config , dove
Il comando config ritorna alla console il path relativo dalla directory di compilazione vera e propria.
cd alla directory ritornata da config quindi
make depend
make
make install
Qualora ci fossero errori già dopo la fase di make è bene non lanciare il make install
Ottimizzazione in fase di compilazione
Un primo upgrade lo fa il buon vecchio
portupgrade -ra
Il processo di compilazione necessita di un pò di tempo (dipendente dalla macchina).
In alternativa si scaricano i soli distfiles e poi si aggiorna offline con
portupgrade -Fra
Il resto delle ottimizzazioni si fanno a livello di compilazione quindi è necessario modificare il file /etc/make.conf, che presenta dei tag molto comprensibili (a rigor di logica).
I tag sono:
CPUTYPE=cpu_type dove cpu_type può essere uno di questi: i386, i486, i586, i586/mmx i686, p2, p3, p4,
k6, k6-2, or k7. Attenzione perchè gcc v2 di FreeBSD non supporta le ottimizzazioni per l’ultimo Athlon.
In quei casi usare k7. Con gcc v3 c’è maggior supporto alle ottimizzazioni
CFLAGS= -O3 -pipe -funroll-loops -ffast-math dove
-O3 setta il livello di ottimizzazione al massimo (il codice del kernel non viene considerato per questo livello
-pipe permette il passaggio di codice da un processo all’altro attraverso pipeline anzichè file temporanei riducendo fortemente le operazioni di I/O.
-funroll-loops permette l’iterazione di cicli per un numero prefissato di volte
-ffast-math breaks IEEE/ANSI regole matematiche strict, assumendo che la radice quadrata di un numero è positiva. Non si consiglia di usare questo flag se si sta compilando codice basato sull’ implementazione esatta delle regole ANSI di IEEE.
COPTFLAGS= -O2 -pipe -funroll-loops -ffast-math stessa cosa del CFLAGS ma usata per la compilazione del kernel. Si preferisce -O2 invece di -O3 perche -O3 genera kernel non corretti. Ufficialmente è supportato solo -O ma usare -O2 è ormai uno standard de facto.
Si potrebbe compilare con ottimizzazione anche aggiungendo la riga ‘makeoptions COPTFLAGS’ al file di configurazione del kernel.
About this entry
You’re currently reading “Compilare e ottimizzare il kernel FreeBSD,” an entry on Francesco Gadaleta
- Published:
- 22.11.06 / 9am
- Category:
- Tutorials
No comments
Jump to comment form | comments rss [?] | trackback uri [?]