Compilarea nucleului Linux. Nucleul Linux (primire și control)

Construirea nucleului Linux
Bună ziua, dragi cititori. Astăzi vă voi povesti despre o activitate atât de interesantă Cum se construiește nucleul Linux. De ce ar putea fi necesar să asamblați singur nucleul? De fapt, pot exista multe motive: necesitatea de a utiliza capabilități suplimentare ale nucleului, optimizarea nucleului pentru computerul dvs., actualizarea nucleului la cea mai recentă versiune. În acest articol, voi demonstra procesul de obținere a codurilor sursă, configurarea, compilarea și instalarea nucleului Linux în sistem, ca parte a rezolvării problemei includerii suportului cryptoloop (dispozitive de criptare loopback) în kernel.

Obținerea codului sursă
În primul rând trebuie să obținem codul sursă, acest lucru se poate face în moduri diferite și din surse diferite. Propun să luăm în considerare doar două: depozitele de sistem, site-ul oficial al nucleului. Arhivele vor conține cel mai probabil versiuni ale nucleului mai vechi decât cele de pe site-ul oficial, dar aceste surse ar trebui să includă corecții și corecții de la producătorul distribuției dvs. Linux. Această abordare este de preferat, cu excepția cazului în care aveți nevoie de o tehnologie sau caracteristică nouă care este acceptată doar de nuclee mai noi. Puteți vizualiza toate versiunile surselor de kernel care sunt conținute în depozitele sistemului dvs. introducând în terminal (adevarat pentru Ubuntu Linux, numele pachetului poate diferi în alte distribuții):

Căutare Apt-cache linux-source

Comanda va lista pachetele disponibile:


După cum puteți vedea, am doar un pachet cu versiunea curentă și un pachet cu versiunea 3.5 (de fapt, versiunea actuală a nucleului este și 3.5). Pentru a extinde lista de nuclee disponibile în acest fel, merită să conectați depozite suplimentare. Putem obține nucleul cu comanda: sudo apt-get install linux-source

linux-source - numele pachetului sursă, poate fi diferit în cazul dvs.
După finalizarea comenzii, va apărea un fișier în directorul /usr/src, în cazul meu - linux-source-3.5.0.tar.bz2. Să mergem la dosar, să despachetăm arhiva și, pentru comoditate, să creăm un link simbolic:

Cd /usr/src sudo tar -xjvf linux-source-3.5.0.tar.bz2 sudo ln -s linux-source-3.5.0 linux

Dacă aveți nevoie de cea mai recentă versiune a nucleului, o puteți descărca oricând de pe site-ul web kernel.org. Este de remarcat faptul că site-ul conține atât versiuni stabile de nuclee, cât și versiuni destinate testării și modificării (de obicei, numele lor conține abrevierea „RC” - Release candidate). Dacă nu doriți probleme inutile cu sistemul, vă sfătuiesc să descărcați versiunea stabilă:

Să salvăm arhiva cu sursele în folderul /usr/src. Pentru a despacheta arhiva rezultată, poate fi necesar să instalați utilitare suplimentare:

Sudo apt-get install xz-utils

Acum, ca și în cazul descarcării nucleului din depozite, trebuie să despachetăm arhiva sursă și să creăm un link:

Cd /usr/src sudo tar -xpJf linux-3.8.5.tar.xz sudo ln -s linux-3.8.5.tar.xz linux

Configurare și compilare.
Acum ajungem la partea cea mai interesantă. Înainte de a începe, să instalăm câteva pachete suplimentare:

sudo apt-get install build-essential kernel-package libncurses-dev

Vom crea o nouă configurație bazată pe nucleul utilizat în prezent de sistem:

Cd /usr/src/linux sudo make oldconfig

Dacă configurați o versiune mai nouă a nucleului decât cea prezentă în sistem, atunci este probabil ca aceasta să conțină parametri care nu sunt în configurația nucleului curent. În acest caz, programul vă va cere să faceți o alegere; puteți lăsa valorile implicite prin simpla apăsare a tastei Enter. În orice caz, configurația nu este încă finalizată. Acum putem face setările de care avem nevoie prin meniul de creare a configurației:

Sudo make menuconfig

Programul de configurare va porni în terminal:

Aici, opțiunile de configurare sunt împărțite în secțiuni pentru a le face mai ușor de navigat. După cum am spus mai sus, trebuie să includ suport criptoloop în kernel. Pentru a face acest lucru, accesați secțiunea „Drifere de dispozitiv” și de acolo la subsecțiunea „Blocați dispozitive”:

Găsim parametrul „Cryptoloop Support”, lângă acesta se află litera „M” ceea ce înseamnă că suportul pentru dispozitivele de criptare va fi adăugat ca modul kernel care poate fi activat cu comanda modprobe. Trebuie să includem suport pentru această tehnologie direct în nucleu, astfel încât să fie întotdeauna suportat. Mutăm focalizarea pe parametrul „Cryptoloop Support” și apăsăm bara de spațiu. Litera „M” ar trebui înlocuită cu simbolul „*”, ceea ce înseamnă că suportul pentru această tehnologie va fi „conectat” în nucleu. Atenție, un spațiu înseamnă că tehnologia nu va fi suportată deloc.

Apăsați tasta „Tab” și faceți clic pe butonul „Ieșire” până când vi se solicită să salvați modificările:

Răspundem „Da”. Am finalizat cu succes configurarea!
Să începem compilarea. În primul rând, ștergem fișierele rămase din ansamblurile anterioare; dacă porniți ansamblul pentru prima dată, nu este necesar să rulați această comandă: sudo make-kpkg clean

Să începem compilația:

Sudo make-kpkg -j4 --initrd --append-to-version=-mykernel kernel_image kernel_headers

J4 - indicatorul indică câte fire de execuție trebuie utilizate pentru compilare. Acest lucru va accelera foarte mult compilarea pe procesoare multi-core. Numărul 4 de aici indică 4 fire. Instalați tot atâtea fire de execuție cât numărul de nuclee ale procesorului dvs. pe care sistemul le „vede”.
-mykernel - un prefix care indică faptul că nucleul a fost compilat manual, îl poți schimba, de fapt nu afectează nimic.

Acum a început procesul de compilare. Poate dura de la 10 minute la câteva ore, în funcție de cât de puternic este computerul dvs.:

Instalarea nucleului pe sistem

După ce compilarea este completă, în directorul /usr/src ar trebui să apară două fișiere cu extensia „deb”. Sunt pachete de instalare ale noului nostru kernel și pot fi instalate folosind utilitarul dpkg:

sudo dpkg -i linux-image-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb
sudo dpkg -i linux-headers-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb

Felicitări! Nucleul este instalat, acum sistemul va porni implicit cu acest nucleu, dar dacă aveți probleme cu noul nucleu, puteți oricând să porniți cu cel vechi selectându-l pe ecranul de pornire - Grub. Cu aceasta închei articolul de astăzi și vă doresc succes, dragi cititori!

Într-o familie mare de sisteme de operare bazate pe GNU/Linux. Cu siguranță ați auzit că aceste coduri sunt deschise, distribuite gratuit și gratuite. Se spune, ia-l pe cine vrei, dar respectă doar termenii licenței GPL, ceea ce nu este deloc dificil. Cu toate acestea, puțini oameni explică suficient de clar care este esența acestui fenomen, care este sensul acestuia. Prin urmare, vom încerca o astfel de explicație.

Esența pe scurt

Totul a început în 1991, când studentul finlandez Linus Torvalds a făcut publice codurile kernelului noului sistem de operare Linux. De ce în aer liber? Pentru că a susținut. Dar probabil că știți deja acest lucru (sau aflați ușor). Vom acorda atenție punctelor care necesită o clasificare clară.

Linux

Linux nu este un sistem de operare, ci doar un nucleu. Un set de soluții software necesare pentru pornirea unui computer și funcționarea componentelor acestuia („hardware”), baza pentru funcționarea altor programe.

GNU

GNU este un set de aplicații simple care au existat chiar înainte de apariția nucleului de mai sus. Aceste programe permit unei persoane să efectueze cel puțin o anumită interacțiune cu computerul și nu doar să se uite la ecran. Codul sursă este și el deschis, desigur.

