Passos para contribuir para o Kernel Linux
Um dos maiores—e mais rápida—projetos de código aberto, o Linux kernel, é composta de cerca de 53,600 arquivos e cerca de 20 milhões de linhas de código. Com mais de 15.600 programadores contribuindo para o projeto em todo o mundo, o kernel Linux segue um modelo de mantenedor para Colaboração.
neste artigo, fornecerei uma lista de verificação rápida das etapas envolvidas em fazer sua primeira contribuição do kernel e analisarei o que você deve saber antes de enviar um patch. Para uma análise mais aprofundada do processo de envio para contribuir com seu primeiro patch, leia o tutorial do KernelNewbies First Kernel Patch.
contribuindo para o kernel
Passo 1: Prepare seu sistema.
os Passos neste artigo presumem que você tenha as seguintes ferramentas do sistema:
- editor de Texto
- cliente de e-Mail
- sistema de controle de Versão (por exemplo, git)
Passo 2: Baixe o kernel do Linux repositório de código:
git clone -b staging-testing
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
Copie o atual config:
cp /boot/config-`uname -r`* .config
Passo 3: Construir/instalar o seu kernel.
make -jX
sudo make modules_install install
Etapa 4: Faça uma ramificação e mude para ela.Etapa 5: Atualize seu kernel para apontar para a base de código mais recente.
git fetch origin
git rebase origin/staging-testing
Etapa 6: Faça uma alteração na base de código.
Recompile usando make
comando para garantir que sua alteração não produza erros.Etapa 7: confirme suas alterações e crie um patch.
git add <file>
git commit -s -v
git format-patch -o /tmp/ HEAD^
o assunto consiste no caminho para o nome do arquivo separado por dois pontos, seguido pelo que o patch faz no tempo imperativo. Depois de uma linha em branco vem a descrição do patch e o obrigatório assinado off tag e, por último, um diff do seu patch.
aqui está outro exemplo de um patch simples:
em seguida, envie o patch usando e-mail da linha de comando (neste caso, Mutt):
mutt -H /tmp/0001-<whatever your filename is>
para saber a lista de Mantenedores a quem enviar o patch, use o get_maintainer.pl script.
o que saber antes de enviar seu primeiro patch
- Greg Kroah-Hartman’s staging tree é um bom lugar para enviar seu primeiro patch, pois ele aceita patches fáceis de novos colaboradores. Quando você se familiarizar com o processo de envio de patches, poderá enviar patches específicos do subsistema com maior complexidade.
- você também pode começar corrigindo problemas de estilo de codificação no código. Para saber mais, leia a documentação do estilo de codificação do kernel do Linux.
- o script checkpatch.pl detecta erros de estilo de codificação para você. Por exemplo, executar:
perl scripts/checkpatch.pl -f drivers/staging/android/* | less
- você poderia completar TODOs deixados incompletos pelos desenvolvedores:
find drivers/staging -name TODO
- Coccinelle é uma ferramenta útil para correspondência de padrões.
- leia os arquivos de discussão do kernel.
- passar pelo linux.git log para ver commits de autores anteriores para inspiração.
- Nota: Não top-post para se comunicar com o revisor do seu patch! Aqui está um exemplo:
caminho errado:
Chris,
Sim, vamos agendar a reunião amanhã, no segundo andar.
> em Sex, 26 de Abril de 2013 às 9h25, Chris escreveu:
> Hey John, eu tive algumas perguntas:
> 1. Você quer agendar a reunião amanhã?
> 2. Em que andar do Escritório?
> 3. Que horas são adequadas para você?(observe que a última pergunta foi involuntariamente deixada sem resposta na resposta.)
maneira correta:
Chris,
veja minhas respostas abaixo…
> em Sex, 26 de Abril de 2013 às 9h25, Chris escreveu:
> Hey John, eu tive algumas perguntas:
> 1. Você quer agendar a reunião amanhã?
Sim, amanhã está bem.
> 2. Em que andar do Escritório?Vamos mantê-lo no segundo andar.
> 3. Que horas são adequadas para você?
09: 00 AM seria bom.( todas as perguntas foram respondidas e, dessa forma, economiza tempo de leitura.)
- o desafio Eudyptula é uma ótima maneira de aprender o básico do kernel.
para saber mais, leia o primeiro tutorial de Patch do kernel do KernelNewbies. Depois disso, se você ainda tiver alguma dúvida, pergunte na lista de discussão kernelnewbies ou no canal #kernelnewbies IRC.