Marzo 4, 2022

Passi per contribuire al Kernel Linux

Uno dei più grandi—e il più veloce in movimento—progetti open source, il kernel Linux, è composto da circa 53.600 file e quasi 20 milioni di righe di codice. Con più di 15.600 programmatori che contribuiscono al progetto in tutto il mondo, il kernel Linux segue un modello di maintainer per la collaborazione.

In questo articolo, fornirò una rapida lista di controllo dei passaggi coinvolti nel dare il tuo primo contributo al kernel e guarderò cosa dovresti sapere prima di inviare una patch. Per uno sguardo più approfondito al processo di invio per contribuire alla tua prima patch, leggi il tutorial di KernelNewbies First Kernel Patch.

Contribuire al kernel

Passo 1: Preparare il sistema.

Procedura descritta in questo articolo supponga di avere le seguenti strumenti di sistema:

  • editor di Testo
  • client di Posta elettronica
  • sistema di controllo di Versione (ad esempio, git)

Passo 2: Scaricare il kernel di Linux repository di codice:

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

Copia la tua attuale config:

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

Passo 3: Costruire/installare il kernel.

make -jX
sudo make modules_install install

Passo 4: crea un ramo e passa ad esso.

git checkout -b first-patch

Passo 5: Aggiorna il tuo kernel per puntare all’ultima base di codice.

git fetch origin
git rebase origin/staging-testing

Passaggio 6: apportare una modifica alla base di codice.

Ricompila usando il comando make per assicurarti che la modifica non produca errori.

Passaggio 7: eseguire il commit delle modifiche e creare una patch.

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

Il soggetto è costituito dal percorso del nome del file separato da due punti, seguito da ciò che la patch fa nel tempo imperativo. Dopo una riga vuota arriva la descrizione della patch e il tag obbligatorio firmato off e, infine, un diff della patch.

Ecco un altro esempio di una semplice patch:

Quindi, invia la patch usando l’e-mail dalla riga di comando (in questo caso, Mutt):

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

Per conoscere l’elenco dei manutentori a cui inviare la patch, utilizzare get_maintainer.pl copione.

Cosa sapere prima di inviare la prima patch

  • Greg Kroah-Hartman’s staging tree è un buon posto per inviare la prima patch in quanto accetta patch facili da nuovi contributori. Quando si acquisisce familiarità con il processo di invio delle patch, è possibile inviare patch specifiche del sottosistema con maggiore complessità.
  • Si potrebbe anche iniziare con la correzione di problemi di stile di codifica nel codice. Per saperne di più, leggi la documentazione sullo stile di codifica del kernel Linux.
  • Lo script checkpatch.pl rileva errori di stile di codifica per voi. Ad esempio, esegui:
    perl scripts/checkpatch.pl -f drivers/staging/android/* | less
  • È possibile completare TODOs lasciato incompleto dagli sviluppatori:
    find drivers/staging -name TODO 
  • Coccinelle è uno strumento utile per la corrispondenza del modello.
  • Leggi gli archivi di mailing del kernel.
  • Passare attraverso linux.git log per vedere i commit degli autori precedenti per l’ispirazione.
  • Nota: Non top-post per comunicare con il revisore della patch! Ecco un esempio:

    Modo sbagliato:

    Chris,
    Sì programmiamo l’incontro domani, al secondo piano.
    > Il Ven, Apr 26, 2013 a 9: 25 AM, Chris ha scritto:
    > Hey John, ho avuto alcune domande:
    > 1. Vuole fissare l’incontro per domani?
    > 2. Su quale piano dell’ufficio?
    > 3. A che ora è adatto a te?

    (Si noti che l’ultima domanda è stata involontariamente lasciata senza risposta nella risposta.)

    Modo corretto:

    Chris,
    Vedi le mie risposte qui sotto…
    > Il Ven, Apr 26, 2013 a 9: 25 AM, Chris ha scritto:
    > Hey John, ho avuto alcune domande:
    > 1. Vuole fissare l’incontro per domani?
    Sì domani va bene.
    > 2. Su quale piano dell’ufficio?
    Teniamolo al secondo piano.
    > 3. A che ora è adatto a te?
    09:00 am sarebbe bene.

    (Tutte le domande hanno avuto risposta, e in questo modo consente di risparmiare tempo di lettura.)

  • La sfida Eudyptula è un ottimo modo per imparare le basi del kernel.

Per saperne di più, leggi il primo tutorial sulle patch del kernel di KernelNewbies. Dopo di che, se avete ancora domande, chiedere sulla mailing list kernelnewbies o nel canale IRC #kernelnewbies.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.