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: 81.650 ]

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


Como aplicar os patches no seu kernel



Antes de começar, é recomendado que você faça um backup dos arquivos do seu kernel. Um:

# tar czvf kernel-antigo.tar.gz /usr/src/linux

Já resolve o problema ;).

A aplicação de patches no kernel é uma coisa extremamente simples de ser feita, sem segredo nenhum.

A forma de como você vai fazer isso depende de como o patch foi criado, especificamente de qual diretório o patch foi feito. Em geral, os patches são feitos no nível mais alto do diretório do código fonte do kernel. A forma que explicarei aqui leva isto em consideração.

Por exemplo, vamos admitir que você está usando o kernel (e tem o seu código fonte localmente) 2.6.9 e quer aplicar o patch 2.6.9-ac16.bz2. Primeiro, salve o arquivo no diretório /usr/src. Depois, mude para o diretório /usr/src/linux-2.6.9 e faça o seguinte:

# bzip2 -dc /usr/src/2.6.9-ac16.bz2 | patch -p1 -s --dry-run

O comando acima faz apenas um teste para ver se o patch seria aplicado sem erro nenhum (não aplicando o patch ainda), o que pode salvar a sua vida, pois pode ser extremamente difícil remover um patch que não foi aplicado por inteiro. Este teste é feito pela opção --dry-run. O output gerado por este comando é mostrado muito rápido para que você consiga ler e ver se alguma coisa saiu errado. Para resolver isto, diga ao patch para que só mostre as mensagens de erro usando a opção -s. Se você tem certeza de que tudo vai sair certo, pode aplicar o patch sem esta opção. A opção -p1 mostra na tela apenas a localização relativa dos arquivos modificados ao invés de mostrar sua localização global.

Agora que você já sabe que o patch vai ser aplicado corretamente, faça o seguinte:

# bzip2 -dc /usr/src/2.6.9-ac16.bz2 | patch -p1

Este comando vai aplicar o patch "de verdade" no código do kernel. Pronto! Agora o patch já está instalado. Para você usar o kernel com as "melhorias" do patch, é só recompilar. Porém, nem todos os patches são tão fáceis assim de serem aplicados ao kernel. Por exemplo, os prepatches do Linus não são incrementais, então o prepatch 2.6.7-pre2 deve ser aplicado no tarball descompactado do kernel 2.6.6 e não em um kernel com o prepatch 2.6.7-pre1 aplicado. Então, para você poder aplicar o prepatch 2.6.7-pre2, deve remover (como será descrito mais adiante) o patch 2.6.7-pre1 do seu kernel atual. Os patches -ac (lançados por Alan Cox) seguem a mesma lógica.

Página anterior     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

Instalando o Ocomon 1.40 no FreeBSD 6.0

OpenVPN se comportando como PPTP

VPN com FreeS/WAN

Auditando senhas com John The Ripper

Leitura recomendada

OpeniBoot - Seu iPhone com Linux!

Como Compilar Kernel Novo para o Sabayon Linux

Recompilando o Kernel no Ubuntu Linux 9.04

Compilação do kernel passo-a-passo

Kernel atualizado no Debian - Parte II

  
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