Ci sono cinque categorie di problemi che si possono presentare quando si crea un nuovo kernel. Sono:
Se il comando config(8) fallisce quando gli passi la descrizione del tuo kernel, hai fatto probabilmente un semplice errore da qualche parte. Fortunatamente config(8) scriverà il numero della linea che ha dato errore, così puoi facilmente trovare la linea errata. Ad esempio, se vedi:
config: line 17: syntax error
Accertati che la parola chiave sia scritta correttamente confrontandola con quella del kernel GENERIC o un altro riferimento.
Se il comando make fallisce, di solito segnala un errore nella descrizione del kernel che non è abbastanza grave per config(8). Ancora, controlla la tua configurazione e se ancora non riesci a risolvere il problema, invia una mail a mailing list per le domande generiche su FreeBSD con la tua configurazione del kernel, e dovrebbe essere diagnosticato velocemente.
Se il kernel è stato compilato correttamente, ma non si riesce ad installarlo (i comandi make install o make installkernel falliscono), la prima cosa da controllare è se il tuo sistema sta girando in securelevel 1 o più alto (vedi init(8)). L'installazione del kernel cerca di rimuovere il flag immutabile dal tuo kernel e impostare il flag immutabile su quello nuovo. Dato che securelevel 1 o più alto impediscono di togliere i flag immutabili su ogni flag di sistema, l'installazione del kernel deve essere eseguita a securelevel 0 o più bassa.
Quanto sopra si applica a FreeBSD 4.X e versioni precedenti. FreeBSD 5.X, con le versioni nuove, non imposta il flag immutabile del kernel ed un fallimento nell'installazione del kernel probabilmente indica un problema più profondo.
Se il tuo kernel non fa il boot, o fallisce nel riconoscimento dei tuoi device, non andare in panico! Fortunatamente FreeBSD ha un ottimo meccanismo per ricominciare in questo caso. Semplicemente scegli il kernel da cui vuoi fare il boot dal boot loader FreeBSD. Puoi accedere ad esso quando il sistema fa il conto alla rovescia da 10 al menu di boot. Premi un tasto qualsiasi tranne Enter, digita unload e poi digita boot /boot/kernel.old/kernel o il nome del file di un altro kernel da cui puoi bootare correttamente. Quando configuri un kernel, è sempre una buona idea tenere un kernel che si sa che funzioni a portata di mano.
Dopo aver fatto il boot con un kernel funzionante puoi controllare il tuo file di configurazione e cercare di ricompilarlo. Una risorsa utile è il file /var/log/messages che, fra le altre cose, registra tutti messaggi del kernel da ogni boot riuscito. Inoltre, il comando dmesg(8) scriverà i messaggi del kernel dall'ultimo boot.
Nota: Se hai problemi a compilare un kernel, accertati di tenere un kernel GENERIC, o qualche altro kernel che sai che funzioni a portata di mano,con un nome diverso cosichè non sia cancellato dalla successiva compilazione. Non puoi affidarti su kernel.old perchè quando installi un nuovo kernel, kernel.old viene cancellato dall'ultimo kernel installato, che poteva essere non funzionanante. Inoltre, appena possibile, sposta il kernel funzionanante nella directory corretta /boot/kernel o comandi come ps(1) potrebbero non funzionare bene. Per farlo, semplicemente rinomina la directory contenente il kernel funzionante:
# mv /boot/kernel /boot/kernel.bad # mv /boot/kernel.good /boot/kernelPer versioni di FreeBSD precedenti alla 5.X, il comando corretto per “sbloccare” il file del kernel che make installa (per muovere un altro kernel di nuovo nella stessa directory) è:
# chflags noschg /kernelSe scopri che non puoi farlo, stai probabilmente girando a securelevel(8) maggiore di zero. Edita kern_securelevel in /etc/rc.conf e impostalo a -1 , poi fai il reboot. Puoi cambiarlo al suo valore precedente, quando sei soddisfatto del tuo nuovo kernel.
E, se vuoi “bloccare” il tuo nuovo kernel nella sua posizione, o qualsiasi altro file analogo, cosicchè non posssa essere spostato o alterato:
# chflags schg /kernel
Se hai installato una versione del kernel differente da quella delle utilities di sistema, per esempio un kernel 5.X ed un sistema 4.X, molti comandi di stato del sistema come ps(1) e vmstat(8) non funzioneranno più. Dovresti ricompilare ed installare world con la stessa versione dei sorgenti del tuo kernel. Questa è una ragione per non usare una versione del kernel diversa dal sistema operativo.
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>.