total descendants:: total children::6 5 ❤️ |
Rebuild kernelu... co to je? Je to vtedy, ked uz bud mam plne zuby distribucneho kernelu, alebo ho chcem upgradovat na vyssiu verziu, nez je v repozitaroch, eventuelne ked si chcem distribucny kernel modifikovat, alebo ho niecim patchovat, zdrojaky kernelu su useful taktiez ked idem budovat nejaky modul do jadra (ndiswrapper, alebo inu prasacinu), aj ked nie nutne nezbytne. Dodatok: Vsetky tieto kroky je vcelku vhodne pustat pod rootom, takze ak roota nemas, je dobre si ho obstarat. Ingrediencie: +++++++++++++ - zdrojove kody kernelu prislusnej verzie - vyvojove nastroje (gcc, make, vo vsetkych civilizovanych distribuciach mimo Ubuntu bezne nainstalovane) - ak chcem zbuildovat kernel aspon podobny tomu, co mam teraz, budem potrebovat .configure sucasneho kernelu Kernel si splasim budto z repoziterov mojej distribucie, alebo z kernel.org, na kernel.org sa daju najst budto patche voci poslednej verzii, alebo plna verzia kernelu, obvykle je lepsie stiahnut poslednu verziu kernelu v cistom, netreba potom riesit patchovanie. Ak taham kernel z repozitarov mojej distribucie, stahujem balik nazvany kernel-sources, potrebujem zdrojaky, nie skompilovany kernel. Zdrojove kody kernelu si vybalim do /usr/src/ vznikne mi tam tak adresar /usr/src/linux-verzia. Ak som prasa, vybalim si kernel na lubovolne ine miesto, ale potom budem znasat nasledky. V adresari /usr/src/ by sa mal nachadzat symbolicky link /usr/src/linux, ktory odkazuje na adresar so zdrojovymi kodmi na sucasne instalovanu verziu jadra. (opat tuto doplnok: Ubuntisti a ti, co zdrojove kody kernelu neinstalovali, tento symlink mat nebudu, musia si ho vytvorit). Treba tento symlink zmenit tak, aby ukazoval na novo rozbalene zdrojove kody, inac bude make intenzivne nadavat. Vyvojove nastroje su vo vacsine distribucii nainstalovane, Ubuntisti spustia pod rootom apt-get install gcc a ak nemaju ani make, tak apt-get install make, pri troche stastia to bude stacit. Ak chcem kernel buildovat s cisto svojimi nastaveniami odzgruntu (a zazit pri tom desiatky rebootov s kernel panicom), povodny .config nezhanam, v opacnom pripade potrebujem zohnat .config sucasneho jadra, aby mi vzniklo nieco aspon trocha podobne. Zdrojov .config-u moze byt niekolko:
Ak chcem kernel oproti ziskanemu configu dalej modifikovat (napriklad viem, ze nieco, co je ako modul moze ist kludne priamo do kernelu, alebo nieco, co je v kerneli, mi tam netreba), mam v zasade 4 moznosti:
Ak buildujem verziu kernelu rovnaku, ako mi teraz bezi (napriklad teraz mi bezi 2.6.13 a chcem buildovat tiez 2.6.13, ale chcem si ju postavit SMP, s inymi preempt optimalizaciami atd., ale ked buildujem kernel prvy krat, je lepsie to spravit vzdy ked buildujem kernel rovnakej verzie, na akom teraz bezim), vbehnem do menuconfigu a v menu General Setup -> Local version - append to kernel release prihodim nejaky retazec, napriklad ja si prihadzujem ventyl. Prihodenie tohto retazca bude mat v zasade dva dosledky:
Buildovanie kernelu oldschool metodou +++++++++++++++++++++++++++++++++++++ Ked uz mame kernel patricne nastaveny, mozeme pristupit k buildovaniu kernelu samotneho. Sluzi k tomu postupnost prikazov: make dep make bzImage (ja viem, ze ludia maju radi vsetko automatizovane, ale niet nad to, ak clovek vie, co sa presne kde pohne, najma pri tak dolezitej veci, ako je kernel) Nasledne v pripade, ze aspon jedna z vlastnosti kernelu bola skonfigurovana ako modul je treba previest: make modules make modules_install To mi vytvori adresar /lib/modules/(verzia_kernelu)moj_retazec. Kernel sa mi uz zbuildoval, ale co s nim? Treba ho aj nainstalovat budto napriamo, alebo do zavadzaca. Pre demonstraciu som si vybral zavadzac LILO ( ja viem, ze ho uz nikto nepouziva :] ). Spustim si svoj oblubeny editor (ak oblubeny editor nemam, spustim si mcedit) a otvorim si v nom subor /etc/lilo.conf (mcedit /etc/lilo.conf). Do tohto suboru doplnim nasledovne riadky: image=/boot/linux-(verzia_kernelu) root=/dev/hda1 label=NewKernel read-only append= polozku root vyplnim tak isto, ako je vyplnena polozka root nachadzajuca sa v bloku podobnych nastaveni niekde tesne pri polozke label pomenovanej rovnako, ako obraz jadra, ktory zavadzam pri boote, detto s polozkou append. root znaci nazov particie, ktora obsahuje korenovy filesystem, append obsahuje parametre, ktore su pri boote predane jadru. Nasledne treba skopirovat obraz jadra do /boot adresara. Ak kompilacia kernelu prebehla bez problemov (nevyhodilo ziadnu chybu), obraz noveho jadra sa nachadza v subore /usr/src/linux/arch/i386/bzImage (ak buildujem pre x86 of course). Tento subor treba skopirovat do suboru /boot/linux-(verzia_kernelu). Ked je toto vykonane, treba reinicializovat LILO a to spustenim prikazu lilo. V pripade, ze LILO nevyhodi ziadnu chybu, je novy kernel nainstalovany a (snad) aj pripaveny na pracu. V pripade, ze by novy kernel nenabehol a boli dodrzane vsetky kroky, v bootovacej ponuke LILO by sa popri novom obraze NewKernel mal nachadzat aj povodny obraz stareho kernelu, ktory mi bezal doteraz a mal by byt v pohode nabootovatelny. Disclaimer: +++++++++++ - nerucim, ze tento navod je uplny a bude fungovat pre kazde distro - nebudem do autora hadzat paradajky, ani ine potencialne zhnite ovocie/zeleninu, ak mi to nepojde |
| |||||||||||||||||||||||