Dôvody na zostavenie jadra

linux_pas Prv než za­čne­me...
Už to tak ob­čas bý­va aj v ži­vo­te. Dva­ja rôz­ni ľu­dia exis­tu­jú ved­ľa se­ba, po­koj­ne, pa­ra­lel­ne. Nie­ke­dy sa ich ces­ty nak­rát­ko stret­nú, po­bud­nú spo­lu a po­tom sa za­se ro­zí­du. Ani v li­nuxovej bran­dži to ne­bý­va inak. A pre­to sa ten­to­raz des­kto­pis­ti aj server­ist­i stret­nú pri jed­nom člán­ku. Pre­čo? Le­bo té­ma toh­to čís­la je pre obid­ve sku­pi­ny spo­loč­ná. Náj­du sa v nej jed­ni aj dru­hí, pre­to­že tak server­ist­i, ako aj des­kto­pis­ti as­poň raz bu­dú pot­re­bo­vať zos­ta­viť no­vé jad­ro svoj­ho sys­té­mu.

A prá­ve to­mu sa bu­de­me ve­no­vať.

Ot­vo­re­nosť zdro­jo­vých kó­dov
Asi naj­sil­nej­šia strán­ka Li­nuxu je ot­vo­re­nosť je­ho zdro­jo­vých kó­dov. To zna­me­ná, že tie­to kó­dy sú dos­tup­né ko­mu­koľ­vek a v lí­nii zá­sad ve­rej­nej li­cen­cie GNU mô­že kto­koľ­vek ro­biť do nich zá­sa­hy a tak­to poz­me­ne­né zdro­jo­vé kó­dy ďa­lej ší­riť. Ako prík­lad pou­ži­je­me prog­ram mc (Mid­night Com­man­der). Pred­stav­me si, že sme cel­kom zdat­ní prog­ra­má­to­ri a chce­me do toh­to vý­bor­né­ho prog­ra­mu pri­dať ne­ja­kú no­vú čr­tu. Zo­be­rie­me zdro­jo­vé kó­dy prog­ra­mu mc, uro­bí­me prís­luš­nú zme­nu a prog­ram pre­kom­pi­lu­je­me. Tak­to poz­me­ne­ný prog­ram vrá­ta­ne poz­me­ne­ných zdro­jo­vých kó­dov ďa­lej roz­ší­ri­me me­dzi li­nuxovú ve­rej­nosť. Ako sa no­vá fun­kcia uj­me, to ove­rí čas a sku­toč­nosť, či ju tam niek­to ne­chá, prí­pad­ne eš­te zlep­ší ale­bo ju ako chyb­nú a ne­pot­reb­nú vy­ra­dí. Je to je­ho slo­bod­ná vô­ľa a o tom ce­lý Li­nux a slo­bod­ný sof­tvér je! Tak ako mož­no poz­me­niť (sa­moz­rej­me, že k lep­šie­mu) aký­koľ­vek prog­ram ší­re­ný pod li­cen­ciou GNU (Po­zor! Nie všet­ky prog­ra­my pre Li­nux sú free!), tak mô­že­me zlep­šo­vať aj jad­ro Li­nuxu. Keď­že jad­ro je naj­dô­le­ži­tej­šia sú­časť ope­rač­né­ho sys­té­mu, exis­tu­jú ur­či­té pra­vid­lá, ako za­vá­dzať zme­ny do jad­ra. Všet­ky zme­ny tý­ka­jú­ce sa jad­ra sa hlá­sia a pos­ky­tu­jú ur­či­tej sku­pi­ne prog­ra­má­to­rov, ve­nu­jú­cich sa je­ho vý­vo­ju. Kaž­dá zme­na prej­de mno­hý­mi tes­ta­mi a ove­ro­va­ním a na kon­ci je vy­jad­re­nie vý­vo­já­rov, či sa da­ná zme­na ob­ja­ví v no­vej ver­zii jad­ra, ale­bo nie. Vý­vo­jo­vá sku­pi­na jad­ra (ker­nel main­tai­ners) sa skla­dá z vý­vo­já­rov z mno­hých kra­jín, kto­rým „pred­se­dá“ sám Li­nus – otec Li­nuxu. Za všet­kých spo­meň­me as­poň Ala­na Coxa z Veľ­kej Bri­tá­nie a Alexeja Kuz­ne­co­va z Mos­kvy.

Vý­ho­dou toh­to pos­tu­pu je pre­dov­šet­kým rých­losť. Všet­ky zme­ny, ale aj prí­pad­né chy­by sa vďa­ka inter­ne­tu ozna­mu­jú veľ­mi rých­lo, a tak rých­lo vzni­ka­jú prí­pad­né op­ra­vy. Pri iných, spra­vid­la ko­mer­čných a hlav­ne uzav­re­tých (pro­pie­tár­nych) ope­rač­ných sys­té­moch sme zvyk­nu­tí aj dl­hé me­sia­ce ča­kať, až prís­luš­ná spo­loč­nosť chy­bu od­strá­ni a vy­dá no­vý ope­rač­ný sys­tém s čís­lom XY, kto­rý mu­sí­me od pod­la­hy ce­lý nain­šta­lo­vať zno­va. V Li­nuxe mô­že­me prí­pad­né chy­by jad­ra okam­ži­te po zve­rej­ne­ní op­ra­vy, čo tr­vá nie­ke­dy iba ho­di­ny, rie­šiť „zá­pla­ta­mi“ ale­bo stiah­nu­tím no­vej ver­zie jad­ra s nás­led­ným zos­ta­ve­ním bez nut­nos­ti rein­šta­lá­cie ce­lé­ho sys­té­mu!

