8.3. Kohandatud kerneli ehitamine ja paigaldamine

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.

Protseduur 1. Kerneli ehitamine ``traditsioonilisel'' viisil

  1. Kasuta kerneli lähtekoodi genereerimiseks käsku config(8).

    # /usr/sbin/config MINUKERNEL
  2. 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
  3. Kompileeri kernel.

    # make depend
    # make
  4. Paigalda uus kernel.

    # make install

Protseduur 2. Kerneli ehitamise ``uus'' moodus

  1. Mine kataloogi /usr/src.

    # cd /usr/src
  2. Kompileeri kernel.

    # make buildkernel KERNCONF=MINUKERNEL
  3. 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.