Neliels ieskats Linux kodolā

Rakstā netiks detalizēti aprakstīts pats kompilācijas process, tik vien kā minētas būtiskas lietas, ko būtu jāzina. Ceru uz labojumiem, veselīgu kritiku un dažādām piebildēm.
[b]Ievads[/b]
[i]Kodols[/i] ir ļoti būtiska GNU/Linux sastāvdaļa, kas nodrošina sadarbību starp aparatūru un programmatūru, resursu sadali un procesu vadību.
Kodola izejas kods ir pieejams bez maksas.
Kodolam var būt vairāki atzarojumi, piemēram, 2.4 un 2.6. Parasti versijas nosaukumā ir 4 cipari, piemēram, 2.6.18.1. Šī ir 2.6 atzarojuma kodola 18. versija un 1 patchset ([url]http://www.skynet.ie/~mel/projects/patchset/[/url]).
Katra kodola izejas kods ietver sevī vairākus failus, piemēram:
• linux-x.y.z.tar.gz / linux-x.y.z.tar.bz2
• patch-x.y.z.gz
• patch-x.y.z.bz2
Jāseko līdzi skaitļiem versiju nosaukumos, lai tie atbilstu pārējiem.
Tiek izstrādātas jaunas kodola versijas. Ja rodas vēlme, nepieciešamība pēc jaunākas versijas, tad ir divas iespējas, kā to realizēt: kompilēt kodolu vai arī uzstādīt jau gatavu, nokompilētu. Kodols, kas ir kompilēts konkrētajai situācijai, spēs efektīvāk optimizēt sistēmresursu un operatīvās atmiņas izmantošanu.
[img]/images/upload/kernelis1L.jpg[/img]
[img]/images/upload/kernelis2L.jpg[/img]
[b]Kāpēc kompilēt kodolu?[/b]
Varētu šķist – kāpēc lai to dara, ja viss tik un tā pietiekami labi darbojas? Ir trīs iemesli, kādēļ varētu būt nepieciešama kompilācija. Pirmais – ir kāda aparatūra, jauns „dzelzis” datorā, kas ir tik jauns, ka Linux diskā vēl nebija attiecīgā kodola moduļa. Otrais – ir kāda kļūda (bug), kuru var labot pārskatot kodolu. Trešais – ir jauna programmatūra, kurai attiecīgi arī vajadzīgs jauns atbalsts, kas nav iekļauts distributīvā.
[b]Kodola kodi un konfigurācija[/b]
Jaunākās Linux kodolu versijas ir pieejamas ftp.kernel.org, kur var iegūt samērā ātru izejas koda kopijas lejupielādi. To jāpārvieto uz [i]/usr/scr[/i], tad ar [i]tar zxf[/i] (tar zxf /usr/scr) komandu, jāatpako.
Ja nav vajadzīga jaunākā versija, tad var izmantot kerneļa pakotni no CD, kas atvieglos šo procesu. Savukārt, ja vajag par vienu versiju jaunāku kodolu (piem., 2.2.1 uz 2.2.2), tad /usr/scr jālejupielādē patch fails un jālieto komanda: [i]gzip –dc patch-2.2.2.gz | patch-p0[/i]. Tas tāpēc, ka patch faili ir daudz sīkāki par visu versiju kopumā.
[b]Konfigurācija[/b]
Nomainiet mapi uz [i]/usr/scr/Linux[/i] un lietojiet komandu:
[i]make menuconfig[/i]
Kaut gan es personīgi neieteiktu mapi ar tieši tādu nosaukumu („Linux”). Iespējams, ka labāk saglabāt [i]/home[/i].
Atvērsies jauns logs, kurā izvēlne ļaus pārveidot, mainīt daudzus kerneļa konfigurācijas aspektus. Šī daļa kerneļa konfigurācijā ir pati sarežģītākā, jo vajag rūpīgi izvēlēties to, kas būs vajadzīgs. Pēc izdarītājām pārmaiņām, saglabājiet konfigurāciju un sekojiet instrukcijai – – do a
[i]make dep; make clean[/i]
Komanda [i]make clean[/i] atbrīvo visus nevēlamos failus, kas palikuši no kerneļa maiņas iepriekšējām reizēm. Kerneļa versijai 2.6, komanda [i]make dep[/i] nav nepieciešama.
[img]/images/upload/kernelis3L.jpg[/img]
Tā kerneļa konfigurācijas logs izskatās grafiskajā vidē.
[img]/images/upload/kernelis5L.jpg[/img]
Katram parametram ir attiecīgs apraksts, lai lietotājs var izlemt, vai būs nepieciešams to „atķeksēt”.
Protams, kompilāciju var veikt ar komandrindām, bet iesācējam grafiskā vide varētu būt saprotamāka.
[img]/images/upload/kernelis4L.jpg[/img]
Network File Systems moduļa detalizētāka konfigurācija.
Viss gatavs! Sekojoša komanda:
[i]make zImage[/i]
un tad kādu laiciņu būs jāuzgaida, kamēr process būs pabeigts. Tad:
[i]make modules[/i]
Tas savukārt aizņems mazāk laika. Kodols nokompilēts, atliek tikai uzinstalēt.
[b]Jaunā kerneļa instalācija[/b]
Beidzot! Pēdējais solis ir kerneļa instalācija. Uz Intel bāzētām sistēmām kodols tiek instalēts mapē [i]/boot[/i] ar komandu
[i]cp /usr/Linux/scr/arch/i386/boot/zImage /boot/newkernel[/i] -> nokopē no /usr apakšmapes uz /boot/newkernel
tad
[i]make modules_install[/i]
Tas ieinstalēs moduļus [i]/lib/modules[/i]. Tālāk jārediģē [i]/etc/lilo.conf[/i] , lai pievienotu:
[i]image = /boot/newkernel
label = new
read-only[/i]
Pēc lilo.conf rediģēšanas jāpalaiž komanda [i]lilo[/i].
(Lilo vietā var tikt izmantots arī Grub boot menedžeris, kuru jārediģē /boot/grub/menu.lst)
Nākamreiz taisot reboot, izvēlieties kodolu „new” Lilo startējoties. Ja tas strādā sekmīgi, tad lilo.conf failā varat to pārvietot uz pirmo pozīciju, lai tas startējas pēc noklusējuma.
[b]Kopsavilkums[/b]
Kerneļa kompilācija ir relatīvi vienkārša, ja tā ir veikta agrāk! Pirmā reize var likties biedējoša. Internetā ir diezgan daudz informācijas par kerneļa kompilāciju, tomēr lielākoties tā ir angļu valodā. Manuāļu lasīšana nenāktu par ļaunu, īpaši lai spētu racionālāk nokompilēt attiecīgo moduli.

Jaunākās kerneļa versijas internetā publicētas šī gada 31. janvārī. Tās ir 2.6.16.39 un 2.6.20-rc7. Sīkāk [url]http://www.linux.org/news/2007/01/31/0011.html[/url]

Rakstā veiktas korekcijas. Paldies par labojumiem! 🙂

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *

Datuve.lv – IT un Tehnoloģiju ziņas || Copyright © 2004-2020 || Kontaktinformācija: info@datuve.lv  || Contact Us