Dô­vo­dy na zos­ta­ve­nie jad­ra
Ok­rem spo­mí­na­nej op­ra­vy chy­by jad­ra ale­bo vy­da­nia no­vej ver­zie jad­ra mô­žu nas­tať aj iné prí­pa­dy, keď je pot­reb­né jad­ro zno­vu zos­ta­viť. Bý­va to vte­dy, keď chce­me pou­ží­vať ur­či­tú sys­té­mo­vú uti­li­tu ale­bo prog­ram a ten vy­ža­du­je, aby bo­la v jad­re za­pnu­tá pod­po­ra pre da­nú fun­kciu. Veľ­mi čas­to sa to tý­ka sprá­vy sie­ťo­vých zá­le­ži­tos­tí, ako je nap­rík­lad mo­ni­to­ro­va­nie sie­te, pri­de­ľo­va­nie pre­no­so­vé­ho pás­ma jed­not­li­vým pou­ží­va­te­ľom, rie­še­nie fi­rewal­lu a po­dob­ne.

Dru­hým prí­pa­dom bý­va si­tuácia, keď do po­čí­ta­ča pri­dá­va­me no­vý har­dvér, nap­rík­lad mag­ne­to­pás­ko­vú jed­not­ku ale­bo me­cha­ni­ku SCSI a pot­re­bu­je­me v jad­re ak­ti­vo­vať pre ňu pod­po­ru. No a tre­tím prí­pa­dom mô­že byť si­tuácia, keď chce­me pod Li­nuxom spre­vádz­ko­vať wi-fi sieť a ne­ma­li sme do­te­raz de­faul­tne tú­to pod­po­ru za­pnu­tú. Naj­čas­tej­šie sa však stá­va, že chce­me jad­ro op­ti­ma­li­zo­vať vzhľa­dom na náš har­dvér, hlav­ne na typ pro­ce­so­ra a či­po­vú súp­ra­vu zá­klad­nej dos­ky po­čí­ta­ča.

Poz­nám­ka:
Vo veľ­kých dis­tri­bú­ciách sa spra­vid­la na­chá­dza­jú už prie­mer­ne nas­ta­ve­né a „vy­la­de­né“ jad­rá na pred­pok­la­da­ný účel, pre­to ne­bý­va pot­reb­né nas­ta­ve­nie jad­ra zme­niť a zno­vu zos­ta­vo­vať. Ale ak v ta­kej­to dis­tri­bú­cii chce­me vy­me­niť jad­ro za nov­šie, nap­rík­lad z dô­vo­du, že no­vé jad­ro pod­po­ru­je dis­ky SA­TA, nas­ta­ve­niu a re­kom­pi­lá­cii sa ne­vyh­ne­me!

Prv ako sa pus­tí­me do zos­ta­vo­va­nia jad­ra, mu­sí­me si o jad­re po­ve­dať nie­čo viac.

Jad­ro
Jad­ro – po an­glic­ky ker­nel – je naj­zák­lad­nej­ší prog­ram ope­rač­né­ho sys­té­mu Li­nux. Je­ho úlo­hou je tvo­riť roz­hra­nie me­dzi har­dvé­rom po­čí­ta­ča a os­tat­ný­mi sof­tvé­ro­vý­mi ap­li­ká­cia­mi. Jad­ro má ve­ľa fun­kcií. Ako sme si po­ve­da­li, zá­klad­nou fun­kciou je spros­tred­ko­va­nie ko­mu­ni­ká­cie me­dzi tech­nic­ký­mi pros­tried­ka­mi po­čí­ta­ča a vy­tvá­ra­nie fun­kčné­ho pros­tre­dia na ús­peš­ný beh os­tat­ných ap­li­ká­cií. To­to pros­tre­die mu­sí za­bez­pe­čiť čin­nosť sie­te, prís­tup k dis­kom, dis­ke­to­vým jed­not­kám a iným me­cha­ni­kám, vy­tvo­re­nie a beh vir­tuál­nej pa­mä­te a sú­bež­né – pa­ra­lel­né – spra­cú­va­nie úloh, kto­ré­mu ho­vo­rí­me mul­ti­tas­king. Jad­ro sa mu­sí sprá­vať tak, aby ten is­tý prog­ram, tá is­tá ap­li­ká­cia ale­bo uti­li­ta fun­go­va­la na po­čí­ta­či s rôz­ny­mi typ­mi pro­ce­so­rov.

Uti­li­ty a prog­ra­my tvo­ria­ce sys­té­mo­vé prí­ka­zy a „oba­ľu­jú­ce“ jad­ro tvo­ria ope­rač­ný sys­tém. Prík­la­dom mô­žu byť uti­li­ty na ad­mi­nis­trá­ciu pou­ží­va­te­ľov, for­má­to­va­nie a ob­slu­hu dis­kov a dis­ke­to­vých me­cha­ník a po­dob­ne. Ap­li­ká­cie spo­lu s jad­rom a sys­té­mo­vý­mi uti­li­ta­mi ope­rač­né­ho sys­té­mu tvo­ria dis­tri­bú­ciu. Prík­la­dom ap­li­ká­cií sú rôz­ne edi­to­ry, ko­mu­ni­kač­né prog­ra­my, ale aj gra­fic­ká nad­stav­ba.

Z to­ho vy­plý­va, že v kaž­dej sluš­nej li­nuxovej dis­tri­bú­cii je jed­not­né li­nuxové jad­ro, len mož­no tro­chu pris­pô­so­be­né da­nej dis­tri­bú­cii. To zna­čí, že prog­ram ale­bo ap­li­ká­cia z ľu­bo­voľ­nej inej dis­tri­bú­cie by ma­li fun­go­vať aj v inej dis­tri­bú­cii. Ho­vo­rím „by ma­li“, le­bo nie vždy je to prav­da. Zá­le­ží na tom, ako je prog­ram (ale­bo ap­li­ká­cia) tes­ne „zvia­za­ný“ s ma­ter­skou dis­tri­bú­ciou – te­da či pou­ží­va ur­či­tú kniž­ni­cu, kto­rá sa v inej dis­tri­bú­cii ne­na­chá­dza. Sku­toč­nosť je ta­ká, že sko­ro kaž­dý prog­ram sa dá „pre­kon­ver­to­vať“ pre dru­hú dis­tri­bú­ciu. Vy­ža­du­je si to však ur­či­té skú­se­nos­ti a hlav­ne pod­rob­nej­šie zna­los­ti. (Ne­boj­te sa, po­ma­ly, ale is­to k to­mu spe­je­me.)

