Cum se construiește un nou kernel linux @ debuntarium

Fiecare distribuție are propriul ansamblu de kernel specific și acest HowTo se concentrează în mod specific asupra modului de a face acest lucru în Debian Etch. De asemenea, întrebarea este cum să impuneți un patch pe kernel atunci când aveți nevoie de suport pentru anumite funcționalități sau echipamente noi în sistemul dvs. HowTo este conceput în primul rând pentru utilizatorii mai instruiți și nu există nicio garanție că această metodă va funcționa așa cum ar trebui și că toate acțiunile și responsabilitățile descrise vor veni asupra dumneavoastră.

Vor fi descrise două moduri de asamblare a kernel-ului. Prima opțiune este de a construi pachete .deb care pot fi instalate pe sistemul dvs. sau într-un alt sistem. A doua metodă, așa-numitul "mod tradițional" :-)

Metoda unu. Construiți kernel-ul în pachete .deb.

Instalați pachetele necesare pentru a compila kernelul.

Pentru a începe, actualizăm listele de pachete:

Instalați pachetele de care avem nevoie:

# apt-get instala pachetul kernel libncurses5-dev fakeroot wget bzip2 build-esențial

Descărcați sursa kernelului.

Mergem la directorul / usr / src, accesați www.kernel.org și selectați versiunea corespunzătoare a kernel-ului. În acest caz, va fi luată în considerare versiunea linux-2.6.23.1.tar.bz2. Descarcate:

Despachetați sursele și creați o legătură simbolică:

# tar xjf linux-2.6.23.1.tar.bz2

# ln -sf linux-2.6.23.1 linux

Opțional, și nu o faceți, dacă este necesar!

Uneori aveți nevoie de drivere sau de instrumente care nu sunt acceptate într-un nucleu existent, cum ar fi tehnologia de virtualizare sau orice altă specificitate care nu se află în versiunea actuală. În orice caz, acest lucru este corectat prin impunerea așa-numitelor patch-uri (dacă există).

Deci, să presupunem că ați descărcat patch-ul necesar (de exemplu, sunați patch.bz2) în / usr / src. Aplicați patch-ul descărcat în sursele noastre (ar trebui să fiți încă în directorul / usr / src / linux):

# bzip2 -dc /usr/src/patch.bz2 | patch -p1 - rulare uscată

# bzip2 -dc /usr/src/patch.bz2 | patch-p1

Prima comandă este doar un test și nu vor fi aplicate modificări la codul sursă. Dacă nu s-au efectuat erori după prima comandă, puteți executa a doua comandă pentru a aplica patch-ul. Nu executați a doua comandă dacă după emiterea primelor erori!

Deci, aveți posibilitatea să modificați sursele kernel-ului. De exemplu, există câteva caracteristici care sunt disponibile numai în kernelul 2.6.23.8, iar sursele nu conțineau funcționalitatea necesară, însă patch-2.6.23.8.bz2 a fost lansat. Puteți aplica acest patch la sursa de kernel 2.6.23, dar nu la 2.6.23.1 sau 2.6.23.3 etc.

Pre-patch-uri (prepats) - sunt echivalente cu eliberările alfa; patch-urile ar trebui să fie aplicate sursei versiunii anterioare complete cu o versiune de 3 cifre (de exemplu, patch-ul 2.6.12-rc4 poate fi aplicat la codul sursă 2.6.11, dar nu la versiunea 2.6.11.10).

Aplicăm patch-patch-2.6.23.8.bz2 la kernelul 2.6.23:

# bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch -p1 - rulare uscată

# bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch-p1

Puteți descărca fișierul cu extensia de patch-uri la / usr / src / linux și aplicați:

$ cat file.patch patch-p1

Este o idee bună să folosiți fișierul de configurare existent pentru kernelul de lucru și cel nou. Prin urmare, copiem configurația existentă în / usr / src / linux:

Apoi dăm comanda:

după care se va încărca meniul de configurare a kernelului grafic. Selectați "Încărcați un fișier de configurare alternativ" din meniul configuratorului și faceți clic pe "OK". Apoi (dacă este necesar) efectuați modificările necesare ale configurației kernelului navigând prin meniu (pentru detalii despre configurația kernel-ului, consultați www.google.com :-)). Când terminați și faceți clic pe "Ieșire", întrebarea "Doriți să salvați noua configurație a kernelului?" Răspunsul este răspunsul nostru, răspunsul este afirmativ.

Kernel-ul este asamblat în doar două comenzi:

După -append-to-version =, puteți scrie orice nume care vă place, dar ar trebui să înceapă cu un semn minus (-) și să nu aibă spații.

Procesul de compilare și construire a pachetelor .deb poate dura destul de mult timp. Totul va depinde de configurația kernelului și de capacitățile procesorului.

Instalarea unui nou kernel.

Când asamblarea kernel-ului este finalizată cu succes, în directorul / usr / src vor fi create două pachete .deb:

linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - și, de fapt, foarte aktualnoeyadro

linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - COLECTOR kernel necesare pentru asamblarea altor module (de exemplu, în timpul modulelor driver asamblare nVidia).

(Aceste pachete pot fi acum instalate pe un alt sistem și nu vor mai fi nevoie să fie reasamblate.)

Totul, instalarea este finalizată, meniul bootloader, instalarea unui nou ramdisk și kernel-ul se vor face automat. Rămâne doar să reporniți:

Metoda a doua. "tradițional" :-)

Executăm toate elementele descrise mai sus la punctul "Compilarea kernelului".

Apoi, modul tradițional:

Ca de obicei, asamblarea poate dura mult timp, în funcție de configurația kernelului și de capacitățile procesorului.

Kernel-ul este compilat și instalat, dar acum este necesar să creați un ramdisk (fără care nucleul pur și simplu nu se va încărca) și trebuie să actualizați încărcătorul de încărcare GRUB. Pentru aceasta, efectuați următoarele:

Vom actualiza încărcătorul cu ușurință și fără durere:

Totul, bootloader-ul și noul kernel sunt gata, rămâne doar să repornești:

Dacă după repornire, noul kernel pe care l-ați selectat nu se încarcă, repornește și selectează kernelul anterior și puteți încerca din nou întregul proces să asambleze kernelul de lucru. Nu uitați, în acest caz, să ștergeți liniile kernelului nefuncțional în /boot/grub/menu.lst.

Articole similare