Kā izveidot un instalēt jaunāko Linux kodolu no avota

Es tikko pabeidzu savu pirmo uzdevumu kursam par uzlabotas operētājsistēmas. Un es nolēmu dokumentēt savu pieeju Linux kodola izveidošanai no avota un sava sistēmas izsaukuma ieviešanai.

Ir vairāki emuāri, kuros jau ir norādīts, kā rīkoties, taču daži no tiem ir novecojuši, un daži šķiet nevajadzīgi sarežģīti. Mans mērķis ir parādīt vienkāršu pieeju, kā to izdarīt, cerams, ka tas palīdzēs jums ietaupīt daudz laika.

Linux kodola apkopošana no avota var šķist biedējošs uzdevums, pat kādam, kurš vispār ir diezgan apmierināts ar datoriem. Tas var arī kļūt ļoti kairinošs, ja neievērojat pareizos norādījumus.

Tātad, šeit ir ceļvedis, kas palīdzēs jums kodola izveidošanas procesā no avota, un tas ir ceļvedis, kas darbojas! Jums nebūs jāuztraucas par sistēmas sajaukšanu vai laika tērēšanu.

Kāpēc jāveido kodols no avota?

Ja plānojat strādāt ar Linux kodola iekšējiem elementiem vai mainīt tā uzvedību, jums būs jāpārkompilē kodols jūsu sistēmā.

Šeit ir daži īpaši gadījumi, kad jums jāzina, kā strādāt ar kodola pirmkodu:

  1. Jūs vēlaties uzrakstīt patiešām foršu programmu "Hello world". (Katru reizi, kad ieviešat savu sistēmas izsaukumu vai modificējat kodola avota kodu, jums būs jāpārkompilē kodols, lai ieviestu izmaiņas)
  2. Jūs vēlaties iespējot kodolā eksperimentālos līdzekļus, kas pēc noklusējuma nav iespējoti (vai arī atspējojiet nevēlamās funkcijas, kuras nevēlaties)
  3. Jūs vēlaties atkļūdot kodola avota kodu, iespējot jauna aparatūras atbalstu vai veikt izmaiņas esošajās konfigurācijās
  4. Jūs veicat kursus par uzlabotas operētājsistēmām, un jums nekas cits neatliek kā to izdarīt!

Katrā no iepriekš minētajām situācijām noderēs mācīšanās veidot kodolu no avota.

Kas jums būs nepieciešams

Operētājsistēma, kuras pamatā ir Linux (es to izmēģināju Ubuntu 14.04 LTS, un šeit rakstītās instrukcijas ir vienādas).

Pirms sākat darbu, jums būs jāinstalē daži pakotnes. Tam pašam izmantojiet šādas komandas.

sudo apt-get update
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc

Jums būs nepieciešama arī vismaz 12 GB brīva vieta diskā, interneta savienojums, lai lejupielādētu pirmkodu, un daudz laika (apmēram 45 līdz 90 minūtes).

Jaunākā kodola avota lejupielāde un izvilkšana

Lai pārbaudītu pašreizējo kodola versiju, atveriet termināli un ierakstiet:

uname -r

Atveriet vietni kernel.org un lejupielādējiet jaunāko stabilo versiju. Uzrakstīšanas laikā jaunākā stabilā kodola versija bija 4.7.1, un es atsaucos uz to pašu šajā rakstā. (Piezīme. Centieties izvairīties no avota lejupielādes no citām vietnēm)

Pārslēdzieties uz direktoriju, kurā fails tika lejupielādēts, un izvelciet to, izmantojot:

tar xf linux-4.7.1.tar.xz

Pārslēdzieties uz izvilkto direktoriju linux-4.7.1.

cd linux-4.7.1

Tajā jābūt mapēm ar nosaukumu arch , fs , crypto utt.

Konfigurēšana un apkopošana:

Pirms kodola sastādīšanas mums jākonfigurē, kuri moduļi jāiekļauj un kuri jāatstāj.

Lai to izdarītu, ir daudz veidu.

Vienkāršs un vienkāršs veids, kā to izdarīt, ir vispirms nokopēt esošo kodola konfigurācijas failu un pēc tam izmantot 'menuconfig', lai veiktu izmaiņas (ja nepieciešams). Tas ir ātrākais veids, kā to izdarīt, un, iespējams, drošākais.