Pre za­ují­ma­vosť tre­ba po­ve­dať, že dneš­né jad­ro Li­nuxu ob­sa­hu­je 2,8 mi­lió­na riad­kov zdro­jo­vé­ho kó­du op­ro­ti 9000 riad­kom Unixu od fir­my Bell Labs z ro­ku 1976 (len tak na ok­raj, nech­ce­te si ich pre­čí­tať?).

Zdro­jo­vé kó­dy jad­ra
Nech už z aké­ho­koľ­vek dô­vo­du tre­ba pou­žiť no­vé jad­ro, mu­sí­me naj­prv zís­kať je­ho zdro­jo­vé kó­dy. Zdro­jo­vé kó­dy jad­ra náj­de­me na inter­ne­te na ad­re­se www.ker­nel.org ale­bo na slo­ven­skom zr­kad­lewww.sk.ker­nel.org/pub/li­nux/ker­nel/. Tu náj­de­me všet­ky ver­zie jad­ra – od his­to­ric­kých až po tie naj­nov­šie. Prík­la­dom zdro­jo­vé­ho kó­du jad­ra je sú­bor li­nux-2.6.8.tar.gz s veľ­kos­ťou 34 MB. Ak pou­ží­va­me niek­to­rú z veľ­kých dis­tri­bú­cií, je lep­šie hľa­dať kó­dy no­vé­ho jad­ra na strán­kach tvor­cu dis­tri­bú­cie. To z dô­vo­du, že „dis­tro­va­né“ jad­ro mô­že byť tro­chu up­ra­ve­né a ši­té pre da­nú dis­tri­bú­ciu a má­me zá­ru­ky, že s ním bu­dú všet­ky ba­lí­ky z dis­tri­bú­cie pra­co­vať spo­ľah­li­vo. Dis­tri­buč­né jad­rá sú spa­ko­va­né ba­líč­ko­va­čom jed­not­li­vých dis­tri­bú­cií, napr. rpm a po­dob­ne.

Mu­sí­me si uve­do­miť, že jad­rá s ne­pár­nym dru­hým čís­lom v náz­ve (napr. 2.5.3) sú vý­vo­jo­vé ra­dy a jad­rá s pár­nym dru­hým čís­lom (2.4.x, 2.6.x) sú sta­bil­né ra­dy. Čís­la ja­dier ma­jú eš­te dopl­ňu­jú­ce čís­la (a nie­ke­dy aj pís­me­ná), čím sa od­li­šu­jú ur­či­té drob­né op­ra­vy chýb, kto­ré ne­ma­jú fa­tál­ny nás­le­dok. Prík­la­dom ta­ké­ho čís­lo­va­nia je jad­ro 2.4.22-1.2115nptl z dis­tri­bú­cie Fe­do­ra Co­re 1. Veľ­mi čas­to mož­no náj­sť zdro­jo­vé kó­dy jad­ra na rôz­nych cé­deč­kách s li­nuxovou te­ma­ti­kou, v rôz­nych po­čí­ta­čo­vých ča­so­pi­soch a po­dob­ne. No a is­tot­ne na in­šta­lač­nom CD kaž­dej dis­tri­bú­cie!

Pat­cho­va­nie jad­ra
Nie vždy je pre ma­lú chy­bu ne­vyh­nut­né sťa­ho­vať no­vé op­ra­ve­né jad­ro. Na op­ra­vu chy­by mô­že­me pou­žiť prís­luš­nú zá­pla­tu – patch (čí­taj peč). Pre ná­zor­nosť si mô­že­me zá­pla­ty pri­rov­nať k servic­e pac­kom iné­ho zná­me­ho ope­rač­né­ho sys­té­mu. Za­tiaľ čo zá­pla­tou – pat­chom – sa op­ra­vu­jú zdro­jo­vé kó­dy jad­ra, servic­e pac­ky op­ra­vu­jú bi­nár­ne kó­dy ope­rač­né­ho sys­té­mu.

Po­zor!
Nes­mie­me si pliesť zdro­jo­vé a bi­nár­ne kó­dy jad­ra! Zdro­jo­vé kó­dy sú texto­vé sú­bo­ry, na­pí­sa­né v prog­ra­mo­va­com ja­zy­ku (spra­vid­la v ja­zy­ku C), kto­rých ob­sah mô­že­me dos­tup­ný­mi prog­ra­ma­mi čí­tať a edi­to­vať. Bi­nár­ne kó­dy vznik­nú po kom­pi­lá­cii zdro­jo­vých kó­dov prís­luš­ným prek­la­da­čom (spra­vid­la gcc) a ne­mož­no ich bež­ne čí­tať ani mo­di­fi­ko­vať. (To pla­tí všeo­bec­ne – ok­rem vý­ni­miek – pre kaž­dý prog­ram, nie­len pre jad­ro). Pre­to si pri štu­do­va­ní tej­to lek­cie mu­sí­me uve­do­miť, ke­dy ho­vo­rí­me o zdro­jo­vých kó­doch a ke­dy o bi­nár­nych kó­doch!

Zos­ta­vo­va­nie jad­ra
Zos­ta­vo­va­nie jad­ra sa skla­dá z via­ce­rých úko­nov:
roz­ba­le­nie zdro­jo­vé­ho kó­du jad­ra (a prí­pad­né opat­cho­va­nie)
kon­fi­gu­rá­cia jad­ra
prek­lad (kom­pi­lá­cia) jad­ra
in­šta­lá­cia jad­ra
in­šta­lá­cia mo­du­lov

Tie­to úko­ny vy­ža­du­jú pres­nú pos­tup­nosť, a pre­to si ich te­raz prej­de­me step-by-step či­že krok za kro­kom. Ako vzor pou­ži­je­me dis­tri­bú­ciu Fe­do­ra Co­re1, ale pos­tu­py pla­tia aj pre os­tat­né dis­tri­bú­cie, ako je Red Hat, Mad­ra­ke, Su­SE a os­tat­né.

Roz­ba­le­nie zdro­jo­vé­ho kó­du jad­ra
Ak nech­ce­me pou­žiť no­vé jad­ro, len chce­me v sú­čas­nom jad­re po­vo­liť ur­či­té služ­by jad­ra ale­bo chce­me len jad­ro opat­cho­vať, ten­to od­sek pres­ko­čí­me.

Vie­me, že zdro­jo­vý kód jad­ra sa na­chá­dza v ur­či­tej ad­re­sá­ro­vej štruk­tú­re, kto­rej sa nie­ke­dy ho­vo­rí aj strom. V dis­tri­bú­cii FC1 je to ad­re­sár /usr/src/li­nux-2.4/. Všim­ni­me si, že je to v sku­toč­nos­ti lin­ka na ad­re­sár /usr/src/li­nux-2.4.22-1.2115nptl. Aby sme nep­riš­li o to, čo už má­me fun­kčné, od­po­rú­čam uve­de­ný ad­re­sár pre­ko­pí­ro­vať na iné mies­to ale­bo ho sta­čí pre­me­no­vať, napr. /usr/src/li­nux.old/.

No­vo zís­ka­né jad­ro, napr. sú­bor li­nux-2.4.27.tar.gz, ulo­ží­me do ad­re­sá­ra /usr/src/. Te­raz pri­chá­dza to naj­dô­le­ži­tej­šie – roz­ba­le­nie jad­ra. Ak má­me jad­ro „sta­ro­va­né“, pou­ži­je­me prí­kaz

	[root@do­ma src] # tar –xzf li­nux-2.4.27.tar.gz
Zdro­jo­vé kó­dy jad­ra sa roz­ba­lia do ad­re­sá­ra /usr/src/li­nux-2.4.27/. V prí­pa­de, že sme stiah­li sú­bor s prí­po­nou .bz2, pou­ži­je­me prí­kaz
 [root@do­ma src] # tar –xzf li­nux-2.4.27.tar.bz2 --use-com­press-prog­ram bzip2
Roz­ba­le­nie mô­že tr­vať aj nie­koľ­ko mi­nút v zá­vis­los­ti od rých­los­ti po­čí­ta­ča, pred­sa len ide sko­ro o 3 mi­lió­ny riad­kov! V prí­pa­de, že zís­ka­me jad­ro od vy­da­va­te­ľa dis­tri­bú­cie s prí­po­nou .rpm, pou­ži­je­me prí­kaz
 [root@do­ma src] # rpm –i ker­nel-hea­ders*.rpm
	[root@do­ma src] # rpm –i ker­nel-sour­ce*.rpm
Keď­že mno­hé uti­li­ty a prog­ra­my sa od­vo­lá­va­jú na ad­re­sár /usr/src/li­nux-2.4/, mu­sí­me zá­ro­veň up­ra­viť lin­ku na ten­to ad­re­sár. Buď pou­ži­je­me mc, ale­bo z riad­ka za­dá­me prí­kaz
 [root@do­ma src] # ln -s li­nux-2.4.27 li­nux-2.4
(Nes­mie­me za­bud­núť pred­tým pred­chá­dza­jú­cu lin­ku zru­šiť!)

Opat­cho­va­nie
Ak chce­me exis­tu­jú­ce jad­ro op­ra­viť, pou­ži­je­me prís­luš­nú zá­pla­tu. Zá­pla­ta má me­no po­dob­né čís­lu jad­ra, napr. patch-2.4.19.gz vy­tvo­rí zo sta­ré­ho jad­ra 2.4.18 no­vé jad­ro 2.4.19. Patch roz­ba­lí­me a ap­li­ku­je­me prí­ka­zom

 [root@do­ma src] # gun­zip -c patch-2.4.19.gz|patch –p1
Zdro­jo­vé kó­dy sú­čas­né­ho jad­ra sú op­ra­ve­né, mô­že­me pris­tú­piť ku kon­fi­gu­rá­cii bu­dú­ce­ho jad­ra.

Kon­fi­gu­rá­cia jad­ra
Prá­ve kon­fi­gu­rá­cia jad­ra je naj­dô­le­ži­tej­ší bod ce­lé­ho zos­ta­vo­va­nia. Vďa­ka tej­to fi­lo­zo­fii mô­že­me jad­ro sys­té­mu pris­pô­so­biť na svoj ob­raz. Mô­že­me roz­hod­núť o dô­le­ži­tých sú­čas­tiach jad­ra. Ak nap­rík­lad ne­má­me v po­čí­ta­či žiad­ne za­ria­de­nie SCSI, pod­po­ru tých­to za­ria­de­ní v jad­re vy­pne­me, čím ušet­rí­me dra­ho­cen­né mies­to v ope­rač­nej pa­mä­ti. Dob­rým „vy­la­de­ním“ kon­fi­gu­rá­cie jad­ra zís­ka­me jad­ro, kto­ré bu­de dos­ta­toč­ne vý­kon­né aj na star­ších po­čí­ta­čoch. Skôr ako pris­tú­pi­me ku kon­fi­gu­rá­cii, je dob­ré si zis­tiť, aké za­ria­de­nia má na­še no­vé jad­ro pod­po­ro­vať. To zis­tí­me poh­ľa­dom do ima­gi­nár­ne­ho sú­bo­ru /proc/pci ale­bo je­ho vy­lis­to­va­ním prí­ka­zom

 [root@do­ma src] # cat /proc/pci

