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.
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:
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.
[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/
[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.