Ubuntu Kerneli kompileerimine
Kuigi Ubuntul on korralikud oma paki Kernelid olemas tekib alati mõnel kasutajal tahtmine ise endale uus Kernel valmis kompileerida. Põhjuseid võib olla mitmeid. Näiteks soov luua endale minimalistlik versioon Ubuntust, kus ka Kernelist on kõik mittevajalik eemaldatud. Või siis on tarvis lisada hoopis mõne sellise riistvara tugi, mida kohe kaasas pole. Või soovitakse kasutada uusimat olemasolevat Linuxi Kernelit, mida on võimalik tõmmata ainult otse netist ja ise valmis kompileerida.
Käesolev õpetus õpetabki, kuidas Ubuntus valmis kompileerida Vanilla Kernel, ehk siis Kernel www.kernel.org lehelt. Õpetus peaks toimima Ubuntu 6.10 ("Edgy Eft") ja Ubuntu 6.06 ("Dapper Drake") versioonidega.
Sisukord
alustuseks
Soovituslik on läbi viia kõik uue Kerneli kompileerimise ja valmistamise toimingud root kasutaja õigustes. Tänu sellele pole vaja pidevalt kasutada sudo käske. Selleks antke järgmine käsk:
sudo passwd root
Nüüd logige sisse root kasutaja õigustes
su
Juhul, kui te aga siiski ei ava root kasutaja kontot, siis ärge unustage alati ette sudo lisamast!
/bin/sh Ubuntu 6.10 ("Edgy Eft")
/bin/sh peaks olema Ubuntu 6.10 ("Edgy Eft") lingitud /bin/dash -ile. Kuid see võib põhjustada probleeme tarkvara kompileerimisel lähtekoodist. Seega teeme /bin/sh -st hoopis lingi /bin/bash-ile. Ehk kui kasutate Ubuntu 6.10-t siis sisestage järgnevad käsud:
rm -f /bin/sh ln -s /bin/bash /bin/sh
Ubuntu 6.06 kasutajad selle üle muretsema ei pea.
Vajalike pakettide paigaldamine
Esmalt uuendame loomulikult oma süsteemi pakettide andmebaasi:
apt-get update
ja nüüd paigaldame vajalikud vahendid:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
Hangime Kerneli lähtekoodi
Nüüd on paras aeg hankida endale Kerneli lähtekood. Kõige õigem on ta tõmmata kataloogi /usr/src, seega esimesena liikuge sinna kataloogi:
cd /usr/src
Nüüd on paras aeg kindlaks teha, mis Kernelit soovite endale paigaldada. Kõik erinevad Linuxi 2.6 seeria Kernelid leiate http://www.kernel.org/pub/linux/kernel/v2.6/ valige endale sealt meelepärane välja. Näiteks otsustasite valida linux-2.6.18.1.tar.bz2 Kerneli. Siis selle saate alla tõmmata:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2
Kui sobiv Kernel on alla tõmmatud, siis tuleb ta lahti pakkida ja luua link kataloogile /usr/src/linux. Edaspidistes käskudes jälgige, et sisestaksite ikka oma tõmmatud Kerneli numbri.
tar xjf linux-2.6.18.1.tar.bz2 ln -s linux-2.6.18.1 linux cd /usr/src/linux
Lisame Kernelile mõned paigad (valikuline)
Vahest on vaja lisada Kernelile mõned paigad/täiustused. Näiteks riistvara tugi, mida pole ametlikult Kernelis. Või soovite lisada virtualiseerimise toe, mida vaikimisi Kernel veel ei toeta.
Näiteks tõmbasite endale Kernelile mõeldud paiga (path) - patch.bz2 kataloogi /usr/src kataloogi. Nüüd on aeg see path lisada Kerneli lähtekoodile (olete endiselt /usr/src/linux kataloogis)
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
See käsk ainult testib, et kas saab antud pathi Kernelile lisada. Kui sellega Teil mingeid veateateid ei tule, siis võite alles käivitada teise käsu.
bzip2 -dc /usr/src/patch.bz2 | patch -p1
Selle käsuga siis lisasite soovitud pathi oma Kerneli lähtekoodile.
Näiteks soovite endale luua viimast 2.6.19-r4 Kernelit. Neid Kerneleid välja pole lastud vaid ongi just lisatud ainult vajaminevad paigad stabiilsele 2.6.18 Kernelile (just 2.6.18 Kernelile, mitte enam selle vigade parandustele 2.6.18.1 jne) Seega tuleb Teil alla tõmmata patch-2.6.19-rc4.bz2 ja 2.6.18 Kerneli lähtekood. Ehk siis sellisel juhul oleks kogu tegevus järgmine (algusest peale):
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 tar xjf linux-2.6.18.tar.bz2 ln -s linux-2.6.18 linux wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2 cd /usr/src/linux bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 --dry-run bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1
Kerneli seadistamine
Nüüd oleme jõudnud järgmise sammuni oma Kerneli kompileerimisel. Nimelt Kerneli seadistamiseni. Samas on igati kasulik hoida oma hetke Kerneli seadistus alles, et seda saaks uuesti kasutada ja muudatusi sisse viia. Kopeerime selle /boot partitsioonile (või kataloogi):
cp /boot/config-`uname -r` ./.config
Nüüd on aeg siis käivitada Kerneli peamine seadistusprogramm - menuconfig
make menuconfig
See avab Teile Kerneli seadistuste menüü, sealt valige Load an Alternate Configuration File ja valige .config. Sellega laete oma praeguse töötava Kerneli seadistuste faili (eelnevalt tegite sellest koopia).
Nüüd pole siis muud, kui liikuda mööda Kerneli seadistuste menüüsid, lisada ja eemaldada endale sobivad lisad. Kui olete lõpetanud, siis valige Exit ja sealt küsitakse Do you wish to save your new kernel configuration? valige sealt Yes:
Kerneli valmistamine
Nüüd pole siis jäänud muud, kui Kenrnel valmis kompileerida. Seda saate teha järgmiste käskudega:
make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
Peale --append-to-version= võite kirjutada oma Kernelit iseloomustava pealkirja. Kuid oluline on teada, et see peab algama - märgiga ja vahel ei tohi olla tühikut. Nüüd kompileeritakse Teie Kernelit. See võib võtta aega tunde. Sõltuvalt, mida oma Kernelisse lisasite ja kui kiire on Teie protsessor.
Uue Kerneli paigaldamine
Kui Kernel kompileeritud, siis on paras aeg ta ka paigaldada. Leiate oma /usr/src kataloogist nüüd kaks uut deb paketti. Seda saate näha:
cd /usr/src ls -l
Meie esialgse näite kohaselt peaks nüüd olema järgmised deb paketid:
linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb ja linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb Need saame paigaldada järgmiste käskudega:
dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
Te võite need deb pakettid viia ka mujale masinasse. Ehk Teil pole vaja neid kohapeal ise kompileerida.
Ongi kõik, te võite nüüd veel vaadata, kas on tekitatud ka vastavad kirjed /boot/grub/menu.lst faili:
nano /boot/grub/menu.lst
Seal peaksite leidma endale järgmised read:
title Ubuntu, kernel 2.6.18.1-custom root (hd0,0) kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash initrd /boot/initrd.img-2.6.18.1-custom savedefault boot title Ubuntu, kernel 2.6.18.1-custom (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single initrd /boot/initrd.img-2.6.18.1-custom boot
Nüüd pole muud, kui restartida süsteem:
shutdown -r now
Kui kõik läks hästi, siis peaksite buutima üles juba oma uue Kerneliga. Seda saate hiljem kontrollida käsuga:
uname -r
Mille tulemuseks peaks siis olema midagi sellist: 2.6.18.1-custom (või siis vastavalt Teie pandud nimele ja Kernelile)
Juhul, kui süsteem ei käivitu selle loodud Kerneliga, siis ärga muretsege. Käivitage uuesti arvuti ja Grubi juures vajutage Esc klahvi. Teile avaneb kõigi saadaolevate Kernelite nimekiri. Valige mõõni vanem ja käivitage arvuti sellega. Kuid kindlasti on mõistlik eelnevalt kirja kuskile panna, mis veateate Teie Kernel andis, et ta ei käivitanud. See on abiks vea otsingul.
Jõudu Kernelite kompileerimisel :) Õpetuse algallikas on HowtoForge. Tõlkis spott