Aplicando patches no kernel

Patches são atualizações e correções distribuídas a parte do kernel. Através deles você pode até atualizar o seu Kernel para uma versão mais nova sem ter que baixar o tarball completo para isso. Neste artigo ensinarei a aplicar e remover patches do Linux.

[ Hits: 79.832 ]

Por: Pedro Pereira em 04/01/2005 | Blog: http://www.pedropereira.net


Entendendo os patches



Você com certeza já conhece o sistema de versões do Linux (as releases com números pares no meio são releases de produção ou estáveis; e as com números ímpares no meio são releases de testes ou instáveis).

Porém, as versões de testes não são os únicos meios de que os desenvolvedores Linux dispõem para disponibilizar código para testes. Existem também as versões prepatch. Prepatches são arquivos texto que contém as diferenças entre o código original (o que está no seu HD) e um código novo (que será aplicado no seu kernel pelo comando patch). Este arquivo indica exatamente em quais arquivos e em quais linhas as diferenças ocorrem e as aplica no código do seu kernel (semelhante ao que o comando diff faria).

As versões prepatch equivalem às versões alpha de qualquer outro software que você conheça. São todas colocadas no diretório pub/linux/kernel/testing dos servidores do kernel.org e seus mirrors. Para você aplicá-los ao kernel, deve-se utilizar o utilitário patch (man patch) no código fonte do kernel anterior à release que está no nome do prepatch (por exemplo, o prepatch patch-2.6.10-rc3.bz2 deve ser aplicado no kernel 2.6.9).

Os diretórios "testing" contém os patches gerados de um prepatch para outro. Os prepatches geralmente não são muito testados e têm muitos erros, podendo até nem conseguirem gerar um kernel utilizável. Por isso, nunca aplique um prepatch em uma máquina de produção até que este tenha sido exaustivamente testado.

Quando o prepatch se candidata a fazer modificações em um kernel oficialmente lançado, passa a se chamar "release candidate" (rc - candidato a lançamento) ao invés de prepatch, assim, a kernels com o release candidate aplicado, dá-se o nome de 2.6.9-rc3, por exemplo. Portanto, como a versão atual do kernel é a 2.6.x, toda modificação feita no 2.4.x receberá o rcX até que seja considerada estável, quando "perde" o rc no nome. Temos ainda os patches lançados por terceiros, sendo que nestes tudo o que foi dito antes se aplica. Os patches mais famosos lançados por terceiros são os -ac e os -dj.

Todos os patches lançados com o sufixo -ac são lançados por Alan Cox, um grande nome no mundo Linux (de quem você com certeza já ouviu falar). Todas as modificações feitas por seus patches são sobre a última versão estável do kernel oficial.

Várias modificações suas acabaram sendo adicionadas na versão oficial do kernel. Todos os patches lançados por ele podem ser encontrados em www.kernel.org/pub/linux/kernel/people/alan.

As versões com sufixo -dj são análogas aos patches -ac. Sua diferença é que as alterações feitas por estes são sempre nas últimas versões beta do kernel oficial. São sempre lançadas por David Jones e podem ser encontradas como patches em www.kernel.org/pub/linux/kernel/people/davej/patches.

Tanto as versões -ac quanto as -dj devem ser consideradas experimentais, contendo erros que podem até mesmo impedir que você consiga utilizar o kernel no qual foram aplicados.

    Próxima página

Páginas do artigo
   1. Entendendo os patches
   2. Como aplicar os patches no seu kernel
   3. Utilizando o script patch-kernel para aplicar os patches
   4. Conclusão e links
Outros artigos deste autor

VPN com FreeS/WAN

Instalando o Ocomon 1.40 no FreeBSD 6.0

Auditando senhas com John The Ripper

OpenVPN se comportando como PPTP

Leitura recomendada

Compilando um Kernel customizado a partir do código-fonte do Kernel do Debian 12

Compilando o Kernel do OpenBSD 4.3 (GENERIC)

Ksplice - atualizando o kernel sem necessidade de reboot

Compilação do kernel v3.x no CentOS e Debian

Guerra Infinita, uma análise da Ciência da Computação

  
Comentários
[1] Comentário enviado por wilbil em 04/01/2005 - 09:48h

muito bom artigo
me surpriendeu a quantidade de informacoes uteis nele

att
william

[2] Comentário enviado por m4sk4r4 em 04/01/2005 - 11:45h

Olá Pedro,

Muito bacana o artigo, Parabéns
me ajudou a entender o comando patch que até intão não
sabia como utilizar,

t+

[3] Comentário enviado por mpsnet em 04/01/2005 - 18:11h

ótimo artigo,
mas acho que vc esqueceu de comentar sobre a série -mm
ex: 2.6.10-mm1
pra que serve este patch ?

[4] Comentário enviado por pogo em 06/01/2005 - 09:00h

patches com sufixo -mm são patches lançados por andrew morton para a série oficial do kernel, lembrando que estes podem deixar o kernel bastante instável... vc pode encontrá- los aqui:
/pub/linux/kernel/people/akpm/

[5] Comentário enviado por marcolinux em 11/01/2006 - 15:02h

Tem coisas simples que se ninguém explica ficam complicadas!

Valeu pelo artigo !

[6] Comentário enviado por balani em 27/07/2006 - 22:51h

Muito bom o artigo, parabens, vlw pela info.

[7] Comentário enviado por balani em 07/08/2006 - 19:15h

Cara queria saber se tem como eu aplicar o patch de string do iptables no kernel sem precisar rodar o escript do patch-o-matic, estou tendo problemas em adiciona-lo ao meu kernel.

[8] Comentário enviado por himura_kenshin em 16/08/2006 - 09:46h

a minha sugestao, usem o ketchup que ira poupar uma grande quantiddade de tempo e trabalho... leiam este artigo http://amarok.kde.org/blog/archives/199-Using-Ketchup-to-manage-your-kernel-sources.html

.... excelente artigo o seu pogo... so estou dando uma alternativa aos mais preguicossos ou sem tempo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts