de Sreehari

Cum se construiește și se instalează cel mai recent kernel Linux de la sursă

Cum se construieste si se instaleaza cel mai recent kernel
O hartă a nucleului Linux

Tocmai am terminat prima mea sarcină pentru un curs de sisteme de operare avansate. Și am decis să documentez abordarea mea pentru construirea kernel-ului Linux din sursă și implementarea propriului meu apel de sistem.

Există o serie de bloguri care vă spun deja cum să faceți acest lucru, dar unele dintre ele sunt învechite, iar altele par inutil de complicate. Scopul meu este să prezint o abordare simplă pentru a face acest lucru, care, sperăm, ar trebui să vă ajute să economisiți mult timp.

Compilarea Kernel-ului Linux de la sursă poate părea o sarcină descurajantă, chiar și pentru cineva care se simte destul de confortabil cu computerele în general. De asemenea, poate deveni foarte iritant dacă nu urmați instrucțiunile corecte.

Deci, iată un ghid care să vă ajute în procesul de clădire nucleul de la sursă și este un ghid care funcționează! Nu va trebui să vă faceți griji cu privire la încurcarea sistemului sau pierderea timpului.

De ce să construim nucleul din sursă?

Dacă intenționați să lucrați la componentele interne ale kernel-ului Linux sau să îi schimbați comportamentul, va trebui să recompilați kernel-ul pe sistemul dvs.

Iată câteva cazuri specifice în care va trebui să știți cum să lucrați cu codul sursă al nucleului:

  1. Vrei să scrii un program foarte interesant „Hello world”. (De fiecare dată când implementați propriul apel de sistem sau modificați codul sursă al nucleului, va trebui să recompilați nucleul pentru a implementa modificările)
  2. Doriți să activați caracteristici experimentale pe kernel care nu sunt activate în mod implicit (sau, dezactivați caracteristicile implicite pe care nu le doriți)
  3. Doriți să depanați codul sursă de kernel, să activați suportul pentru un nou hardware sau să faceți modificări la configurațiile sale existente
  4. Faceți un curs despre sisteme de operare avansate și nu aveți de ales decât să faceți acest lucru!

În fiecare dintre situațiile de mai sus, învățarea cum să construiți nucleul din sursă va fi utilă.

De ce vei avea nevoie

Un sistem de operare bazat pe Linux (am încercat acest lucru pe Ubuntu 14.04 LTS și instrucțiunile scrise aici sunt pentru același lucru).

Va trebui să instalați câteva pachete înainte de a începe. Utilizați următoarele comenzi pentru același lucru.

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

De asemenea, veți avea nevoie de cel puțin 12 GB spațiu liber pe disc, o conexiune la internet pentru a descărca codul sursă și mult timp (aproximativ 45-90 de minute).

Descărcarea și extragerea celei mai recente surse de nucleu

Pentru a verifica versiunea curentă a nucleului, deschideți terminalul și tastați:

uname -r

Mergi la kernel.org și descărcați cea mai recentă versiune stabilă. La momentul scrierii acesteia, cea mai recentă versiune stabilă a nucleului era 4.7.1 și mă voi referi la aceeași în acest articol. (Notă: Încercați să evitați descărcarea sursei de pe alte site-uri web)

Treceți la directorul în care fișierul a fost descărcat și extrageți folosind:

tar xf linux-4.7.1.tar.xz

Treceți la directorul extras linux-4.7.1.

cd linux-4.7.1

Ar trebui să conțină dosare numite arc, fs, cripto, etc.

Configurare și compilare:

Înainte de a compila nucleul, trebuie să configurăm modulele care urmează să fie incluse și care sunt cele care trebuie lăsate în afara.

Există multe modalități de a face acest lucru.

O modalitate simplă și simplă de a face acest lucru este mai întâi să copiați fișierul de configurare existent al nucleului și apoi să utilizați „menuconfig” pentru a face modificări (dacă este necesar). Acesta este cel mai rapid mod de a face acest lucru și probabil cel mai sigur.

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

Aceasta este partea în care ați putea ajunge să eliminați suportul pentru un driver de dispozitiv sau să faceți ceva de genul care va duce în cele din urmă la un nucleu spart. Dacă nu sunteți sigur cu privire la modificări, salvați și ieșiți.

Notă: Una dintre alternativele la menuconfig este o interfață interactivă din linia de comandă accesibilă utilizând „make config”. Acest lucru vă ajută să configurați totul de la zero. Nu folosiți acest lucru. Vi se vor pune peste o mie de întrebări da / nu despre activarea sau dezactivarea modulelor, ceea ce promit că nu este deloc distractiv. Am încercat asta o dată și am reușit cumva să deranjez configurațiile driverului de afișaj.

gconfig și xconfig sunt instrumente de configurare alternative bazate pe GUI pe care le-ați putea folosi. Nu le-am încercat chiar eu. Pentru aceasta, va trebui să utilizați face gconfig (sau face xconfig) în loc de face menuconfig.

Acum, suntem cu toții pregătiți!

Pentru a compila nucleul și modulele sale, folosim face comanda.

Urmează utilizarea face module_install pentru a instala modulele kernel.

În cele din urmă, folosim face instalare pentru a copia nucleul și fișierul .config în folderul / boot și pentru a genera fișierul system.map (care este un tabel de simboluri utilizat de nucleu).

Acești trei pași reuniți ocupă de obicei mult timp. Utilizați următoarea comandă pentru a efectua sarcinile de mai sus:

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

Notă: am folosit opțiunea -j pentru a specifica numărul de nuclee care urmează să fie utilizate. Acest lucru tinde să accelereze considerabil procesul. Poți să folosești nproc pentru a verifica numărul de unități de procesare disponibile. În cazul meu, era vorba de 4 nuclee.

În mod ideal, nu ar trebui să aveți nevoie de privilegii sudo, dar am avut probleme când nu l-am executat cu privilegii sudo.

Pașii finali

Odată ce nucleul și modulele sale sunt compilate și instalate, dorim să folosim noul nucleu data viitoare când pornim.

Pentru ca acest lucru să se întâmple, trebuie să folosim următoarea comandă:

update-initramfs -c -k 4.7.1   

Apoi, utilizați următoarea comandă, care caută automat nucleele prezente în folderul / boot și le adaugă în fișierul de configurare al grub-ului.

update-grub  

Acum, reporniți sistemul și ar trebui să vedeți că noul nucleu este adăugat la intrările încărcătorului de încărcare.

Urmând instrucțiunile, presupunând că există suficient spațiu disponibil pe disc și configurația curentă a nucleului funcționează bine, nu ar trebui să întâmpinați probleme. Rețineți că puteți utiliza întotdeauna versiunea veche a nucleului în cazul oricărei probleme și încercați din nou totul!

Comanda uname -r ar trebui acum vă arată versiunea curentă a nucleului utilizat.

O notă importantă

Pașii de mai sus sunt necesari pentru a construi nucleul din sursă, pentru prima dată. Odată, acest lucru se face cel puțin o dată și o nouă imagine a nucleului este gata, modificarea și scrierea propriilor module este simplă. Veți folosi doar pașii enumerați mai jos Configurare și compilare de fiecare dată când ceva nou urmează să fie implementat sau configurat diferit.

Înțeles, amintiți-vă doar următoarele:

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

Trebuie să acord credite următoarelor resurse utile – au fost extrem de utile în această sarcină: Ramkitech.com, askubuntu.com, kernel.org și cyberciti.biz