cp /boot/config-$(uname -r) .config 
make menuconfig

Šī ir tā daļa, kurā jūs varat beigt noņemt ierīces draivera atbalstu vai darīt kaut ko līdzīgu, kā rezultātā galu galā tiks sabojāts kodols. Ja neesat pārliecināts par izmaiņu veikšanu, vienkārši saglabājiet un izejiet.

Piezīme. Viena no menuconfig alternatīvām ir interaktīva komandrindas saskarne, kurai var piekļūt, izmantojot make make. Tas palīdz visu konfigurēt no nulles. Nelietojiet to. Jums tiks uzdots vairāk nekā tūkstotis jā / nē jautājumu par moduļu iespējošanu vai atspējošanu, kas, es apsolu, nav jautri. Es to vienreiz izmēģināju un kaut kā izdevās sajaukt displeja draivera konfigurācijas.

gconfig un xconfig ir alternatīvi uz GUI balstīti konfigurācijas rīki, kurus jūs varētu izmantot. Pats šos neesmu izmēģinājis. Lai to izdarītu, jums jāizmanto make gconfig (vai make xconfig ), nevis jāizveido menuconfig .

Tagad mēs visi esam gatavi!

Lai kompilētu kodolu un tā moduļus, mēs izmantojam komandu make .

Pēc tam koda moduļu instalēšanai tiek izmantots make Module_instalēt .

Visbeidzot, mēs izmantojam make install, lai kopētu kodolu un .config failu mapē / boot un lai izveidotu failu system.map (kas ir simbolu tabula, kuru izmanto kodols).

Šie trīs kopā saliktie posmi parasti aizņem daudz laika. Lai veiktu iepriekš minētos uzdevumus, izmantojiet šo komandu:

sudo make -j 4 && sudo make modules_install -j 4 && sudo make install -j 4

Piezīme: Es izmantoju opciju -j, lai norādītu izmantojamo serdeņu skaitu. Tas mēdz ievērojami paātrināt procesu. Lai pārbaudītu pieejamo apstrādes vienību skaitu, varat izmantot nproc . Manā gadījumā tie bija 4 kodoli.

Ideālā gadījumā jums nevajadzētu būt sudo privilēģijām, taču man radās problēmas, kad es to nedarbināju ar sudo privilēģijām.

Pēdējie soļi

Kad kodols un tā moduļi ir apkopoti un instalēti, nākamreiz, kad palaidīsimies, mēs vēlēsimies izmantot jauno kodolu.

Lai tas notiktu, mums jāizmanto šāda komanda:

update-initramfs -c -k 4.7.1 

Pēc tam izmantojiet šo komandu, kas automātiski meklē / boot mapē esošos kodolus un pievieno tos grub konfigurācijas failam.

update-grub 

Tagad restartējiet sistēmu un jums vajadzētu redzēt, ka jaunais kodols ir pievienots sāknēšanas iekrāvēja ierakstiem.

Izpildot norādījumus, pieņemot, ka diskā ir pietiekami daudz vietas un pašreizējā kodola konfigurācija darbojas labi, jums nevajadzētu rasties problēmām. Ņemiet vērā, ka problēmu gadījumā vienmēr varat izmantot veco kodola versiju un mēģināt visu vēlreiz!

Komanda uname-r vajadzētu tagadparādīs pašreizējo izmantoto kodola versiju.

Svarīga piezīme

Iepriekš minētās darbības ir nepieciešamas, lai pirmo reizi izveidotu kodolu no avota. Vienu reizi tas tiek darīts vismaz vienu reizi, un jauns kodola attēls ir gatavs, izmaiņu veikšana un mūsu pašu moduļu rakstīšana ir vienkārša. Katru reizi, kad kaut kas jauns tiks ieviests vai konfigurēts atšķirīgi, jūs izmantosiet tikai sadaļā Konfigurēšana un apkopošana norādītās darbības .

Nozīme, atcerieties tikai sekojošo:

cp /boot/config-$(uname -r) .config
make menuconfig
sudo make -j 4 && sudo make modules_install -j 4 && sudo make install -j 4

Man ir jāpateicas šādiem vērtīgiem resursiem - viņi ļoti palīdzēja veikt šo uzdevumu: Ramkitech.com, askubuntu.com, kernel.org un cyberciti.biz