Compilarea kernelului

Acasă> Compilarea kernel-ului - modul Ubuntu

Înainte de a începe, să încercăm mai întâi să răspundem la întrebarea: De ce avem nevoie să reconstruim nucleul? Cei mai moderni utilizatori Linux se gândesc rareori la felul de nucleu pe care l-au instalat, la ce funcții sunt instalate, la ceea ce lipsește acolo și chiar mai mult pentru a putea (și ar trebui) să fie actualizat sau reasamblat pentru nevoi specifice.

Disponibilitatea și distribuția gratuită permit oricui să aleagă pe cine vor funcționa toate echipamentele disponibile pentru utilizatori, fără să se gândească la motivele pentru care nu funcționează și fără a face față problemei. Și de multe ori trebuie doar să instalați un singur pachet care să conțină modulul necesar pentru kernel. Producătorii își distribuie nucleul, ca să spunem la maxim, încercând să acopere cea mai largă gamă de echipamente și sarcini. Principalele componente sunt incluse în kernelul instalat împreună cu sistemul, dar ceea ce este considerat opțional este plasat în pachete separate.

Pentru a găsi pachete legate de kernel, utilizați depozitul distribuției dvs., de exemplu în Ubuntu și în alte sisteme care utilizează managerul APT, pentru a obține întreaga listă doar:

Al doilea motiv pentru reconstruirea kernelului este optimizarea și reducerea dimensiunii acestuia. Un utilizator sau un administrator poate dori pur și simplu să asambleze un sistem asamblat sub propria sa marcă de procesor. Sau modificați setările de sistem, de exemplu, activați cantități mari de memorie, cote de disc, suport pentru sisteme de fișiere și multe altele. Un alt motiv este eliminarea unei erori găsită în kernel sau unul dintre drivere. Și în cele din urmă - procesul de noi caracteristici inaccesibile în distribuție și disponibile până acum doar sub forma unui plasture. Da, poate doriți doar să vă încercați să construiți un nou kernel.

Compilarea unui kernel cu un pachet construit în Debian / Ubuntu

Nucleul instalat în modul obișnuit (adică compilația standard) nu va fi vizibil pentru managerul de pachete, în principiu acest lucru nu este necesar. Dar pentru a elimina nucleul instalat cu ajutorul managerului de pachete este mai ușor, actualizarea kernel-ului din depozit va trece, de asemenea, fără nici o legătură. Prin urmare, este mai bine să colectați mai întâi pachetul, pe care îl puteți instala în distribuție. În cele mai multe distribuții, acest lucru este în mod firesc posibil. În Debian / Ubuntu este ușor. În primul rând, actualizăm baza de date a aplicațiilor pentru a descărca cele mai recente versiuni disponibile ale pachetelor.

Acum vom instala toate pachetele necesare pentru construire.

$ sudo apt-get instala pachetul kernel libncurses5-dev fakeroot wget

Pachetul kernel-pachet conține codul sursă pentru kernel, care va fi decomprimat în / usr / src. În schimb, puteți folosi orice alt kernel cu patch-uri.

Dacă nu există nicio marcă, gcc și așa mai departe, atunci:

$ sudo apt-get instalează build-essential

Pentru simplificare, vom lua setările kernelului curent pe care îl vom folosi ca bază și vom copia configurația curentă în / usr / src / linux.

$ sudo cp / boot / config-`uname -r` /usr/src/linux/.config

Apoi, dacă este necesar, configurați-o introducând una din comenzile: make config. face menuconfig. face xconfig. face gconfig sau face oldconfig.

Pentru a compila și a construi pachetul deb, introduceți următoarea comandă.

$ sudo make-kpkg curat fakeroot make-kpkg -initrd -append -to-version = -custom-kernel kernel_image kernel_headers

Linia -append-to-version vă permite să adăugați numerotarea sau numele dvs. la versiunea de kernel care va fi transmisă de comanda uname. Aici puteți introduce orice linie, dar trebuie să înceapă cu o linie.

În Debian. Ubuntu și alte distribuții au adoptat formatul pachetului cu extensia deb. care conține, de regulă, un program compilat și vă permite să îl instalați, să îl eliminați sau să îl actualizați cu ușurință.

După un timp, două pachete deb apar în directorul / usr / src. Pachetul numit linux-image-2.6.23.deb va conține kernelul compilat, iar linux-headers-2.6.23.deb sunt fișierele de antet care ar putea fi necesare atunci când vă compilați alte câteva aplicații sau module. Cifra din cazul dvs. va fi probabil diferită. Acestea sunt instalate folosind dpkg. În exemplul nostru, comanda va arăta astfel.

O altă conveniență a acestei metode. Un astfel de nucleu poate fi instalat rapid și fără probleme pe alte computere, cu condiția ca toate echipamentele posibile să fie luate în considerare în configurație. Dacă te uiți acum în fișierul /boot/grub/menu.lst. atunci puteți găsi un nou kernel în listă. Un alt plus, nu trebuie să te deranjezi cu configurația de bootloader. Linux pentru totdeauna!

"Acum vom instala toate pachetele necesare pentru construire."
Aș adăuga, de asemenea, make și gcc

"Șirul" -append-to-version "vă permite să adăugați numerele sau numele dvs. la versiunea de kernel, care va fi transmisă de comanda uname."
Nu este deloc necesar să adăugați append-to-version, numai în configurația kernelului din
Setarea generală specifică versiunea sa în versiunea "Versiune locală - adăugați la lansarea kernelului" și include, de asemenea, parametrul "Adăugarea automată a informațiilor despre versiune la șirul de versiuni"

Întotdeauna construiesc kernel-ul cu comanda make-kpkg -roocmd = fakeroot kernel_image
În principiu, dacă există un arbore de nucleu complet al kernel-ului, atunci nu sunt necesare heders.

În Ubuntu face, gcc și așa mai departe este pus pur și simplu:
$ sudo apt-get instalează build-essential

Și nu există nimic dincolo de secret aici și nu este scris că fac asta și scriu. Cărțile pentru manechine conțin, de asemenea, aceste informații, dar sunt citite și se bucură.

"În Ubuntu face, gcc și așa mai departe este pus pur și simplu:"
pur și simplu, nu pur și simplu, dar nu este descris în articol.

2vlas Multumesc, corectat.

apt-get install build-esențial pune doar.
apt-cache show build-esențial | grep depinde:
Depinde: libc6-dev | (> = 4: 4.1.1), g ++ (> = 4: 4.1.1), faceți, dpkg-dev (> = 1.13.5)

în ubuntu 7.10:
De asemenea, este necesar ca versiunea să coincidă cu numărul de revizie al parametrului Debian din fișierul /etc/kernel-pkg.conf
dacă nu este instalat, în mod implicit - debian = $ (version) -10.00.Custom
dacă nu, atunci întregul proces se oprește.

mulțumiri pentru ajutor detaliat privind setările

Articole similare