Erinevus lehekülje "Linuxi kerneli kompileerimine" redaktsioonide vahel
Rida 2: | Rida 2: | ||
[[Kategooria:Linux]] | [[Kategooria:Linux]] | ||
− | Järgnev õpetlus käsitleb seda, kuidas konfigureerida ja kompileerida Linuxi kernelit versiooninumbriga 2.6.x | + | Järgnev õpetlus käsitleb seda, kuidas konfigureerida ja kompileerida Linuxi kernelit versiooninumbriga 2.6.x. |
==Lähtekoodi hankimine== | ==Lähtekoodi hankimine== | ||
Rida 21: | Rida 21: | ||
==Konfigureerimine== | ==Konfigureerimine== | ||
− | Linux'i kerneli | + | Linux'i kerneli kompileerimiseks tuleb ta eelnevalt konfigureerida ehk tuleb valida, millise raudvara jaoks tugi sisse jätta, milliseid failisüsteeme toetada jne.<br/> |
'''NB!''' Kui sa ei ole enda arvuti raudvara tundmise poolelt just väga kogenud, siis oleks vast siin paslik asi pooleli jätta ja rahulduda [[Linux|distributsioonide]] poolt koostatud pakikernelitega, mis iseenesest on vägagi töötavad ja piisavalt head rakendused! Kui aga on huvi ja oled juba kogenum, loe julgelt edasi.<br/> | '''NB!''' Kui sa ei ole enda arvuti raudvara tundmise poolelt just väga kogenud, siis oleks vast siin paslik asi pooleli jätta ja rahulduda [[Linux|distributsioonide]] poolt koostatud pakikernelitega, mis iseenesest on vägagi töötavad ja piisavalt head rakendused! Kui aga on huvi ja oled juba kogenum, loe julgelt edasi.<br/> | ||
Rida 31: | Rida 31: | ||
# make menuconfig | # make menuconfig | ||
''menuconfig'''is on järgmised tingmärgid: | ''menuconfig'''is on järgmised tingmärgid: | ||
− | * [*] - valik | + | * [*] - valik kompileeritakse kernelisse |
− | * [M] - valik | + | * [M] - valik kompileeritakse moodulina, mis on kerneli image'st eraldi ja mida saab laadida käsuga ''modprobe'' |
* [ ] - valikut ei kaasata kernelisse | * [ ] - valikut ei kaasata kernelisse | ||
''menuconfig'''i menüüdel põhinev kasutajaliides on suhteliselt selge ning erilisi probleeme sellega ei tohiks tekkida. Iga valiku abiteksti nägemiseks vajuta klahvi "?".<br/> | ''menuconfig'''i menüüdel põhinev kasutajaliides on suhteliselt selge ning erilisi probleeme sellega ei tohiks tekkida. Iga valiku abiteksti nägemiseks vajuta klahvi "?".<br/> | ||
Rida 46: | Rida 46: | ||
# make oldconfig | # make oldconfig | ||
Sellisel juhul küsitakse sinult ainult neid valikuid, mis on vahepeal juurde tulnud. | Sellisel juhul küsitakse sinult ainult neid valikuid, mis on vahepeal juurde tulnud. | ||
− | == | + | ==Kompileerimine== |
− | Kui oled edukalt kerneli konfiguratsiooniga valmis saanud, | + | Kui oled edukalt kerneli konfiguratsiooniga valmis saanud, kompileeri kernel lastes kerneli kaustas tööle järgnev käsk: |
# make | # make | ||
Nüüd pead sa ära ootama pika joru igasugust mõistmatut teksti. Kui asi lõpuks õnnelikku lõppu jõuab ning protseduur ei lõppe mingite erroritega, läks kõik õnneks. Suundu järgmisesse punkti! | Nüüd pead sa ära ootama pika joru igasugust mõistmatut teksti. Kui asi lõpuks õnnelikku lõppu jõuab ning protseduur ei lõppe mingite erroritega, läks kõik õnneks. Suundu järgmisesse punkti! | ||
Rida 57: | Rida 57: | ||
Tuleb teha! | Tuleb teha! | ||
==Kerneli kausta puhastamine== | ==Kerneli kausta puhastamine== | ||
− | Kui tekib vajadus kerneli kompileerimist täiesti puhtast kaustast alustada, on võimalik terve lähtekoodi kaust puhastada juba | + | Kui tekib vajadus kerneli kompileerimist täiesti puhtast kaustast alustada, on võimalik terve lähtekoodi kaust puhastada juba kompileeritud failidest. Selleks tuleb kasutada käsku |
# make clean | # make clean | ||
− | Kui on vaja viia kaust tagasi sellisele kujule nagu ta enne konfigureerimist ja | + | Kui on vaja viia kaust tagasi sellisele kujule nagu ta enne konfigureerimist ja kompileerimist oli, on ka selleks olemas vastav käsk. |
# make mrproper | # make mrproper | ||
− | '''NB!''' ''make mrproper'' kustutab lisaks | + | '''NB!''' ''make mrproper'' kustutab lisaks kompileeritud binaaridele ka .config faili, kus asub kerneli konfiguratsioon. Seda käsku pole tavaliselt vaja käivitada. Kui selleks mingil põhjusel siiski vajadus tekib, tee oma .config failist varukoopia! |
==Bootloaderi uuendamine== | ==Bootloaderi uuendamine== | ||
Tuleb teha! | Tuleb teha! |
Redaktsioon: 19. oktoober 2005, kell 21:26
Järgnev õpetlus käsitleb seda, kuidas konfigureerida ja kompileerida Linuxi kernelit versiooninumbriga 2.6.x.
Lähtekoodi hankimine
Kõigepealt läheb meil muidugi vaja Linux'i kerneli lähtekoodi, mille leiab selle ametlikult lehelt http://www.kernel.org. Sealt otsi üles rida mis algab nii:
The latest stable version of the Linux kernel is:
Vajuta samal real olevale F'ile, et tirida täielik lähtekood (full source). Salvesta lähtekoodi tarball oma kodukausta.
Eeltöö
Nüüd ava oma lemmik terminaliemulaator (konsole, gnome-terminal, xterm) ning liiguta tarball õigesse kohta:
$ su Password: # mv /home/minukasutaja/linux-*.tar.bz2 /usr/src/
Järgmisena pakime .tar.bz2 arhiivi lahti:
# cd /usr/src # tar xjf linux-<versioon-mille-tirisid>.tar.bz2
Kui ei mäleta täielikku failinime, saad alati poole failinime trükkimise peal kasutada klaviatuuri TAB klahvi, et failinime automaatselt täiendataks.
Nüüd peaks sul olema selline kaust: /usr/src/linux-<versioon>
Konfigureerimine
Linux'i kerneli kompileerimiseks tuleb ta eelnevalt konfigureerida ehk tuleb valida, millise raudvara jaoks tugi sisse jätta, milliseid failisüsteeme toetada jne.
NB! Kui sa ei ole enda arvuti raudvara tundmise poolelt just väga kogenud, siis oleks vast siin paslik asi pooleli jätta ja rahulduda distributsioonide poolt koostatud pakikernelitega, mis iseenesest on vägagi töötavad ja piisavalt head rakendused! Kui aga on huvi ja oled juba kogenum, loe julgelt edasi.
Linux'i kernelil on mitu erinevat konfigureerimise võimalust. Selles juhendis käsitleme neist kolme.
Tegemist on ncurses teegi baasil loodud konsoolipõhise konfigureerimiskeskkonnaga.
menuconfig'i kasutamiseks piisab lahtipakitud kerneli kaustas järgmise käsu jooksutamisest:
# make menuconfig
menuconfig'is on järgmised tingmärgid:
- [*] - valik kompileeritakse kernelisse
- [M] - valik kompileeritakse moodulina, mis on kerneli image'st eraldi ja mida saab laadida käsuga modprobe
- [ ] - valikut ei kaasata kernelisse
menuconfig'i menüüdel põhinev kasutajaliides on suhteliselt selge ning erilisi probleeme sellega ei tohiks tekkida. Iga valiku abiteksti nägemiseks vajuta klahvi "?".
NB! Väljumisel ära unusta kerneli konfiguratsiooni salvestamast!
config
Teine natuke arhailisem ja aeganõudvam viis kernelit konfigureerida, on lasta tööle käsk
# make config
Antud juhul küsitakse sult kõiki valikuid ükshaaval, kus valikuteks on [y/n/m/?] (yes/no/module/help).
Seda moodust kerneli kompiilimiseks ei soovita ma kellelegi, kui selle järele just tungivat vajadust ei ole.
Kasutage igal võimalusel menuconfig'it!
oldconfig
Juhul, kui oled juba ühe korra kerneli vastavalt oma raudvarale konfigureerinud, ei pea sa uut kernelit paigaldades seda täies mahus uuesti tegema. Sa pead ainult kopeerima vana kerneli konfiguratsioonifaili (/usr/src/linux-<versioon>/.config) uue kerneli kausta samuti ning laskma tööle käsu
# make oldconfig
Sellisel juhul küsitakse sinult ainult neid valikuid, mis on vahepeal juurde tulnud.
Kompileerimine
Kui oled edukalt kerneli konfiguratsiooniga valmis saanud, kompileeri kernel lastes kerneli kaustas tööle järgnev käsk:
# make
Nüüd pead sa ära ootama pika joru igasugust mõistmatut teksti. Kui asi lõpuks õnnelikku lõppu jõuab ning protseduur ei lõppe mingite erroritega, läks kõik õnneks. Suundu järgmisesse punkti!
Moodulite install
Kerneli moodulitele on olemas spetsiaalne kaust /lib/modules/, kuhu nad on vaja paigaldada selleks, et kernel neid korrektselt laadida ja kasutada suudaks. Selle töö teeb sinu eest ära käsk
# make modules_install
Ka selle käsu käivitamiseks pead olema kerneli kaustas (/usr/src/linux-<versioon>)
Kerneli paika kopeerimine
Tuleb teha!
Kerneli kausta puhastamine
Kui tekib vajadus kerneli kompileerimist täiesti puhtast kaustast alustada, on võimalik terve lähtekoodi kaust puhastada juba kompileeritud failidest. Selleks tuleb kasutada käsku
# make clean
Kui on vaja viia kaust tagasi sellisele kujule nagu ta enne konfigureerimist ja kompileerimist oli, on ka selleks olemas vastav käsk.
# make mrproper
NB! make mrproper kustutab lisaks kompileeritud binaaridele ka .config faili, kus asub kerneli konfiguratsioon. Seda käsku pole tavaliselt vaja käivitada. Kui selleks mingil põhjusel siiski vajadus tekib, tee oma .config failist varukoopia!
Bootloaderi uuendamine
Tuleb teha!