4 března, 2022

kroky pro přispění k jádru Linuxu

jeden z největších—a nejrychleji se pohybujících-open source projektů, Linuxové jádro, se skládá z asi 53,600 souborů a téměř 20 milionů řádků kódu. S více než 15 600 programátory přispívajícími do projektu po celém světě se Linuxové jádro řídí modelem údržby pro spolupráci.

v tomto článku vám poskytnu rychlý kontrolní seznam kroků spojených s prvním příspěvkem k jádru a podívejte se, co byste měli vědět před odesláním opravy. Chcete-li se podrobněji podívat na proces odesílání příspěvků pro první opravu, přečtěte si návod Kernelnewbies First Kernel Patch.

přispívání k jádru

Krok 1: Připravte svůj systém.

kroky v tomto článku předpokládají, že máte v systému následující nástroje:

  • textový editor
  • e-mailový klient
  • systém řízení verzí (např.)

Krok 2: Stáhněte si úložiště kódu jádra Linuxu:

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

zkopírujte aktuální konfiguraci:

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

Krok 3: sestavení / instalace jádra.

make -jX
sudo make modules_install install

Krok 4: Vytvořte větev a přepněte na ni.

git checkout -b first-patch

Krok 5: Aktualizujte jádro tak, aby ukazovalo na nejnovější kódovou základnu.

git fetch origin
git rebase origin/staging-testing

Krok 6: proveďte změnu základny kódu.

překompilujte pomocí příkazu make, abyste se ujistili, že vaše změna nevyvolává chyby.

Krok 7: odevzdejte změny a vytvořte opravu.

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

předmět se skládá z cesty k názvu souboru oddělené dvojtečkami, následované tím, co patch dělá v imperativním čase. Po prázdném řádku přichází popis opravy a povinná podepsaná značka a, konečně, rozdíl vaší opravy.

zde je další příklad jednoduché opravy:

dále odešlete opravu pomocí e-mailu z příkazového řádku (v tomto případě Mutt):

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

Chcete-li znát seznam správců, kterým chcete opravu odeslat, použijte get_maintainer.pl scénář.

co je třeba vědět před odesláním první opravy

  • Greg Kroah-Hartmanův staging tree je dobrým místem pro odeslání první opravy, protože přijímá snadné záplaty od nových přispěvatelů. Když se seznámíte s procesem odesílání oprav, můžete odesílat opravy specifické pro subsystém se zvýšenou složitostí.
  • můžete také začít s opravou problémů se stylem kódování v kódu. Chcete-li se dozvědět více, přečtěte si dokumentaci stylu kódování jádra Linuxu.
  • skript checkpatch.pl detekuje chyby ve stylu kódování pro vás. Například spustit:
    perl scripts/checkpatch.pl -f drivers/staging/android/* | less
  • dalo by se dokončit TODOs vlevo neúplné vývojáři:
    find drivers/staging -name TODO 
  • Coccinelle je užitečný nástroj pro porovnávání vzorů.
  • Přečtěte si poštovní archivy jádra.
  • projděte linux.git log vidět commit od předchozích autorů pro inspiraci.
  • Poznámka: nepoužívejte top-post pro komunikaci s recenzentem vaší opravy! Zde je příklad:

    špatně:

    Chris,
    Ano pojďme naplánovat schůzku zítra, ve druhém patře.
    > v pátek 26. Dubna 2013 v 9: 25 napsal Chris:
    > Ahoj Johne, měl jsem několik otázek:
    > 1. Chcete naplánovat schůzku zítra?
    > 2. Na kterém patře v kanceláři?
    > 3. Jaký čas je pro vás vhodný?

    (Všimněte si, že poslední otázka byla v odpovědi neúmyslně nezodpovězena.)

    správný způsob:

    Chris,
    Viz mé odpovědi níže…
    > v pátek 26. Dubna 2013 v 9: 25 napsal Chris:
    > Ahoj Johne, měl jsem několik otázek:
    > 1. Chcete naplánovat schůzku zítra?
    Ano zítra je v pořádku.
    > 2. Na kterém patře v kanceláři?
    necháme to ve druhém patře.
    > 3. Jaký čas je pro vás vhodný?
    09: 00 am by bylo v pořádku.

    (všechny otázky byly zodpovězeny a tímto způsobem šetří čas čtení.)

  • Eudyptula challenge je skvělý způsob, jak se naučit základy jádra.

Chcete-li se dozvědět více, přečtěte si návod Kernelnewbies First Kernel Patch. Poté, pokud máte stále nějaké dotazy, zeptejte se na mailing listu kernelnewbies nebo na IRC kanálu #kernelnewbies.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.