Er zijn vier probleemcategoriën die op kunnen treden tijdens het bouwen van een aangepaste kernel:
config
faaltAls het commando config(8) faalt bij het verwerken
van de kernelbeschrijving, is er waarschijnlijk ergens een
eenvoudige fout gemaakt. Gelukkig geeft config(8) het
nummer van de regel weer waarmee het problemen had, dus kan
snel de regel gevonden worden waarin de fout zit.
In het onderstaande voorbeeld dient gecontroleerd te worden
of het sleutelwoord juist is ingevoerd door het met de
kernel GENERIC
of een andere
referentie te vergelijken:
make
faaltAls make
faalt, duidt dit meestal op
een fout in de kernelbeschrijving die niet erg genoeg is om
door config(8) opgemerkt te worden. De instellingen
dienen nogmaals nagekeken te worden. Als het probleem nog
steeds niet is op te lossen, stuur dan een mail naar de
FreeBSD algemene vragen mailinglijst met de kernelinstellingen. Dat leidt meestal
snel tot een diagnose.
Als de nieuwe kernel niet opstart of de apparaten
niet herkent is kalmte geboden. FreeBSD heeft een uitstekend
mechanisme om van niet-compatibele kernels te herstellen.
De gewenste kernel om mee op te starten kan vanuit de FreeBSD
boot loader gekozen worden. Als het systeemopstartmenu
verschijnt, kan deze gekozen worden.
Selecteer de optie “Escape to a loader prompt”,
nummer zes. Typ op de prompt
boot
of de naam van een andere kernel die correct
opstart. Als de kernelinstellingen gewijzigd worden, is
het altijd aan te raden om een kernel bij de hand te houden
waarvan bekend is dat die juist werkt.kernel.old
Nadat er met een goede kernel is opgestart, kan het
instellingenbestand gecontroleerd worden en geprobeerd
worden om de kernel nogmaals te bouwen. Een behulpzame
bron is het bestand /var/log/messages
,
dat onder andere alle kernelberichten van alle keren dat er
succesvol is opgestart vastlegt. Ook geeft dmesg(8)
alle kernelberichten weer van de huidige
opstartprocedure.
Als er problemen zijn met het bouwen van een kernel,
dient een GENERIC
, of een andere
kernel waarvan bekend is dat die werkt, bewaard te worden
onder een andere naam die niet verwijderd wordt als de
volgende kernel gebouwd wordt. Er kan niet op
kernel.old
vertrouwd worden omdat
bij de installatie van een nieuwe kernel
kernel.old
overschreven wordt met de
laatst geïnstalleerde kernel, die niet hoeft te
werken. Ook dient de werkende kernel zo snel mogelijk
naar de juiste plaats /boot/kernel
verplaatst te
worden, omdat anders commando's als ps(1) eventueel
onjuist werken. Hiervoor dient simpelweg de map met de
goede kernel hernoemd te worden:
#
mv /boot/kernel /boot/kernel.slecht
#
mv /boot/kernel.goed
/boot/kernel
Als er een andere versie van de kernel is geïnstalleerd dan degene waarmee de systeemgereedschappen gebouwd zijn, bijvoorbeeld een kernel voor -CURRENT op een -RELEASE-systeem, werken vele systeemstatuscommando's als ps(1) en vmstat(8) niet langer. De wereld moet opnieuw gecompileerd en geïnstalleerd worden en met dezelfde broncodestructuur als de kernel zijn gebouwd. Dit is een van de redenen waarom het normaliter geen goed idee is om een afwijkende versie van de kernel ten opzichte van de rest van de wereld te gebruiken.