Am de gând să răspund la întrebarea dvs. reală, dar voi lua o cale obișnuită pentru a ajunge acolo, astfel încât să aveți un context mai bun.
tldr: Pachetul de care ai nevoie este face
sau construcție-esențială
. Trebuie să fiți în același director cu codul sursă Linux și să aveți un fișier .config configurat (ceea ce se pare că ați făcut deja). Apoi rulați acele comenzi. Cuvintele cheie Google care ar putea ajuta sunt „compilați nucleul linux”
Asa de face
este un sistem de construcție. Vă permite să rulați o serie de comenzi de compilare (sau orice comenzi, într-adevăr), recursiv printr-o structură de directoare. Utilizează un sistem simplu pentru compilarea doar a programelor cu modificări.
Make permite declararea „țintelor”. În mod tradițional, o țintă este un nume de fișier și este urmată de fișierele de care depinde.
Deci un exemplu simplu este:
helloworld: helloworld.c helloworld.h
gcc helloworld.c -o helloworld
Acesta va fi stocat într-un apel de fișier Makefile
și îi spune make că pentru a construi fișierul helloworld (binar compilat), rulați gcc helloworld.c -o helloworld
și dacă helloworld există deja, nu faceți nimic decât dacă există modificări la helloworld.c sau helloworld.h care sunt mai noi decât fișierul helloworld.
Dacă aceasta este singura regulă din makefile, rulează face
va invoca această regulă (deoarece este prima regulă) și va încerca să construiască Salut Lume
dar ar putea fi, de asemenea, invocat în mod explicit prin rulare face Helloworld
Makefile-urile sunt de obicei mult mai complicate și ar putea arăta mai degrabă așa (acesta este un exemplu foarte născocit și îmi dau seama că un makefile aproape niciodată nu va arăta așa, dar este bun pentru explicație):
salut: salut.o libhello.o
gcc salut.o libhello.o -o salut
hello.o: hello.c hello.h
gcc -c salut.c -o salut.o
libhello.o: libhello.c libhello.h
gcc -c libhello.c -o libhello.o
Deci dacă fugi face
sau salută
acest fișier make va verifica hello.o și libhello.o, dacă nu există, va căuta acele ținte și, astfel, va afla cum să construiți hello.o și libhello.o și APOI construiți binarul hello așa cum ați cerut in primul loc. Acest lucru vă permite să specificați dependențele pe rând și să vă dați seama în ce ordine să compilați totul pentru ca totul să funcționeze (de asemenea, acest lucru poate economisi timp de compilare dacă una dintre bibliotecile dvs. nu s-a schimbat, nu trebuie să recompilați acel obiect ).
Puteți specifica o țintă fără dependențe, în acest caz va rula doar dacă fișierul țintă nu există. În plus, ținta dvs. nu trebuie să fie un fișier care este creat de această regulă. De exemplu:
curat:
rm salut *.o
Acest lucru vă permite să alergați face curat
și va șterge fișierul binar compilat și fișierele obiect. Deoarece nu creează de fapt un fișier numit curat
, de fiecare dată când alergi face curat
această regulă este executată și curăță directorul de lucru. Aceasta se numește o țintă falsă și sunt folosite destul de des. face instalarea
este unul pe care probabil să îl vedeți des pentru a instala un program pe care l-ați creat cu make.
Înapoi la întrebarea ta inițială
Deci, nucleul Linux folosește make pentru a construi. Are o grămadă de ținte false, când rulează în rădăcina sursei Linux face ajutor
pentru a vă arăta țintele. În mod normal, începeți cu una dintre ținte care lansează un program pentru a vă ajuta să construiți un .config
fişier. Acestea ar fi face config
, face menuconfig
, face xconfig
, și alte câteva.
face
va rula ținta implicită care compilează nucleul utilizând opțiunile specificate în fișierul .config. face module
va compila numai biții marcați ca module în fișierul .config
fişier. Între aceste două comenzi ar trebui să ajungeți cu un nucleu vmlinuz și o grămadă de module binare ale nucleului. Ceea ce este/face kernel-ul Linux depășește domeniul de aplicare al acestei postări, dar povestea scurtă este că este software-ul central al sistemului de operare (dacă întregul sistem este un nebun, atunci nucleul ar fi nucleul central, nu? ). Acesta rulează la cel mai înalt nivel de privilegii pe procesor și este singura bucată de software care interacționează direct cu memoria și hardware-ul, iar toate celelalte software-uri din sistem vorbește cu nucleul pentru a intermedia accesul la hardware. (Există aproximativ 20 de avertismente în acea descriere, dar aceasta acoperă cele mai comune 80% din modul în care funcționează lucrurile).
Dar sperăm că asta vă oferă suficient context pentru a căuta mai multe informații utile, dacă căutați „compilați nucleul linux” ar trebui să găsiți o jumătate de duzină de resurse la toate nivelurile de complexitate. Ghidul oficial este la linux.org, dar intră foarte repede în buruieni și nu este de mare ajutor dacă este prima dată.
În Ubuntu (și în majoritatea distribuțiilor), make este în face
pachet, deci este instalat cu sudo apt install make
totuși, pentru a construi nucleul, veți avea nevoie și de alte programe, așa că, în general, doriți să instalați lanțul de instrumente de construcție și accesoriile cu sudo apt install build-essential
care include make.