Uvi­dí­me zá­klad­ný zoz­nam har­dvé­ru a za­čne­me kon­fi­gu­ro­vať zdro­jo­vé kó­dy jad­ra. Kon­fi­gu­rá­ciu mô­že­me vy­ko­nať tro­mi spô­sob­mi:
v prí­ka­zo­vom riad­ku
po­mo­cou me­nu v prí­ka­zo­vom riad­ku
po­mo­cou me­nu v gra­fic­kom pros­tre­dí

Kon­fi­gu­rá­ciu v prí­ka­zo­vom riad­ku spus­tí­me prí­ka­zom ma­ke con­fig, po­mo­cou me­nu v prí­ka­zo­vom riad­ku ma­ke me­nu­con­fig a v gra­fic­kom pros­tre­dí po­mo­cou prí­ka­zu ma­ke xcon­fig. Tie­to prí­ka­zy mu­sí­me spúš­ťať v ad­re­sá­ri zdro­jo­vých kó­dov jad­ra, te­da v /usr/src/li­nux-2.4/. Aj keď všet­ky tri mož­nos­ti do­siah­nu ten is­tý vý­sle­dok, naj­prí­jem­nej­ší z nich je pos­led­ný. V prí­pa­de, že na da­nom po­čí­ta­či ne­má­me nain­šta­lo­va­né gra­fic­ké pros­tre­die, pou­ži­je­me dru­hú mož­nosť. Bu­de­me pos­tu­po­vať tak­to:

prej­de­me do da­né­ho ad­re­sá­ra /usr/src/li­nux-2.4/ prí­ka­zom
 [root@do­ma src] # cd /usr/src/li­nux-2.4
za­dá­me prí­kaz
 [root@do­ma li­nux-2.4] # ma­ke me­nu­con­fig
Na obr. č. 1 vi­dí­me zá­klad­né me­nu kon­fi­gu­rač­né­ho nás­tro­ja me­nu­con­fig.

obr1.jpg Obr. 1

Ak má­me mož­nosť pou­žiť gra­fic­ké pros­tre­die, pos­tu­pu­je­me tak­to:
spus­tí­me gra­fic­ké pros­tre­die prí­ka­zom startx s prá­va­mi roo­ta
v gra­fic­kom pros­tre­dí spus­tí­me ľu­bo­voľ­ný ter­mi­nál (ob­ja­ví sa kla­sic­ký shell)
prej­de­me do da­né­ho ad­re­sá­ra /usr/src/li­nux-2.4/ prí­ka­zom

 [root@do­ma src] # cd /usr/src/li­nux-2.4
za­dá­me prí­kaz
 [root@do­ma li­nux-2.4] # ma­ke xcon­fig

Na plo­che sa ob­ja­ví ok­no kon­fi­gu­rač­né­ho nás­tro­ja (obr. č. 2).

obr2.jpg Obr. 2

Ten­to kon­fi­gu­rač­ný nás­troj nám po­mô­že pri vy­tvá­ra­ní skrip­tov, pot­reb­ných pri prek­la­de prog­ra­mu. Ako vi­dí­me na obr. č. 3, uti­li­ta sa skla­dá z nie­koľ­kých po­lo­žiek. Klik­nu­tím na jed­not­li­vé po­lož­ky sa dos­ta­ne­me do niž­šej úrov­ne. Klik­ni­me nap­rík­lad na po­lož­ku USB sup­port (obr. č. 3).

obr3.jpg Obr. 3

Všim­ni­me si roz­de­le­nie ok­na USB sup­port. Na ľa­vej stra­ne sú tri stĺpce y, m a n, v stre­de je ná­zov jed­not­li­vej voľ­by a vpra­vo je help – po­moc­ník. Klik­nu­tím na ko­soš­tvo­rec niek­to­ré­ho z pr­vých troch stĺpcov zvo­lí­me da­nú voľ­bu, čo sa pre­ja­ví je­ho sfar­be­ním na­čer­ve­no. Stĺpec y de­fi­nu­je, že da­ná voľ­ba bu­de po­vo­le­ná a bu­de neod­de­li­teľ­nou sú­čas­ťou jad­ra. Stĺpec n de­fi­nu­je, že voľ­ba ne­bu­de ak­tív­na ani ne­bu­de sú­čas­ťou jad­ra. Tým do­siah­ne­me zmen­še­nie jad­ra a ús­po­ru pa­mä­te. Stĺpec m de­fi­nu­je, že da­ná voľ­ba sa má pre­lo­žiť ako mo­dul. My už vie­me, čo mo­du­ly sú, aké sú ich vý­ho­dy a ako sa s ni­mi na­rá­ba. Zo­pa­kuj­me si, že tá­to mož­nosť je vý­hod­ná, pre­to­že nám umož­ňu­je mo­dul ak­ti­vo­vať ale­bo deak­ti­vo­vať na zá­kla­de na­šich po­trieb aj po kom­pi­lá­cii jad­ra sys­té­mu. Po­zor, nie všet­ky voľ­by jad­ra mož­no kom­pi­lo­vať ako mo­dul, vte­dy v dru­hom stĺpci nie je pís­me­no m, ale zna­mien­ko mí­nus a tá­to voľ­ba je neak­tív­na! Nap­rík­lad jad­ro mu­sí ve­dieť pris­tu­po­vať na pev­ný disk, pre­chá­dzať sú­bo­ro­vý sys­tém a po­tom mô­že žia­da­né mo­du­ly spúš­ťať. Tak­že pod­po­ra prís­tu­pu k pev­ným dis­kom ne­mô­že byť ako mo­dul, ale mu­sí byť pev­nou sú­čas­ťou jad­ra!