GNU/Linux este un sistem de operare, nu doar un nucleu. În loc de GNU ar putea fi altceva, de exemplu Dalvik în Android.

Șoferii

Tehnologia se dezvoltă, numărul hardware-ului computerelor crește, echipamentele evoluează. Și fiecare produs are nevoie de un driver pentru a funcționa. Deci, unele drivere sunt înșurubate direct la miez. Dacă sunt gratuite (software liber), precum GNU și Linux, atunci codurile sunt cu siguranță deschise.

Ei bine, atunci când nu există drivere gratuite adecvate, atunci nu se poate face nimic, trebuie să instalați drivere proprietare. Dacă codurile lor sunt deschise depinde doar de producătorii de hardware.

Aplicații

Aplicațiile personalizate clasificate ca Open Source sunt adesea produse în versiuni pentru diferite sisteme de operare. Nu fac parte din Linux. Adevărat, unele sunt standard pentru o anumită distribuție sau shell grafic, dar nu fac parte din nucleu.

Desigur, codurile pentru toate opțiunile sunt deschise - pentru toate sistemele de operare acceptate. Aceeași situație se aplică diferitelor utilități.

Cine o face

Nucleul Linux este îmbunătățit de un grup de entuziaști. Uneori participă însuși Linus Torvalds. Codul nucleului, ambalat într-o arhivă, poate fi descărcat de pe kernel.org pentru compilare independentă ulterioară.

Șoferii, dacă sunt liberi, sunt adesea făcuți și de comunități. Pentru o imprimantă, scanner, placă video, adaptor Wi-Fi... În general, o mulțime de lucruri.

De exemplu, pachetul Gutenprint, care este un set întreg de drivere pentru multe modele de imprimante. Mai mult, calitatea imprimării este adesea comparabilă cu indicatorii produși atunci când se folosesc drivere „native” de la producători.

Uneori, producătorii de hardware deschid codul sub o licență adecvată, cum ar fi GPL sau BSD. Astfel de evenimente provoacă de obicei o bucurie de nedescris în rândul susținătorilor Open Source.

După cum probabil ați ghicit, aplicațiile personalizate sunt create, de asemenea, fie de către comunități, fie de către entuziaști individuali. Cu toate acestea, companiilor comerciale le place să facă publicitate, oferind populației o parte din produsele lor sub formă de Software Liber. Un exemplu izbitor: suita de birou OpenOffice.org a fost produsă de Oracle de mult timp.

Mai mult, unele companii fac chiar și kituri de distribuție întregi. Red Hat, SuSE, Xandros percepe bani pentru ansambluri binare gata de utilizare, dar nu au dreptul de a ascunde codurile. Adică aceste coduri, indiferent de modul în care sunt procesate, trebuie să rămână deschise. Aceasta este o cerință a licenței GPL.

Cine o folosește

Un programator se uită la software și se gândește: „Este un lucru bun, dar se poate face mai bine!” Descarcă o arhivă cu cod de pe site-ul web al dezvoltatorului și o îmbunătățește. Lui i se alătură un grup de specialiști care doresc să participe și ia naștere un nou proiect.

Așa apar „furculițe” (din engleză „furculiță”, care în acest caz este tradusă ca „ramură”). Noi programe bazate pe baza de cod a celor existente.

De exemplu, dintr-un player audio bun Amarok, se face unul și mai bun - Clementine. Și din suita de aplicații de birou OpenOffice.org - LibreOffice, care se dezvoltă rapid și foarte promițător.

Deci, sistemele de operare întregi sunt clonate folosind acest principiu. Sistemul de operare CentOS gratuit este compilat din codurile sursă ale sistemului plătit Red Hat Enterprise Linux. Desigur, șefii de la Red Hat probabil își mușcă din coate de frustrare, dar nu pot face nimic, deoarece nu dețin codul sursă.

Cu toate acestea, în acest caz, modificarea se reduce în principal la decuparea logo-urilor înregistrate, dar fără deschiderea obligatorie a codului, însăși existența CentOS ar fi imposibilă în principiu.

Concluzie

Open source este un concept fundamental al Linuxului în special și al întregului software liber în general. Codurile pot fi folosite pentru propriile proiecte, testate pentru inofensivă prin eforturile comunității, studiate, îmbunătățite abilitățile prin participarea la dezvoltare, îmbunătățiți și asistați oamenii în cauza lor nobilă.

Nu există un ansamblu binar de software care să fie important pentru dvs. pentru o anumită distribuție GNU/Linux? Driverul nu este inclus în kernel? Am luat arhiva cu codul sursă, am despachetat-o, am citit instrucțiunile de asamblare, am compilat-o, am instalat-o - și am folosit-o. Nu depinzi de producător, nu ești legat de un anumit sistem de operare - aceasta este adevărata libertate.

Publicații anterioare:

Nucleul Linux conține peste 13 milioane de linii de cod și este unul dintre cele mai mari proiecte open source din lume. Deci, ce este nucleul Linux și pentru ce este folosit?

Nucleul este cel mai scăzut nivel de software care interacționează cu hardware-ul computerului. Este responsabil pentru interacțiunea tuturor aplicațiilor care rulează în spațiul utilizatorului până la hardware-ul fizic. De asemenea, permite proceselor cunoscute ca servicii să primească informații unul de la celălalt folosind sistemul IPC.

Tipuri și versiuni ale nucleului

Știți deja ce este nucleul Linux, dar ce tipuri de nuclee există? Există diverse metode și considerații arhitecturale atunci când creați nuclee de la zero. Majoritatea nucleelor ​​pot fi unul din trei tipuri: nucleu monolitic, micronucleu și hibrid. Nucleul Linux este un nucleu monolitic, în timp ce nucleele Windows și OS X sunt hibride. Să facem o privire de ansamblu asupra acestor trei tipuri de nuclee.

Microkernel

Microkernel-urile implementează o abordare în care gestionează doar ceea ce ar trebui să facă: CPU, memorie și IPC. Aproape orice altceva de pe computer este tratat ca un accesoriu și gestionat în modul utilizator. Microkernel-urile au avantajul portabilității; ele pot fi utilizate pe alt hardware, și chiar pe alt sistem de operare, atâta timp cât sistemul de operare încearcă să acceseze hardware-ul într-o manieră compatibilă.

Microkernel-urile sunt de asemenea foarte mici și sunt mai sigure, deoarece majoritatea proceselor rulează în modul utilizator cu privilegii minime.

pro

  • Portabilitate
  • Mărime mică
  • Consum redus de memorie
  • Siguranță

Minusuri

  • Hardware accesibil prin drivere
  • Hardware-ul este mai lent deoarece driverele rulează în modul utilizator
  • Procesele trebuie să își aștepte rândul pentru a primi informații
  • Procesele nu pot accesa alte procese fără să aștepte

Miez monolitic

Nuezele monolitice sunt opusul microkernel-urilor, deoarece acoperă nu numai procesorul, memoria și IPC, dar includ și lucruri precum driverele de dispozitiv, managementul sistemului de fișiere, sistemul I/O. Nucleele monolitice oferă un acces mai bun la hardware și permit o mai bună operare multifuncțională, deoarece dacă un program trebuie să obțină informații din memorie sau din alt proces, nu trebuie să aștepte într-o coadă. Dar acest lucru poate cauza unele probleme, deoarece multe lucruri sunt efectuate în modul superutilizator. Și acest lucru poate dăuna sistemului dacă este făcut incorect.

Pro:

  • Acces mai direct la hardware
  • Schimb mai ușor de date între procese
  • Procesele răspund mai repede

Minusuri:

  • Marime mare
  • Ocupă multă memorie RAM
  • Mai puțin sigur

Miez hibrid

Nucleele hibride pot alege cu ce să lucreze în modul utilizator și cu ce în spațiul nucleului. Adesea, driverele dispozitivului și ale sistemului de fișiere se află în spațiul utilizatorului, în timp ce IPC și apelurile de sistem sunt în spațiul kernel. Această soluție ia ce este mai bun din ambele lumi, dar necesită mai multă muncă de la OEM. Pentru că toată responsabilitatea pentru șoferi le revine acum.

pro

  • Abilitatea de a alege ce va funcționa în spațiul kernel și utilizator
  • Dimensiuni mai mici decât un miez monolit
  • Mai flexibil

Minusuri

  • Poate lucra mai lent
  • Driverele de dispozitiv sunt eliberate de producători

Unde sunt stocate fișierele kernel?

Unde se află nucleul Linux? Fișierele kernel ale Ubuntu sau ale oricărei alte distribuții Linux se află în folderul /boot și sunt numite versiunea vmlinuz. Numele vmlinuz provine din epoca Unix. În anii șaizeci, nucleele erau de obicei numite simplu Unix; în anii 90, nucleele Linux erau numite și Linux.

Când memoria virtuală a fost dezvoltată pentru a facilita multitasking, literele vm apăreau în fața numelui fișierului pentru a indica faptul că nucleul suporta această tehnologie. De ceva timp, nucleul a fost numit vmlinux, dar apoi imaginea nu a mai încadrat în memoria de pornire și a fost comprimată. După aceasta, ultima literă x a fost schimbată în z pentru a indica faptul că a fost utilizată compresia zlib. Această compresie specială nu este întotdeauna utilizată; uneori puteți găsi LZMA sau BZIP2, așa că unele nuclee sunt numite pur și simplu zImage.

Numărul versiunii este format din trei cifre, numărul versiunii nucleului Linux, numărul versiunii dvs. și corecțiile sau corecțiile.

Pachetul /boot conține nu numai nucleul Linux, ci și fișiere precum initrd.img și system.map. Initrd este folosit ca un mic disc virtual care preia și execută fișierul kernel propriu-zis. Fișierul System.map este folosit pentru a gestiona memoria în timp ce kernel-ul nu este încă încărcat, iar fișierele de configurare pot specifica ce module kernel sunt incluse în imaginea kernel-ului atunci când sunt construite.

Arhitectura nucleului Linux

Deoarece nucleul Linux este o structură monolitică, este mai mare și mult mai complex decât alte tipuri de nuclee. Această caracteristică de design a atras multe controverse în primele zile ale Linux și încă poartă unele dintre defecte de design inerente nucleelor ​​monolitice.

Dar pentru a ocoli aceste neajunsuri, dezvoltatorii nucleului Linux au făcut un singur lucru - modulele nucleului care pot fi încărcate în timpul execuției. Aceasta înseamnă că puteți adăuga și elimina componente ale nucleului din mers. Acest lucru poate merge dincolo de adăugarea de funcționalități hardware, puteți rula procese de server, puteți activa virtualizarea și puteți înlocui complet nucleul fără repornire.

Imaginați-vă că puteți instala un pachet de actualizare Windows fără a fi nevoie să reporniți constant.

Module kernel

Ce se întâmplă dacă Windows ar avea deja toate driverele de care aveai nevoie în mod implicit și le-ai putea activa doar pe cele de care ai nevoie? Acesta este exact principiul pe care îl implementează modulele nucleului Linux. Modulele kernel, cunoscute și sub denumirea de module încărcate (LKM), sunt esențiale pentru menținerea nucleului în funcționare cu tot hardware-ul fără a utiliza toată memoria RAM.

Modulul extinde funcționalitatea nucleului de bază pentru dispozitive, sisteme de fișiere și apeluri de sistem. Modulele încărcabile au extensia .ko și sunt de obicei stocate în directorul /lib/modules/. Datorită naturii sale modulare, puteți personaliza nucleul foarte ușor prin instalarea și încărcarea modulelor. Încărcarea sau descărcarea automată a modulelor poate fi configurată în fișierele de configurare sau descărcată și încărcată din mers folosind comenzi speciale.

Modulele de la terți, proprietare, cu sursă închisă sunt disponibile pe unele distribuții, cum ar fi Ubuntu, dar nu sunt livrate implicit și trebuie instalate manual. De exemplu, dezvoltatorii driverului video NVIDIA nu furnizează cod sursă, ci în schimb și-au compilat propriile module în format .ko. Deși aceste module par a fi gratuite, nu sunt gratuite. De aceea, ele nu sunt incluse implicit în multe distribuții. Dezvoltatorii cred că nu este nevoie să poluăm kernel-ul cu software proprietar.

Acum sunteți mai aproape de a răspunde la întrebarea ce este nucleul Linux. Miezul nu este magie. Este foarte necesar pentru funcționarea oricărui computer. Nucleul Linux este diferit de OS X și Windows, deoarece include toate driverele și face o mulțime de lucruri acceptate din cutie. Acum știți puțin mai multe despre cum funcționează software-ul dvs. și despre ce fișiere sunt folosite pentru a face acest lucru.

În acest ghid pas cu pas, veți învăța cum să construiți și să instalați corect nucleul de ramură > 2.6 pe familia de sisteme de operare Ubuntu.

Pasul 1: Obținerea codului sursă al nucleului

Sursele nucleului Ubuntu pot fi obținute în două moduri:

    Prin instalarea arhivei din depozit, cu aplicarea automată a celor mai recente patch-uri oficiale. Aceasta va descărca un pachet cu dimensiunea de ~150 MB în folderul curent. Pentru a obține sursele nucleului, a cărui versiune este instalată pe computer, rulați comanda: apt-get source linux-image-`uname -r`

    Sau în loc de `uname -r` puteți specifica o anumită versiune disponibilă în depozit.

Lista versiunilor disponibile în depozit poate fi văzută tastând comanda: „apt-get source linux-image-” și, fără a apăsa Enter, apăsați tasta Tab de două ori.

Nu uitați să activați partajarea sursei în depozit (Setări de sistem → Programe și actualizări → Software Ubuntu → Cod sursă). Puteți face acest lucru din consolă prin decomentarea liniilor care încep cu deb-src din fișierul /etc/apt/sources.list și apoi efectuați actualizarea cu comanda: „sudo apt-get update”.

    Cea mai recentă versiune a nucleului este disponibilă prin git. Dimensiunea pachetului descărcat este de ~500-800 MB. git clone git://kernel.ubuntu.com/ubuntu/ubuntu- .git

    Unde - numele lansării, de exemplu:

    Clona Git git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git

Alte sâmburi

Există, de asemenea, nuclee care nu sunt garantate să funcționeze în Ubuntu. De exemplu, există o problemă cunoscută cu o serie de aplicații de sistem populare (în special driverele NVidia, VirtualBox), care, atunci când sunt instalate, sunt compilate pentru nucleul instalat. Prin urmare, instalarea acestora pe un nucleu care nu este standard pentru o anumită versiune de Ubuntu (de exemplu, Ubuntu 16.04 vine cu nucleul 4.4.0) poate necesita compilare manuală separată sau corecții speciale, iar aplicația poate să nu accepte cele mai recente versiuni de kernel-uri de la kernel.org.

    Arhivă din versiunea de bază fără patch-uri, adică de exemplu „4.8.0”, „4.8.10”: sudo apt-get install linux-source

Despachetați arhiva rezultată folosind comenzile:

Cd ~/ tar -xjf linux-2.6.x.y.tar.bz2

Sau în cazul linux-source:

Cd /usr/src tar -xjf linux-source-2.6.x.y.tar.bz2

Pasul 2. Obținerea pachetelor necesare pentru asamblare

Acest pas trebuie efectuat numai dacă nucleul este asamblat pe computer pentru prima dată

Rulați următoarele comenzi pentru a instala pachetele de bază:

Sudo apt-get update sudo apt-get build-dep linux sudo apt-get install kernel-package

    config- metoda tradițională de configurare. Programul afișează opțiunile de configurare pe rând, solicitându-vă să setați o valoare diferită pentru fiecare dintre ele. Nu este recomandat pentru utilizatorii neexperimentați.

    oldconfig- fișierul de configurare este creat automat pe baza configurației curente a nucleului. Recomandat pentru incepatori.

    defconfig- fisierul de configurare este creat automat, pe baza valorilor implicite.

    menuconfig- interfata pseudo-grafica pentru configurare manuala, nu necesita introducerea secventiala a valorilor parametrilor. Recomandat pentru utilizare într-un terminal.

    xconfig- interfata grafica (X) pentru configurare manuala, nu necesita introducerea secventiala a valorilor parametrilor.

    gconfig- interfata grafica (GTK+) pentru configurare manuala, nu necesita introducerea secventiala a valorilor parametrilor. Recomandat pentru utilizare în mediul GNOME.

    localmodconfig- un fișier de configurare care este creat automat, care include doar ceea ce este necesar pentru acest dispozitiv anume. Când această comandă este apelată, cea mai mare parte a nucleului va fi modulată

În cazul în care doriți să utilizați config, oldconfig, defconfig, localmodconfig sau localesconfig, nu mai aveți nevoie de pachete suplimentare. În cazul celor trei opțiuni rămase, trebuie să instalați și pachete suplimentare.

menuconfig rulați următoarea comandă:

Sudo apt-get install libncurses5-dev

Pentru a instala pachetele necesare pentru utilizare gconfig rulați următoarea comandă:

Sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev

Pentru a instala pachetele necesare pentru utilizare xconfig rulați următoarea comandă:

Înainte de Ubuntu 12.04: sudo apt-get install qt3-dev-tools libqt3-mt-dev

Sudo apt-get install libqt4-dev

Pasul 3: Aplicarea plasturilor

Acest pas este opțional.

Patch-urile oficiale au fost deja aplicate surselor dacă nucleul a fost obținut folosind comanda descrisă mai sus:

Apt-get source linux-image-`uname -r`

Dacă nu ați aplicat niciodată patch-uri codului sursă, atunci rulați următoarea comandă:

Sudo apt-get install patch

Această comandă va instala programul de corecție, care este necesar pentru, după cum ați putea ghici, aplicarea de corecții. Acum descărcați fișierul de corecție în folderul de unde ați extras nucleul. Acesta poate fi fie un fișier de arhivă (de exemplu, Bzip2 sau Gzip), fie un fișier de corecție necomprimat.

În acest moment, se presupune că ați salvat deja fișierul în folderul în care ați despachetat anterior nucleul și ați instalat programul de corecție.
Dacă fișierul pe care l-ați descărcat a fost în format Gzip (*.gz), atunci rulați următoarea comandă pentru a extrage conținutul arhivei:

Patch-ul Gunzip-2.6.x.y.gz

Dacă fișierul pe care l-ați descărcat a fost în format Bzip2 (*.bz2), atunci rulați următoarea comandă pentru a extrage conținutul arhivei:

Patch-ul Bunzip2-2.6.x.y.bz2

unde 2.6.x.y este versiunea de corecție a nucleului. Comenzile corespunzătoare vor extrage fișierul de corecție în folderul sursă a nucleului. Înainte de a aplica plasturele, trebuie să vă asigurați că va funcționa fără erori. Pentru a face acest lucru, executați comanda:

Patch -p1 -i patch-2.6.x.y --dry-run

unde 2.6.x.y este versiunea de corecție a nucleului. Această comandă va simula aplicarea unui patch fără a modifica fișierele în sine.

Dacă nu apar erori în timpul execuției sale, atunci modificările pot fi implementate în siguranță în fișierele în sine. Pentru a face acest lucru, executați comanda:

Patch -p1 -i patch-2.6.x.y

unde 2.6.x.y este versiunea de corecție a nucleului. Dacă nu au existat erori, atunci patch-ul a fost aplicat cu succes codului sursă.

Atenţie!Înainte de a aplica patch-ul, parcurgeți următorii pași: 1. Descărcați de pe http://www.kernel.org patch-ul aceleiași versiuni ca și sursele dumneavoastră. 2. Rulați următoarea comandă: patch -p1 -R

unde 2.6.x.y este versiunea patch-ului și sursele dumneavoastră

Pasul 4. Configurarea viitoarei versiuni a nucleului

Accesați folderul în care ați extras nucleul rulând comanda

Cd ~/linux-2.6.x.y

unde 2.6.x.y este versiunea kernel-ului pe care l-ați descărcat.

În acest moment, ar fi trebuit să fi decis deja asupra unei metode de configurare a nucleului (dacă nu, atunci verificați-le în secțiunea „Obținerea pachetelor necesare pentru a construi”). În funcție de aceasta, rulați următoarea comandă pentru a rula metoda de configurare pe care o aveți ales:

    config- metoda tradițională de configurare. Programul afișează opțiunile de configurare pe rând, solicitându-vă să setați o valoare diferită pentru fiecare dintre ele. Apelat de comanda make config

    oldconfig- fișierul de configurare este creat automat pe baza configurației curente a nucleului. Recomandat pentru incepatori. Apelat de make oldconfig

    defconfig- fișierul de configurare este creat automat, pe baza valorilor implicite pentru această arhitectură specială. Apelat de make defconfig

    menuconfig- interfata pseudo-grafica pentru configurare manuala, nu necesita introducerea secventiala a valorilor parametrilor. Recomandat pentru utilizare într-un terminal. Apel: face menuconfig

    gconfigȘi xconfig- configuratoare grafice pentru configurare manuală. Apel: face gconfig

    Faceți xconfig

    respectiv

    localmodconfigȘi localesconfig- configuratoare automate. Configurația este creată pe baza modulelor numite curent și a nucleului care rulează. Diferența dintre aceste două configuratoare este numărul de module. În primul caz, va exista cel puțin 50% din nucleu, iar în al doilea, nu mai mult de 2 module. Apel: face localmodconfig

    Faceți localeconfig

    respectiv

Odată apelat, programul de configurare corespunzător va fi lansat. Efectuați setările necesare în funcție de nevoile dvs., salvați fișierul de configurare și treceți la pasul următor.

Pasul 5: Construirea nucleului

Deci, pregătirile sunt finalizate. Acum puteți începe procesul de construire a nucleului. Pentru a face acest lucru, executați comanda:

Fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j<количество ядер процессора>+1

Construirea nucleului poate dura de la 20 de minute la câteva ore, în funcție de configurația nucleului și de parametrii tehnici ai computerului. Asamblarea cu un procesor multi-core poate fi de câteva ori mai rapidă

Pasul 6: Instalarea imaginilor și anteturilor Kernel

Când construirea nucleului este completă, două pachete deb vor apărea în folderul dvs. de acasă. Ele trebuie instalate. Pentru a face acest lucru, executați comenzile:

Cd ~/ sudo dpkg -i linux-image-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb sudo dpkg -i linux-headers-2.6.x.y-custom_2.6.x.y-custom-10.00. Custom_arc.deb

unde 2.6.x.y este versiunea nucleului asamblat, arc este arhitectura procesorului (i386 - 32-bit, amd64 - 64-bit).
Dacă nu știți numele exact al pachetului, listați fișierele din directorul dvs. de acasă cu comanda

și găsiți aceleași două pachete.

Pasul 7. Generarea discului RAM inițial

Pentru a funcționa corect, Ubuntu necesită o imagine inițială a discului RAM. Pentru a-l crea, executați comanda:

Sudo update-initramfs -c -k 2.6.x.y-custom

unde 2.6.x.y este versiunea nucleului compilat.

Pasul 8: Actualizarea configurației GRUB Boot Loader

Pentru a vă asigura că noua versiune de kernel este disponibilă pentru selecție atunci când computerul pornește, executați următoarea comandă:

Sudo update-grub

Fișierul menu.lst (pentru GRUB versiunea 1) sau grub.cfg (pentru GRUB versiunea 2) va fi actualizat în funcție de disponibilitatea sistemelor de operare instalate și a imaginilor kernelului.

Pasul 9: Verificarea nucleului

Asamblarea și instalarea kernelului au fost finalizate cu succes! Acum reporniți computerul și încercați să porniți sistemul cu noul nucleu. Pentru a vă asigura că sistemul rulează cu noul nucleu, executați comanda

Uname -r

Acesta va afișa versiunea de kernel utilizată.

Dacă totul este făcut corect, puteți șterge arhivele codului sursă și întregul director linux-2.6.x.y din folderul de acasă. Acest lucru va elibera aproximativ 5 GB pe hard disk (cantitatea de spațiu eliberată depinde de setările dvs. de construcție).

Astfel se finalizează procesul de asamblare și instalare, felicitări!