marts 4, 2022

trin til at bidrage til Linuk-kernen

et af de største—og hurtigst bevægende—open source-projekter, Linuk-kernen, består af omkring 53.600 filer og næsten 20 millioner kodelinjer. Med mere end 15.600 programmører, der bidrager til projektet over hele verden, følger kernen en vedligeholdelsesmodel for samarbejde.

i denne artikel giver jeg en hurtig tjekliste over trin, der er involveret i at lave dit første kernebidrag, og se på, hvad du bør vide, før du sender en patch. For et mere dybtgående kig på indsendelsesprocessen for at bidrage med din første patch, Læs kernenyheder første Kernel Patch tutorial.

Bidrag til kernen

Trin 1: Forbered dit system.

trin i denne artikel antager, at du har følgende værktøjer på dit system:

  • teksteditor
  • e-mail-klient
  • versionsstyringssystem (f. eks. git)

Trin 2: Hent kernel code repository:

git clone -b staging-testing
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

Kopier din nuværende konfiguration:

cp /boot/config-`uname -r`* .config

Trin 3: Byg/Installer din kerne.

make -jX
sudo make modules_install install

Trin 4: Lav en gren og skift til den.

git checkout -b first-patch

Trin 5: Opdater din kerne for at pege på den nyeste kodebase.

git fetch origin
git rebase origin/staging-testing

Trin 6: Foretag en ændring af kodebasen.

kompiler igen ved hjælp af kommandoen make for at sikre, at din ændring ikke producerer fejl.

Trin 7: Foretag dine ændringer og opret en patch.

git add <file>
git commit -s -v
git format-patch -o /tmp/ HEAD^

emnet består af stien til filnavnet adskilt af koloner, efterfulgt af hvad patchen gør i den imperative tid. Efter en tom linje kommer beskrivelsen af plasteret og det obligatoriske underskrevne tag og, endelig, en diff af din patch.

her er et andet eksempel på en simpel patch:

send derefter patchen ved hjælp af e-mail fra kommandolinjen (i dette tilfælde Mutt):

mutt -H /tmp/0001-<whatever your filename is>

for at kende listen over vedligeholdere, som plasteret skal sendes til, skal du bruge get_maintainer.pl manuskript.

hvad du skal vide, før du sender din første patch

  • Greg Kroah-Hartmans staging tree er et godt sted at indsende din første patch, da han accepterer nemme patches fra nye bidragydere. Når du bliver fortrolig med patch-afsendelsesprocessen, kan du sende delsystemspecifikke patches med øget kompleksitet.
  • du kan også starte med at rette kodningsproblemer i koden. Hvis du vil vide mere, skal du læse dokumentationen for kernekodningsstil.
  • manuskriptet checkpatch.pl registrerer kodning stil fejl for dig. For eksempel køre:
    perl scripts/checkpatch.pl -f drivers/staging/android/* | less
  • du kan fuldføre TODOs efterladt ufuldstændig af udviklere:
    find drivers/staging -name TODO 
  • Coccinelle er et nyttigt værktøj til mønstertilpasning.
  • Læs kernens mailingarkiver.
  • gå gennem linien.git log for at se forpligter af tidligere forfattere til inspiration.
  • Bemærk: må ikke top-post til at kommunikere med korrekturlæser af din patch! Her er et eksempel:

    forkert måde:

    Chris,
    ja lad os planlægge mødet i morgen på anden sal.
    > på Fre, Apr 26, 2013 på 9:25 er, Chris skrev:
    > Hey John, Jeg havde nogle spørgsmål:
    > 1. Vil du planlægge mødet i morgen?
    > 2. På hvilken etage på kontoret?
    > 3. Hvilken tid passer til dig?

    ( bemærk, at det sidste spørgsmål utilsigtet blev efterladt ubesvaret i svaret.)

    korrekt måde:

    Chris,
    se mine svar nedenfor…
    > på Fre, Apr 26, 2013 på 9:25 er, Chris skrev:
    > Hey John, Jeg havde nogle spørgsmål:
    > 1. Vil du planlægge mødet i morgen?
    Ja I morgen er fint.
    > 2. På hvilken etage på kontoret?
    lad os holde det på anden sal.
    > 3. Hvilken tid passer til dig?
    09: 00 ville være okay.

    ( alle spørgsmål blev besvaret, og på denne måde sparer Læsetid.)

  • eudyptula challenge er en fantastisk måde at lære kernel basics.

for at lære mere, Læs Kernelnyheder første Kernel Patch tutorial. Efter det, hvis du stadig har spørgsmål, så spørg på kernelnyheder mailingliste eller i #KERNELNYHEDER IRC kanal.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.