Per prima cosa, facciamo un breve giro nella directory
di compilazione del kernel. Tutte le directory menzionate
saranno relative alla directory principale
/usr/src/sys
, che è accessibile
attraverso il path /sys
. Ci sono
un certo numero di sottodirectory qua che rappresentano
parti differenti del kernel, ma la più importante
per i nostri scopi è
arch/conf
,
dove editerai il tuo file
di configurazione del kernel, e compile
,
che è l'area di passaggio dove il tuo kernel sarè
compilato. arch
rappresenta uno
fra i386
, alpha
,
amd64
, ia64
,
powerpc
, sparc64
,
o pc98
(un tipo di sviluppo alternativo
di hardware PC in Giappone). Tutto ciò che è
all'interno di particolare directory di architettura ha a che fare
solo con quell'architettura; il resto è codice
indipendente dalla macchina, comune a tutte le piattaforme
sulle quali FreeBSD potrebbe potenzialmente essere portato.
Nota l'organizzazione logica della struttura dele directory,
con ogni device supportato, file system e opzioni nelle proprie
sottodirectory.
Questo capitolo assume che tu stia usando la architettura i386 negli esempi. Se questo non è il caso, fai gli appropriati aggiustamenti per correggere i percorsi alla tua architettura.
Se non c'è una directory
/usr/src/sys
sul tuo sistema,
significa che i sorgenti del kernel non sono stati installati.
Il modo più semplice per farlo è eseguire
sysinstall
come root
, scegliendo
, poi
, poi
, poi
e . Se hai un'avversione
verso sysinstall e hai accesso
ad un CDROM «ufficiale» FreeBSD, allora puoi installare
i sorgenti dalla linea di comando:
#
mount /cdrom
#
mkdir -p /usr/src/sys
#
ln -s /usr/src/sys /sys
#
cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
#
cat /cdrom/src/sbase.[a-d]* | tar -xzvf -
Quindi, entra nella directory
arch/conf
e copia il file di configurazione del kernel con il nome
che vuoi dare al kernel. Ad esempio:
#
cd /usr/src/sys/i386/conf
#
cp GENERIC MYKERNEL
Tradizionalmente, questo nome è tutto in lettere
maiuscole e, se stai mantenendo molte macchine FreeBSD con hardware
differente, è una buona idea dargli il nome della macchina.
Noi lo chiamemeremo MYKERNEL
a titolo di
esempio.
Conservare il tuo file di configurazione del kernel
direttamente sotto /usr/src
può
essere una cattiva idea. Se stai incontrando problemi
puoi essere tentato di cancellare /usr/src
e partire da zero. Dopo averlo fatto,
di solito ci vogliono pochi secondi per realizzare
che hai appena cancellato il tuo file di configurazione del
kernel. Inoltre, non editare GENERIC
direttamente, dato che potrebbe essere sovrascritto
la prossima volta che
aggiorni i tuoi sorgenti, e le tue modifiche
andranno perse.
Piuttosto tieni il tuo file di configurazione
del kernel da qualche altra parte, e crea un link simbolico
al file nella directory i386
.
Ad esempio:
#
cd /usr/src/sys/i386/conf
#
mkdir /root/kernels
#
cp GENERIC /root/kernels/MYKERNEL
#
ln -s /root/kernels/MYKERNEL
Ora edita MYKERNEL
con il tuo
editor favorito. Se stai partendo da zero, il solo editor
disponibile sa` probabilmente vi,
che è troppo complesso per essere spiegato in questa sede,
ma è trattato estesamente in molti libri nella
bibliografia. Comunque,
FreeBSD offre un semplice editor chiamato ee
che, se sei un principiante, dovrebbe essere
il tuo editor favorito. Sentiti libero di cambiare le linee
di commento in cima al file di configurazione per riflettere
le tue configurazioni o i cambiamenti che hai fatto rispetto a
GENERIC
.
Se hai compilato un kernel sotto SunOS™ o qualche altro
sistema BSD, gran parte di questo file ti sarà noto.
Se stai arrivando da qualche altro sistema operativo tipo
DOS, d'altro canto, il file di configurazione
GENERIC
ti potrebbe sembrare troppo
complesso, così è meglio che segui le descrizioni
della sezione File di
Configurazione attentamente.
Se tu sincronizzi il tuo albero dei sorgenti
con i più recenti sorgenti del progetto FreeBSD,
accertati sempre di controllare il file
/usr/src/UPDATING
prima di eseguire
una qualsiasi operazione di aggiornamento.
/usr/src/UPDATING
viene aggiornato
con ogni versione dei sorgenti di FreeBSD, e quindi è
più aggiornato di questo manuale.
A questo punto devi compilare i sorgenti del kernel.
Entra nella directory /usr/src
:
#
cd /usr/src
Compila il kernel:
#
make buildkernel KERNCONF=MYKERNEL
Installa il nuovo kernel:
#
make installkernel KERNCONF=MYKERNEL
Si richede la presenza dell'intera struttura dei sorgenti di FreeBSD per compilare il kernel.
Di default, quando compili un kernel custom, anche
tutti i moduli del kernel sono
ricompilati. Se vuoi aggiornare il kernel in modo spiccio
o se vuoi compilare solo alcuni moduli, dovresti editare
/etc/make.conf
prima di iniziare
la compilazione del kernel:
MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs
Questa variabile contiene una lista dei moduli che saranno ricompilati.
WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs
Questa variabile contiene una lista dei moduli che saranno esclusi dal processo di compilazione. Per altre variabili che potresti trovare utili per il processo di compilazione del kernel, consulta la pagina man make.conf(5).
Il nuovo kernel sarà copiato nella directory
/boot/kernel
come /boot/kernel/kernel
e il kernel
precedente sarà copiato in
/boot/kernel.old/kernel
. Ora, riavvia il sistema
e riparti per usare il tuo nuovo kernel. Se qualcosa
va storto, ci sono alcune istruzioni di
troubleshooting
alla fine del capitolo che puoi trovare utili.
Accertati di leggere la sezione in cui si spiega
cosa fare in caso il tuo nuovo kernel
non faccia il boot.
Altri file relativi al processo di boot, come il boot
loader(8) e la configurazione sono conservati in
/boot/
. Moduli di terze parti o custom
possono essere piazzati in /boot/kernel/
, anche se gli utenti dovrebbero avere conoscenza
del fatto che tenere i moduli sincronizzati col kernel compilato
è molto importante. I moduli non creati per
interagire col kernel compilato possono risultare in
instabilità o comportamenti anomali.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.