Pre­chá­dzať všet­ky po­lož­ky kon­fi­gu­rač­né­ho nás­tro­ja je te­raz zby­toč­né. Ak nas­ta­ne prí­pad, že chce­me pou­žiť niek­to­rú sie­ťo­vú uti­li­tu, v do­ku­men­tá­cii k da­nej uti­li­te sa bu­de is­tot­ne na­chá­dzať po­kyn, kto­ré voľ­by kon­fi­gu­rač­né­ho nás­tro­ja má­me za­pnúť. Po ukon­če­ní kon­fi­gu­rá­cie klik­ne­me na po­lož­ku Sa­ve and Exit v hlav­nom me­nu. Tým sa vy­tvo­rí v ad­re­sá­ri /usr/src/li­nux-2.4/ sú­bor .con­fig. V ňom sú ulo­že­né všet­ky vy­ko­na­né nas­ta­ve­nia (na čo sa ten­to sú­bor pou­ži­je, to si nes­kôr uká­že­me).

Po vy­ko­na­ní kon­fi­gu­rá­cie mô­že­me eš­te vy­ko­nať ozna­če­nie no­vé­ho jad­ra. V ad­re­sá­ri /usr/src/li­nux-2.4/ vy­hľa­dá­me sú­bor Ma­ke­Fi­le. Ot­vo­rí­me ho vhod­ným edi­to­rom a prej­de­me na ria­dok EXTRA­VER­SION = . Tu dopl­ní­me ľu­bo­voľ­ný text, kto­rým ozna­čí­me na­še no­vé jad­ro, nap­rík­lad mo­je­jad­ro. Po edi­to­va­ní sú­bor ulo­ží­me.

Prek­lad jad­ra
V glo­bá­le je prek­lad jad­ra naj­jed­no­duch­ší, ale za­to ča­so­vo ná­roč­ný. Prek­lad jad­ra, kto­ré­mu sa od­bor­ne ho­vo­rí kom­pi­lá­cia, sa skla­dá z nie­koľ­kých fáz:
Vy­tvo­re­nie zá­vis­los­tí
Ma­za­nie sta­rých a ne­pot­reb­ných sú­bo­rov
Vy­tvo­re­nie ob­ra­zu jad­ra
Vy­tvo­re­nie a in­šta­lá­cia mo­du­lov

Vy­tvo­re­nie zá­vis­los­tí
Aby sys­tém ve­del, kto­ré sú­bo­ry tre­ba pre­lo­žiť a kto­ré mož­no ig­no­ro­vať, vy­tvo­rí­me strom zá­vis­los­tí. Pou­ži­je­me prí­kaz (všet­ko v ad­re­sá­ri /urs/src/li­nux-2.4/):

 [root@do­ma li­nux-2.4] # ma­ke dep

Ma­za­nie
Na zma­za­nie sta­rých a ne­pot­reb­ných sú­bo­rov pou­ži­je­me prí­kaz

 [root@do­ma li­nux-2.4] # ma­ke clean
Ten­to prí­kaz sa od­po­rú­ča pou­žiť aj vte­dy, ak ide­me zos­ta­vo­vať úpl­ne no­vé jad­ro.

Vy­tvo­re­nie ob­ra­zu jad­ra
Z vy­tvo­re­né­ho kon­fi­gu­rač­né­ho sú­bo­ru, vy­tvo­re­ných zá­vis­los­tí a „vy­čis­te­né­ho sto­la“ spus­tí­me sku­toč­ný prek­lad zdro­jo­vých sú­bo­rov. Tých zdro­jo­vých sú­bo­rov je neú­re­kom, sta­čí sa po­zrieť do ad­re­sá­ra /urs/src/li­nux-2.4/. Kom­pi­lá­ciu spus­tí­me prí­ka­zom

 [root@do­ma li­nux-2.4] # ma­ke bzI­ma­ge
Po prek­la­de vznik­ne iba je­den veľ­ký hlav­ný sú­bor bzI­ma­ge, kto­rý ob­sa­hu­je ob­raz no­vé­ho jad­ra.

Poz­nám­ka:
Od­po­rú­čam prek­lad ro­biť pred obe­dom, le­bo aj na dob­rých stro­joch tr­vá dosť dl­ho. No a keď sa vrá­ti­me z obe­da, už by to moh­lo byť ho­to­vé. (Keď som to ro­bil pr­výk­rát v ži­vo­te na Pen­tiu 90 a Red­Hat 6.2, tr­va­lo to ce­lú noc...)

Vy­tvo­re­nie mo­du­lov
Ak sme vy­tvá­ra­li no­vé jad­ro, mu­sí­me prek­la­dom vy­tvo­riť aj mo­du­ly, kto­ré sme v jed­not­li­vých po­lož­kách kon­fi­gu­rač­né­ho nás­tro­ja na­de­fi­no­va­li. To do­siah­ne­me prí­ka­zom

 [root@do­ma li­nux-2.4] # ma­ke mo­du­les

In­šta­lá­cia mo­du­lov
Po pre­lo­že­ní mo­du­lov tre­ba mo­du­ly nain­šta­lo­vať do to­ho správ­ne­ho ad­re­sá­ra a up­ra­viť ur­či­té skrip­ty, aby jad­ro pri boo­to­va­ní mo­du­ly správ­ne za­vie­dlo do pa­mä­te. Aby sme to ne­mu­se­li ro­biť ruč­ne, pou­ži­je­me na to krás­ny prí­kaz

 [root@do­ma li­nux-2.4] # ma­ke mo­du­les_in­stall
