mars 4, 2022

steg för att bidra till Linuxkärnan

ett av de största—och snabbast rörliga—open source-projekten, Linuxkärnan, består av cirka 53 600 filer och nästan 20 miljoner kodrader. Med mer än 15 600 programmerare som bidrar till projektet över hela världen följer Linux-kärnan en underhållsmodell för samarbete.

i den här artikeln kommer jag att ge en snabb checklista över steg som är involverade i att göra ditt första kärnbidrag och titta på vad du borde veta innan du skickar in en patch. För en mer djupgående titt på inlämningsprocessen för att bidra med din första patch, läs kernelnewbies First Kernel Patch tutorial.

bidra till kärnan

Steg 1: Förbered ditt system.

steg i den här artikeln antar att du har följande verktyg på ditt system:

  • textredigerare
  • e-postklient
  • versionskontrollsystem (t. ex. git)

steg 2: Ladda ner Linux kernel code repository:

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

kopiera din nuvarande konfiguration:

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

steg 3: Bygg / installera din kärna.

make -jX
sudo make modules_install install

steg 4: Gör en gren och byt till den.

git checkout -b first-patch

Steg 5: Uppdatera din kärna för att peka på den senaste kodbasen.

git fetch origin
git rebase origin/staging-testing

steg 6: Gör en ändring i kodbasen.

kompilera om med kommandot make för att säkerställa att din ändring inte ger fel.

Steg 7: begå dina ändringar och skapa en patch.

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

ämnet består av sökvägen till filnamnet åtskilda av kolon, följt av vad korrigeringen gör i imperativ tid. Efter en tom rad kommer beskrivningen av plåstret och den obligatoriska signerade taggen och slutligen en diff av din patch.

här är ett annat exempel på en enkel patch:

skicka sedan patchen med e-post från kommandoraden (i det här fallet Mutt):

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

för att veta listan över ansvariga till vilka du ska skicka plåstret, använd get_maintainer.pl manus.

vad du ska veta innan du skickar in din första patch

  • Greg Kroah-Hartmans staging tree är ett bra ställe att skicka in din första patch eftersom han accepterar enkla patchar från nya bidragsgivare. När du blir bekant med patchsändningsprocessen kan du skicka delsystemspecifika patchar med ökad komplexitet.
  • du kan också börja med att korrigera kodningsstilproblem i koden. För att lära dig mer, läs dokumentationen för Linux-kärnkodningsstil.
  • skriptet checkpatch.pl upptäcker kodning stil fel för dig. Kör till exempel:
    perl scripts/checkpatch.pl -f drivers/staging/android/* | less
  • du kan slutföra TODOs lämnade ofullständiga av utvecklare:
    find drivers/staging -name TODO 
  • Coccinelle är ett användbart verktyg för mönstermatchning.
  • Läs kärnans e-postarkiv.
  • gå igenom linux.git-logg för att se åtaganden av tidigare författare för inspiration.
  • Obs: inte top-post för att kommunicera med granskaren av din patch! Här är ett exempel:

    fel sätt:

    Chris,
    ja låt oss planera mötet imorgon, på andra våningen.
    > på fre, April 26, 2013 på 9:25 am, Chris skrev:
    > Hej John, jag hade några frågor:
    > 1. Vill du planera mötet i morgon?
    > 2. På vilken våning på kontoret?
    > 3. Vilken tid passar dig?

    (Lägg märke till att den sista frågan oavsiktligt lämnades obesvarad i svaret.)

    rätt sätt:

    Chris,
    Se mina svar nedan…
    > på fre, April 26, 2013 på 9:25 am, Chris skrev:
    > Hej John, jag hade några frågor:
    > 1. Vill du planera mötet i morgon?
    ja imorgon är det bra.
    > 2. På vilken våning på kontoret?
    låt oss hålla det på andra våningen.
    > 3. Vilken tid passar dig?
    09: 00 skulle vara okej.

    (alla frågor besvarades, och på så sätt sparar lästid.)

  • eudyptula-utmaningen är ett utmärkt sätt att lära sig grunderna i kärnan.

för att lära dig mer, Läs kernelnewbies första Kernel Patch tutorial. Efter det, om du fortfarande har några frågor, fråga på kernelnewbies e-postlista eller i #kernelnewbies IRC-kanal.

Lämna ett svar

Din e-postadress kommer inte publiceras.