8.6. Kui midagi läheb valesti

On olemas viis kategooriat probleeme, mis võivad kohandatud kerneli ehitamisel tekkida. Need on:

config tagastab vea

Kui config(8) tagastab sinu kerneli kirjelduse lugemisel vea, siis oled sa arvatavasti kusagil kergelt libastunud. Õnneks ütleb config(8) oma veateates ka vigase rea numbri, et sa saaksid kiirelt selle vi-ga leida. Näiteks, kui sa näed järgmist:

config: line 17: syntax error

siis võid sa vi käsurezhiimis otse probleemse reani minna, kasutades käsku 17G. Tee kindlaks, et võtmesõna on kirjutatud õieti - võrdle seda kas GENERIC-seadistustefaili või mõne muu allikaga.

make tagastab vea:

Kui make tagastab vea, tähendab see tavaliselt, et su kerneli kirjelduses on viga, mis siiski pole piisavalt tõsine, et config(8) selle tabanud oleks. Ka sellel puhul tuleb algatuseks kontrollida oma seadistust ja kui sa ikkagi ei suuda probleemi lahendada, siis saada e-mail oma kerneli seadistustega meililisti FreeBSD general questions mailing list ja viga diagnoositakse kiirelt.

Uue kerneli paigaldamine ei õnnestu:

Kui uus kernel kompileerus kenasti, kuid paigaldamine ei õnnestunud (make install või make installkernel tagastasid veateate), siis tuleks esmalt kontrollida, ega su süsteem ei tööta esimesel või mõnel kõrgemal turvatasemel (loe init(8)). Kerneli paigaldamisprotsess üritab kernelilt eemaldada muutmiskindluse lipu ja panna see uuele kernelile. Kuna turvatase 1 ja sellest kõrgemad tasemed hoiavad ära muutmiskindluse lipu mahavõtmise ükskõik milliselt faililt süsteemis, tuleb kernelit paigaldada turvatasemel 0 või sellest madalamal.

Uus kernel ei laadu

Kui süsteem ei suuda su uut kernelit laadida või ei suuda viimane su seadmeid ära tunda, ei ole vaja siiski veel paanikasse sattuda! Õnneks on FreeBSD-l olemas hea lahendus süsteemi taastamiseks vigase kerneli puhul. Lihtsalt vali FreeBSD laadurist kernel, mida sa laadida tahad. Sellele saad ligi siis, kui süsteem loeb arve 10-st alla. Vajuta ükskõik millist klahvi peale Enter-i, sisesta unload ja seejärel boot kernel.old või mõne muu kerneli nimi, mis korralikult laadub. Kernelit ümberseadistades on alati kasulik hoida käepärast ka kindlalt töötav kernel.

Kui oled tagavarakerneliga süsteemi käima saanud, kontrolli oma kerneli seadistuste fail üle ja proovi see uuesti ehitada. Üheks heaks ressursiks seejuures on fail /var/log/messages, mis muuhulgas salvestab ka iga õnnestunud laadimise puhul antud kerneliteated. Antud laadimise ajal salvestatud kerneliteateid saab näha ka käsu dmesg(8) abil.

Note: Kui sul on kerneli ehitamisega raskusi, hoia kindlasti käepärast GENERIC või mõni teine kernel, mida sa tead kindlasti töötavat. See peaks olema mingi sellise nime all, mida järgmise kerneli ehitamisel automaatselt ei kustutataks. Sa ei saa loota kernel.old peale, kuna alati enne uue kerneli paigaldamist kopeeritakse see fail üle viimase paigaldatud kerneliga, mis aga ei pruugi töötada. Niipea kui võimalik, peaksid sa töötava kerneli panema õigesse kerneli asukohta, vastasel juhul ei tööta mõningad käsud, nagu näiteks ps(1) õieti. Kernelilt make'i poolt pandud ``luku mahavõtmiseks'' (et see mingi teise kerneliga asendada) tuleb kasutada käsku

# chflags noschg /kernel

Uue kerneli või ükskõik millise muu faili võid sa ka ``lukustada'', et seda ei saaks muuta. Selleks tuleb kasutada järgnevat käsku:

# chflags schg /kernel

Kui see sul ei õnnestu, töötab su süsteem tõenäoliselt securelevel(8) nullist kõrgemal tasemel. Säti muutuja kern_securelevel failis /etc/rc.conf väärtusele -1 ja seejärel alglaadi süsteem. Kui oled oma uue kerneliga rahul, võid selle muutuja väärtuse tagasi vanale väärtusele sättida.

Uue kerneli ``lukustamiseks'' (kehtib ka kõigi muude failide puhul, kus tahad teha võimatuks muutmise või liigutamise) tuleb kasutada käsku:

# chflags schg /kernel

Note: FreeBSD versioonis 5.0 ei paigaldata kerneleid muutmiskindluse lipuga, seega ei ole see tõenäoliselt su probleemi allikaks.

Kernel küll töötab, aga ps(1) mitte!

Selline olukord tekib siis, kui sa kasutad muust süsteemist erinevat kerneli versiooni, näiteks 4.X kernelit 3.X süsteemi peal. Sellisel juhul lakkavad töötamast mitmed süsteemi staatust näitavad käsud nagu näiteks ps(1) ja vmstat(8) Sa pead uuesti kompileerima nii need programmid kui ka libkvm-i. Nimetatu on üks põhjustest, miks ei ole hea kasutada süsteemist erinevat kerneli versiooni.