Ten nain­šta­lu­je mo­du­ly do ad­re­sá­ra /lib/mo­du­les/čís­lo_jad­ra, te­da v na­šom prí­pa­de /lib/mo­du­les/2.4.22-1.2115.nptl/.

In­šta­lá­cia jad­ra
Jad­ro, vlas­tne je­ho ob­raz sa po prek­la­de na­chá­dza v ad­re­sá­ri /usr/src/li­nux-2.4/arch/i386/boot/ v sú­bo­re bzI­ma­ge. Naj­prv pre­ko­pí­ru­je­me ten­to sú­bor do ad­re­sá­ra /boot/ a pre­me­nu­je­me ho na sú­bor vmli­nuz-2.4.22-mo­je­jad­ro:

 [root@do­ma li­nux-2.4] # cp /usr/src/li­nux-2.4/arch/i386/boot/bzI­ma­ge /boot/vmlinz-2.4.22-mo­je­jad­ro
Keď má­me no­vé jad­ro ho­to­vé, zos­tá­va nám len up­ra­viť prís­luš­ný za­vá­dzač. Je­ho nas­ta­ve­nie zá­vi­sí od ty­pu pou­ži­té­ho boot­loa­de­ra, te­da od to­ho, či pou­ží­va­me GRUB ale­bo LI­LO.

Úpra­va boot­loa­de­ra GRUB
Prej­de­me do ad­re­sá­ra /boot/grub/ a edi­tu­je­me sú­bor grub.conf. Od­ko­pí­ru­je­me pred­chá­dza­jú­ci od­sek od textu tit­le a pri­dá­me ho na ko­niec sú­bo­ru. V no­vom od­se­ku up­ra­ví­me tie­to riad­ky: Ria­dok za­čí­na­jú­ci sa na tit­le up­ra­ví­me nap­rík­lad na tit­le Fe­do­ra Co­re - mo­je jad­ro. Po­tom up­ra­ví­me ria­dok za­čí­na­jú­ci sa slo­vom ker­nel. V ňom za­dá­me ná­zov no­vé­ho sú­bo­ru vmli­nuz tak, ako sme si ho pre­me­no­va­li. Os­tat­né voľ­by po­ne­chá­me, le­bo ich is­tot­ne dob­re vy­tvo­ril in­šta­lač­ný prog­ram pri in­šta­lá­cii sys­té­mu.

Vzor up­ra­ve­né­ho sú­bo­ru grub.conf je na vý­pi­se č. 4.

# grub.conf ge­ne­ra­ted by ana­con­da # # No­te that you do not ha­ve to re­run grub af­ter ma­king chan­ges to this fi­le
# NO­TI­CE:  You do not ha­ve a /boot par­ti­tion.  This means that
#          all ker­nel and initrd paths are re­la­ti­ve to /, eg.
#          root (hd0,0)
#          ker­nel /boot/vmli­nuz-ver­sion ro root=/dev/hda1
#          initrd /boot/initrd-ver­sion.img
#boot=/dev/hda
de­fault=0
ti­meout=10
splas­hi­ma­ge=(hd0,0)/boot/grub/splash.xpm.gz
tit­le Fe­do­ra Co­re (2.4.22-1.2115.nptl)
	root (hd0,0)
	ker­nel /boot/vmli­nuz-2.4.22-1.2115.nptl ro root=LA­BEL=/ hdc=ide-scsi rhgb
	initrd /boot/initrd-2.4.22-1.2115.nptl.img

tit­le Fe­do­ra Co­re mo­je jad­ro
	root (hd0,0)
	ker­nel /boot/vmli­nuz-2.4.22-mo­je­jad­ro ro root=LA­BEL=/ hdc=ide-scsi rhgb
	initrd /boot/initrd-2.4.22-1.2115.nptl.img

Sú­bor ulo­ží­me. Tým sme v sys­té­me za­cho­va­li aj pô­vod­né fun­kčné jad­ro a pri­da­li no­vé jad­ro. Je to veľ­mi vý­hod­né, le­bo keď zis­tí­me, že no­vé jad­ro ne­fun­gu­je správ­ne, stá­le má­me mož­nosť pou­žiť to sta­ré a vy­tvo­re­nie no­vé­ho za­čať zno­va od za­čiat­ku. Po reš­tar­te sys­té­mu sa v po­nu­ke boot­loa­de­ra ob­ja­ví no­vá po­lož­ka s náz­vom Fe­do­ra Co­re – mo­je jad­ro. Sta­čí, aby sme na ňu pre­su­nu­li kur­zor, a klep­nu­tím na En­ter spus­tí­me boot sys­té­mu s no­vým jad­rom. V prí­pa­de, že sa no­vé jad­ro os­ved­čí a my chce­me, aby sa spúš­ťa­lo sa­mos­tat­ne bez to­ho, aby sme ho mu­se­li od­kli­ká­vať, nas­ta­ví­me v sú­bo­re grub.conf po­lož­ku de­fault na hod­no­tu 1. Tým za­bez­pe­čí­me, že sa po ur­či­tom ča­se, sta­no­ve­nom v po­lož­ke ti­meout, auto­ma­tic­ky spus­tí dru­há po­lož­ka me­nu (pre­čo dru­há, keď za­dá­me čís­lo 1? Le­bo pr­vá po­lož­ka má čís­lo nu­la, dru­há čís­lo 1, tre­tia čís­lo 2 atď.).

