cwbe coordinatez:
101
63540
63542
2109677
63692
2679115

ABSOLUT
KYBERIA
permissions
you: r,
system: public
net: yes

neurons

stats|by_visit|by_K
source
tiamat
K|my_K|given_K
last
commanders
polls

total descendants::
total children::6
5 ❤️


show[ 2 | 3] flat


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:

  • Distribucne jadro kazdej slusnejsej distribucie ma povolene vytvaranie suboru config.gz v proc pseudofilesysteme, teda:
    treba vojst do adresara so zdrojovymi kodmi (cd /usr/src/linux), cp /proc/config.gz, gunzip config.gz, mv config .config. Tym mam v zdrojovych kodoch jadra nahodeny config jadra, ktore mi prave bezi. Toto ovsem nerobim, pokial mi bezi jadro 2.4.xx a zdrojove kody mam z jadra 2.6.xx (paseka). Ak v /proc config.gz nie je, treba hladat inde.
  • Ak mam nainstalovane zdrojove kody distribucneho jadra (co je vo vseobecnosti vcelku dobry napad), staci z neho prekopirovat .config do novych zdrojovych kodov.
  • config sa niekedy nachadza aj v adresari /boot, avsak moze mat rozne nazvy, napriklad pre Slackware ma nazov config-generic-2.6.13, alebo config-ide.2.4.31. Taktiez staci tento subor nakopirovat do zdrojovych kodov noveho kernelu, avsak ho je treba premenovat na .config, aby bolo vsio v poriadku.


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 som turbomasochista:
    cd /usr/src/linux
    vim .config
    (aj ked skusenym uzivatelom to moze brutalne zrychlit konfiguraciu kernelu, inac nepouzitelne)

  • Ak som masochista:
    cd /usr/src/linux
    make config
    A uz mu iba odpovedam (zabava, nie?)

  • Vcelku pohodlne cez ncurses:
    cd /usr/src/linux
    make menuconfig
    Vybafne na mna obrovske menu s moznostami konfiguracie kernelu, skoro ku kazdej polozke je popisany help, k comu sluzi a naco ju treba a obvykle aj odporucane nastavenie)

  • Ked som velmi lenivy, tak:
    pod normalnym uzivatelom:
    xhost +
    pod rootom:
    cd /usr/src/linux
    make xconfig
    (kvoli tomu je ale nutne mat nainstalovane Qt a Qt vyvojove nastroje, co nemusi bezat kazdemu, komu to nejde, necht skusi make menuconfig, jedna sa o to iste menu v pepitovom)



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:

  1. 1. novo vybudovany kernel sa stane spatne nekompatibilnym so starym kernelom
  2. 2. pri instalacii modulov noveho kernelu ostanu stare moduly zachovane, cize bude mozne nabootovat stary kernel, ak by novy kernel hodil panic pri boote a nedobootoval by. Nove moduly budu nainstalovane do separatneho adresara /lib/modules/(verzia_kernelu)tento_retazec


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




00000101000635400006354202109677000636920267911502684131
toxygen
 toxygen      11.10.2006 - 12:38:08 , level: 1, UP   NEW
na ubuntu a debiane by som rozhodne zvazoval pouzitie make-kpkg, ktory spravi asi polovicu veci za vas. nachadza sa v baliku kernel-package.

taktiez by som zrejme doporucil spustit make oldconfig este predtym, nez zacnete editovat konfig.
oldconfig - Update current config utilising a provided .config as base

inak je tu dost veci, ktore sa mi nepacia, ale nejdem zbytocne kritizovat, hlavne ak vysledkom tohto je funkcny bootovatelny kernel :)

00000101000635400006354202109677000636920267911502681382
Škriatok
 Škriatok      10.10.2006 - 01:32:30 , level: 1, UP   NEW
Ventyl dikes za trpezlivost...urcite ten navod funguje na slackeari 10.1...

tesim sa...

00000101000635400006354202109677000636920267911502679186
Škriatok
 Škriatok      09.10.2006 - 02:30:38 , level: 1, UP   NEW
(:
otravujem ta na slacK!ware iba preto ze neviem nakolko su jednotlive distra transparentne...
tomuto sa da pekne rozumiet..pekne napisane z humorom asi...so stipkou otcovskej neduovery a
materskeho tepla...(:....idem sa ucit

0000010100063540000635420210967700063692026791150267918602679492
ventYl
 ventYl      09.10.2006 - 10:59:26 , level: 2, UP   NEW
obvykle to mas tak, ze co rozchodis u Slackware nejakym primitivnym postupom ti bude za pouzitia toho isteho postupu chodit na kazdom inom distre (s vynimkou Ubuntu, kde nechodi okrem Ubuntu-certified zhovadenych postupov nic), pretoze Slackware je plain a povodne distro s tak jednoduchymi konfiguracnymi skriptami a nie je zhovadeny vsemoznymi silenymi nadstavbami u ktorych sa straca princip cinnosti niekde v kilometroch skriptov.

00000101000635400006354202109677000636920267911502679152
jakub
 jakub      09.10.2006 - 01:01:15 , level: 1, UP   NEW
"treba vojst do adresara so zdrojovymi kodmi (cd /usr/src/linux), cp /proc/config.gz, gunzip config.gz, mv config .config."
to snad nemyslis vazne ;)
zcat /proc/config.gz > /usr/src/linux/.config :)

0000010100063540000635420210967700063692026791150267915202679734
forcer
 forcer      09.10.2006 - 12:48:03 , level: 2, UP   NEW
nebud taky detailista, aj ty by si sa cudoval kolko veci sa da urobit jednoduchsie ako ich robis ty..

000001010006354000063542021096770006369202679115026791520267973402679740
jakub
 jakub      09.10.2006 - 12:50:00 , level: 3, UP   NEW
necudoval by som sa a budem len rad, ak ma niekto takto upozorni
pisat 5 commandov namiesto jedneho mi pride fakt zvlastne .)

0000010100063540000635420210967700063692026791150267915202679469
ventYl
 ventYl      09.10.2006 - 10:47:18 , level: 2, UP   NEW
bola pulnoc... uvazoval som o tom, ako to zriesit bez kopirovania a move, ale na zcat som si nespomenul... :) ale zasa to ber tak, ze ked to robi niekto, kto neni do toho zasvateny, aspon ma dobru sancu vytrackovat, what happend :))

0000010100063540000635420210967700063692026791150267915202679256
rooter
 rooter      09.10.2006 - 08:35:59 , level: 2, UP   NEW
aj cesta je ciel ;]