Adăugarea de patch-uri în kernel

Introducere [edit]

  • doar mă întreb.
  • există o funcție pe care am vrut să o adaug, dar în nucleul nostru nu este.
  • extinderea suportului pentru fier. Există o bucată de fier, nu funcționează, dar există un plasture și o oportunitate de a verifica.

De ce nu trebuie făcut acest lucru:

  • Sarcina este dificilă, dacă nu foarte necesară, nu vă înfunda capul.

Ce să nu faci:

  • Pentru a produce o aromă diferită. Este mai bine să adăugați la cele disponibile.
  • Doar pentru tine. Dacă ați adăugat un patch care face ceva util, merită să îl puneți în Sisyphus. Poate fi totuși util pentru cineva.
  • cunoștințe despre git. Cel puțin inițial. Toate dezvoltările kernel-ului se fac în git și nu pot fi evitate aici.
  • Cunoașterea echipamentelor sistemului de asamblare
  • Accesul la depozit.
  • Masina destul de puternica. Kernelul poate fi asamblat pentru o lungă perioadă de timp (aproximativ o jumătate de oră) în funcție de fier, iar în timpul procesului de asamblare este necesar să se solicite până la 1Gb pentru fișierele temporare. Fii pregătit că acest proces va mânca o mulțime de resurse.
  • Accesul la git.alt. git repository cu un kernel poate dura până la 300Mb să fie pregătit cel puțin o dată pentru al descărca complet.

Ne confruntăm cu brunches [editați]

Mai întâi, avem nevoie de un depozit git cu un kernel. pentru aceasta avem tendința, de exemplu,

Acum mergem în kernel-image-2.6.25 și vedem kernelul de vanilie. Faptul este că git a copiat numai ramura master. Puteți vedea celelalte ramuri cu ajutorul comenzii

După ce ne-am recuperat din șocul cauzat de abundența brunches, vom înțelege de ce este nevoie de fiecare dintre ele. La o inspecție mai atentă, toate brunches pot fi împărțite în

Să vorbim despre ele în ordine.

kernel-image- * [modifică]

Brunches principale sunt brunches de kernel-image- *, este din aceste nuclee sunt asamblate. Aceste ramuri corespund aromelor, de exemplu, pachetul kernel-image-std-def este construit din același brunch. Restul - std-pae, std-ll, std-srv sunt derivatele sale și în prezent nu ne interesează. În primul rând, obținem o copie a acestui brunch

Acum, uitandu-ne la directorul rezultat, vom vedea fisierele kernel-image.spec. .gear /. modules.build. subflavours și surse de kernel. Fișierul Spec și directorul .gear / îndeplinesc un rol normal. Fișierul modules.build este o listă de module pentru scripturi automate de construire a modulelor, toate modulele care trebuie să fie reconstruite după adăugarea actualizării kernel-ului. Fișierul de subflavours este o listă a subflavours care trebuie să fie actualizate la actualizarea subflavour principal. De exemplu, actualizăm și testăm std-def. și apoi aceste modificări sunt trase în alt subflavor printr-un script special.

kernel-source [modifică]

- un brunch special pentru a construi pachete kernel-source-versiune. Acest pachet conține codul sursă este întotdeauna nucleu de vanilie, și este utilizat pentru asamblarea tuturor nucleelor ​​de versiunea sa. Este important ca acest pachet conține, de exemplu, 2.6.25, și nu 2.6.25.17. Înainte de a monta roata dințată face dif între tag-uri v2.6.tekuschaya nucleul versya (de exemplu, v2.6.25) și brunch-ul kernel-image-aroma. Această dif pune în SRPM, iar atunci când ansamblul este tras kernel-source-versiune și a aplicat-dif. Astfel, kernel-source are sens să-l atingă, numai dacă încercați pentru a asambla o nouă versiune a kernel-ului.

fixați și feat [editați]

- Acest Prânzul cu patch-uri. Ei „cresc“ din nucleul de vanilie (poate fi o bază, cum ar fi v2.6.25. Poate fi vanilie foarte proaspete) și conțin patch-uri care se adaugă (feat) unele oportunitate sau de a elimina orice bug (fix).

Mai mult decât atât, numele lor au structura -sut subsistemului. De exemplu, repara-fs-securitate fixează vulnerabilități în sistemul de fișiere sau VFS, un feat-drivers-net-atl1e adăuga drivere pentru plăci de rețea atl1e.

  • într-o ramură puteți pune mai multe patch-uri.
  • Este mai bine să păstrați lucruri diferite în brunches separate
  • Nu creați brunches bazate pe kernel-image-std-def. Acest lucru provoacă apoi multe probleme.
  • Dacă există corecții necesare pentru îmbinarea sau corectarea problemei apărute, ar trebui să fie puse în acest brunch.

Despre titluri, exemple:

  • adăugați o nouă placă wifi la cartela wireless wireless feat-drivers-net-wireless
  • remediați problema cu suport pentru procesoare - în brunch-ul fix-arch-cpu-percent

Adăugarea de patch-uri [edit]

Succesiunea potrivită este necesară pentru a adăuga pateu. În primul rând, selectăm numele bretelei și, pentru comoditate, o numim ramură $. $ vversion este versiunea curentă a kernelului de vanilie. Creați un brunch:

Aplicați acum plasturele. Puteți să o atașați și să-l zakomitit. și anume:

În git commit, merită să scrieți o descriere, de fapt ceea ce face acest patch. De asemenea, puteți utiliza comanda git am.

Acțiunea de mai sus trebuie repetată, aplicând toate patch-urile necesare.

Apoi, încercăm să adăugăm patch-urile noastre în codul sursă al kernel-ului.

După a doua echipă, putem avea conflicte. Dacă apar, ele pot fi corectate prin următorul algoritm iterativ.

Am văzut fișiere conflictuale, am ales una

Căutăm linii acolo >>>>. ====, <<<<и устраняем конфликты. Так же можно воспользоваться git mergetool.

Și repetați cu fiecare fișier atunci faceți

De fapt, bucuros. Dacă patch-ul atinge fișierele KConfig, merită să actualizați config-urile.

Adunarea și publicarea [editați]

Puteți asambla miezul, precum și orice pachet, cu ajutorul uneltelor, dar amintiți-vă că pachetul este mare, va dura mult timp și, în același timp, consumă în mod activ spațiu.

După asamblare uneori este logic să asamblați modulele, puteți citi despre ele aici. Numai asamblarea reală se face prin comandă

Apoi mergeți la directorul cu kernel-ul și adăugați (pentru comoditate) telecomanda. git.alt ne răspunde $ url

De fapt, după acest kernel toate schimbările noastre sunt turnate pe git.alt

Criterii pentru adăugarea de patch-uri la kernel-ul std [edit]

Un plasture bun ar trebui:

  • Fii util
  • Fi portabil (cel puțin să lucreze pe x86_64 și i586)
  • Este de dorit să fie deconectat la încărcare sau să fie asamblat de un modul
  • Modificați funcționarea sistemelor de bază
  • Interfera cu alte plasturi
  • Ceea ce fie strică.

Articole similare