Úpra­va boot­loa­de­ra LI­LO
Ak v na­šej dis­tri­bú­cii pou­ží­va­me li­lo, up­ra­ví­me sú­bor /etc/li­lo.conf. Po­dob­ne ako v pred­chá­dza­jú­com prí­pa­de, od­ko­pí­ru­je­me pr­vý od­sek, za­čí­na­jú­ci sa slo­vom ima­ge, a pri­dá­me ho na ko­niec sú­bo­ru. Up­ra­ví­me riad­ky ima­ge, kde na­pí­še­me sú­bor no­vé­ho jad­ra, a la­bel, kde de­fi­nu­je­me po­me­no­va­nie po­lož­ky, pod kto­rou sa no­vé jad­ro bu­de pre­zen­to­vať. Vzor up­ra­ve­né­ho sú­bo­ru li­lo.conf je na vý­pi­se č. 6.

de­fault=Li­nux ima­ge=/boot/vmli­nuz-2.4.22-1.2115.nptl 	la­bel=Li­nux 	initrd=/boot/initrd.gz 	read-on­ly  ima­ge=/boot/vmli­nuz-2.4.22-mo­je­jad­ro
	la­bel=Li­nux-mo­je_jad­ro
	initrd=/boot/initrd.gz
	read-on­ly
Sú­bor ulo­ží­me. Na roz­diel od boot­loa­de­ra GRUB mu­sí­me uve­de­né zme­ny v sú­bo­re li­lo.conf ak­ti­vo­vať spus­te­ním prí­ka­zu
 [root@do­ma li­nux-2.4] # li­lo

Mô­že­me reš­tar­to­vať. V no­vej ver­zii LI­LO, kto­ré má už po­do­bu me­nu po­dob­ne ako GRUB, sa ob­ja­ví no­vá po­lož­ka s prís­luš­ným náz­vom. Pre­su­nu­tím kur­zo­ra a po od­klik­nu­tí na naš­tar­tu­je no­vé jad­ro. Ak pou­ží­va­me star­šiu ver­ziu LI­LO, kto­ré ne­má po­do­bu me­nu, mô­že­me pri zob­ra­ze­ní textu boot: na ob­ra­zov­ke ta­bu­lá­to­rom zvo­liť, kto­rú po­lož­ku chce­me ak­ti­vo­vať.

Ak nám no­vé jad­ro vy­ho­vu­je, mô­že­me nas­ta­viť je­ho de­faul­tné spúš­ťa­nie úp­ra­vou po­lož­ky de­fault na hod­no­tu de­fault=Li­nux-mo­je_jad­ro v sú­bo­re /etc/li­lo.conf. Po tej­to úp­ra­ve nes­mie­me za­bud­núť zno­va spus­tiť prí­kaz li­lo, kto­rý da­né zme­ny za­kti­vu­je.

Sú­bor .con­fig
V prí­pa­de, že má­me viac po­čí­ta­čov, na kto­rých chce­me vy­ko­nať iden­tic­kú úp­ra­vu jad­ra, ne­mu­sí­me pre­chá­dzať prís­luš­né voľ­by kon­fi­gu­rač­né­ho nás­tro­ja pri kaž­dom po­čí­ta­či zvlášť. Vte­dy sta­čí, ak na všet­ky up­ra­vo­va­né po­čí­ta­če pre­ko­pí­ru­je­me sú­bor .con­fig, kto­rý vzni­kol po kon­fi­gu­rá­cii jad­ra na pr­vom po­čí­ta­či. Po­tom spus­tí­me prek­lad zdro­jo­vých kó­dov a mo­du­lov. Ve­rím, že sa nám pr­vý prek­lad jad­ra vy­da­ril a my sme hr­do pos­tú­pi­li v zna­los­tiach Li­nuxu o jed­nu prieč­ku vy­ššie.

Ďal­šie čas­ti >>

Zdroj: Infoware 10/2004



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Li­nux prak­tic­ky ako server úvod
Linux ako server je pomerne zložitá technológia. Jej výhodou je určitá modularita, keď sa nemusí nastaviť celý server naraz, ale postupne. čítať »
 
Syn­chro­ni­zá­cia ča­su v Li­nuxe
V predchádzajúcich dvoch častiach sme si ukázali, že Linux a všeobecne open source softvér sa nenachádza iba v serveroch a počítačových sieťach, ale aj v iných zariadeniach bežnej domácej potreby a v oblasti hobby. čítať »
 
Za­ria­de­nia za­lo­že­né na Li­nuxe
V predchádzajúcej časti sme si spomenuli definície nie - ktorých pojmov z oblasti nášho záujmu, teda Linuxu. Vysvetlili sme si, čo je to Open Source, Public Domain, proprietárny softvér a GNU GPL. Tentoraz ukážeme, ako sa tieto pojmy využívajú v praxi. čítať »
 
Po­jmy z ob­las­ti
Tentoraz na chvíľu trochu odbočíme od bezpečnosti Linuxu a jeho siete. V tejto neštandardnej časti seriálu sa mu budeme venovať len okrajovo. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí II.
V predchádzajúcej časti sme sa začali zaoberať bezpečnosťou bezdrôtových sietí. Poukázali sme na rôzne faktory zneužitia siete, podstatu rizika a vysvetlili sme základné prvky bezpečnosti. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí I.
V predchádzajúcich častiach sme sa venovali bezpečnosti linuxového servera. Riešili sme firewall, bezpečnosť prístupu na internet, zaoberali sme sa demilitarizovanou zónou a podobne. čítať »
 
Údr­žba lo­gov – kon­fi­gu­rá­cia log­ro­ta­te
V predchádzajúcej časti sme sa venovali rotácii logov. Vysvetlili sme princíp ukladania logov, spôsob, ako sa rotujú, a uviedli sme niečo o tom, čo a ako treba nastaviť čítať »
 
Údr­žba lo­gov – ro­tá­cia
V predošlej časti sme sa zaoberali spôsobom logovania informácií na iný alebo vzdialený počítač a ukázali sme, ako riešiť problém s logovaním uzavretých procesov pomocou chroot. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter