Esmalt anname lühikese ülevaate kerneli ehitamise kataloogist. Kõik kataloogid, mida me nimetame, paiknevad kataloogis /usr/src/sys , millele saab ligi ka /sys kaudu. Selles kataloogis on mitmeid alamkatalooge, mis sisaldavad kerneli erinevaid osai, kuid meie jaoks on tähtsaim arhitektuur/conf (kus paikneb kerneli seadistuste fail) ja compile (see on kataloog, kuhu kernel ehitatakse). arhitektuur tähistab sinu arvuti arhitektuuri, näiteks i386, alpha või pc98 (alternatiivne PC arendusharu, mis on populaarne Jaapanis). Kõik, mis on konkreetse arhitektuuri kataloogi all, on antud arhitektuurile spetsiifiline. Kogu ülejäänud kood on kõikidele platformidele, millele FreeBSD võidakse portida, ühine. Pane tähele ka kataloogipuu loogilist ülesehitust, kus iga toetatav seade, failisüsteem ja suvand paikneb omaette alamkataloogis. FreeBSD 5.X ja hilisemad toetavad arhitektuuri sparc64 ning arenduses on tugi veel mõnele arhitektuurile.
Note: Kui su süsteemis ei ole kataloogi /usr/src/sys, siis ei ole kerneli lähtekoodi süsteemi paigaldatud. Seda on lihtsaim paigaldada käivitades root-kasutajana programmi /stand/sysinstall ja valides sealt Configure, siis Distributions, siis src ja siis sys. Kui sulle ei meeldi sysinstall ja sul on ligipääs ``ametlikule'' FreeBSD CDROMile, siis võid paigaldada lähtekoodi järgneva käsureaga:
# mount /cdrom # mkdir -p /usr/src/sys # ln -s /usr/src/sys /sys # cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
Edasi mine kataloogi arhitektuur/conf ja kopeeri seadistuste fail GENERIC nime alla, mida sa soovid oma kernelile anda. Näiteks:
# cd /usr/src/sys/i386/conf # cp GENERIC MINUKERNEL
Traditsiooniliselt on see nimi kirjutatud suurte tähtedega ja juhul, kui sa haldad mitmeid erisuguse riistvaraga FreeBSD masinaid, on hea mõte kernel nimetada hostname'i järgi. Antud näites kutsume seda MINUKERNELiks.
Tip: Pole sugugi hea mõte hoida oma kerneli seadistuste faili otse /usr/src all. Probleemide korral võib juhtuda, et soovid kustutada terve kataloogi /usr/src ja uuesti otsast peale alata. Viis sekundit peale selle tegemist taipad sa, et muuhulgas kustutasid sa ka oma kohandatud kerneli seadistuste faili. Ära muuda GENERIC-faili otse, kuna see võidakse järgmisel korral, mil oma lähtekoodipuud uuendad, üle kirjutada, ja su muudatused lähevad kaotsi.
Oleks mõttekas hoida oma kerneli seadistuste faili mujal ja luua sellele kataloogi i386 sümboolne link.
Näiteks:
# cd /usr/src/sys/i386/conf # mkdir /root/kernels # cp GENERIC /root/kernels/MINUKERNEL # ln -s /root/kernels/MINUKERNEL
Note: Sa pead kõik need käsud andma root-kasutajana, vastasel juhul saad järjest veateateid kujul permission denied.
Nüüd redigeeri faili MINUKERNEL oma lemmik-tekstiredaktoriga. Värskelt paigaldatud süsteemi puhul on arvatavasti ainus olemasolev redaktor vi - paraku on see siinkohal seletamiseks liiga keeruline, kuid sellest on juttu mitmetes bibliorgaafia peatükis olevates raamatutes. Siiski on FreeBSD-s olemas ka lihtsam, ``ee''-nimeline tekstiredaktor, mis on mugav just algajatele. Faili algosas olevaid kommentaare võid vabalt vastavalt oma soovile muuta või kustutada. Näiteks võid sa sinna kirjutada, mida sa muutsid GENERIC-kerneli suhtes.
Kui sa oled eelnevalt ehitanud kerneleid SunOS™-i või mõne muu BSD operatsiooni süsteemi all, siis on enamus sellest seadistuste failist sulle juba tuttav. Samas näiteks DOS-ist tulnule võib GENERIC seadistuste fail tunduda ülikeeruline, sellisel juhul tuleks seadistuste faili käsitlevat peatükki lugeda eriti hoolikalt.
Note: Kui oled lähtekoodi puud uuendanud, siis tuleks enne igasugust värskendamist lugeda faili /usr/src/UPDATING. Selles failis on kirjas kõik tähtsamad uuendamist puudutavad probleemid. /usr/src/UPDATING kehtib alati sinu masinas oleva FreeBSD lähtekoodi kohta, seega sisaldab ta ka täpsemat informatsiooni kui käsiraamat.
Nüüd pead sa kerneli lähtekoodist uuesti kompileerima. Selleks on kaks võimalikku protseduuri, nendest sobiva pead sa valima oma FreeBSD versiooni ja kerneli taaskompileerimise põhjuse järgi.
Kui su masinasse on paigaldatud ainult kerneli lähtekood, siis kasuta protseduuri nr. 1.
Kui sa kasutad FreeBSD 4.0-ist vanemat versiooni ja ei värskenda FreeBSD 4.0-i või uuema FreeBSD versiooni peale ``make world''-i abil, siis tuleb kasutada protseduuri nr. 1.
Kui ehitad uut kernelit ilma lähtekoodi värskendamata (võibolla seepärast, et lisada mõnda uut seadistust, nagu näiteks IPFIREWALL), siis võid kasutada mõlemat protseduuri.
Kui ehitad kernelit ``make world''-i ühe osana, siis tuleks kasutada protseduuri nr. 2.
Protseduur 1. Kerneli ehitamine ``traditsioonilisel'' viisil
Kasuta kerneli lähtekoodi genereerimiseks käsku config(8).
# /usr/sbin/config MINUKERNEL
Mine ehituskataloogi. Selle asukoht kuvatakse eelpoolmainitud käsu tulemusena.
# cd ../compile/MINUKERNEL
FreeBSD versioonist 5.0 vanema süsteemi puhul kasuta selle asemel:
# cd ../../compile/MINUKERNEL
Kompileeri kernel.
# make depend # make
Paigalda uus kernel.
# make install
Protseduur 2. Kerneli ehitamise ``uus'' moodus
Mine kataloogi /usr/src.
# cd /usr/src
Kompileeri kernel.
# make buildkernel KERNCONF=MINUKERNEL
Paigalda uus kernel.
# make installkernel KERNCONF=MINUKERNEL
Note: FreeBSD 4.2 ja vanemad süsteemid tahavad KERNCONF= asemel võtit KERNEL=. 4.2-STABLE, mis pärineb varasemast ajast kui 2. veebruar 2001, ei tunne võtit KERNCONF=.
Kui sa ei ole värskendanud oma lähtekoodide puud (ei ole kasutand CVSup-i, CTM-i või anoncvs-i), siis peaksid kasutama käsujada config, make depend, make, make install.
Uus kernel kopeeritakse juurkataloogi nime all /kernel ja vana kernel tõstetakse nime /kernel.old alla. Nüüd taaskäivita süsteem, et saaksid oma uut kernelit kasutada. Selle dokumendi lõpus olevas probleemide peatükis on kirjas ka mõned juhised, kuidas toimida, kui miski peaks valesti minema. Loe kindlasti ka peatükki, mis seletab, kuidas süsteemi korda teha, juhul kui su uus kernel ei tööta.
Note: Alates FreeBSD versioonist 5.0 paigaldatakse kernelid koos moodulitega kataloogi /boot/kernel ja vanad kernelid varundatakse kataloogi /boot/kernel.old. Teised alglaadimise protsessiga seotud failid, nagu näiteks loader(8) ja seadistused paiknevad samuti kataloogis /boot. Kolmandate osapoolte või enda moodulid võib panna kataloogi /boot/modules, kuigi kasutajad peaksid endale aru andma, et kerneli ja moodulite sünkroonishoidmine on äärmiselt oluline. Moodulid, mis pole mõeldud töötamiseks kompileeritud kerneliga, võivad põhjustada ebastabiilsust ja ebakorrektsust.
Note: Kui oled lisanud toe mõnele uuele seadmele (näiteks helikaardile) ja kasutad FreeBSD 4.X või varasemat versiooni, siis võib olla enne nende kasutama asumist vajalik ka mõne seadmefaili loomine kataloogi /dev. Lisainformatsiooni leiad selle peatüki lõpus asuvast seadmefailide loomise lõigust.