Guia do Linux/Iniciante+Intermediário/Kernel e módulos/Aplicando Patches no kernel

Origem: Wikilivros, livros abertos por um mundo aberto.

Aplicando Patches no kernel[editar | editar código-fonte]

Patches são modificações geradas pelo programa diff em que servem para atualizar um programa ou texto. Este recurso é muito útil para os desenvolvedores, pois podem gerar um arquivo contendo as diferenças entre um programa antigo e um novo (usando o comando diff) e enviar o arquivo contendo as diferenças para outras pessoas. As pessoas interessadas em atualizar o programa antigo, podem simplesmente pegar o arquivo contendo as diferenças e atualizar o programa usando o patch. Isto é muito usado no desenvolvimento do kernel do GNU/Linux em que novas versões são lançadas frequentemente e o tamanho kernel completo compactado ocupa cerca de 18MB. Você pode atualizar seu kernel pegando um patch seguinte a versão que possui em ftp://ftp.kernel.org/. Para aplicar um patch que atualizará seu kernel 2.6.23 para a versão 2.6.24 você deve proceder da seguinte forma:

    • Descompacte o código fonte do kernel 2.6.23 em /usr/src/linux ou certifique-se que existe um link simbólico do código fonte do kernel para /usr/src/linux.
    • Copie o arquivo patch-2.6.24.gz de ftp://ftp.kernel.org/ para /usr/src.
    • Use o comando gzip -dc patch-2.6.24|patch -p0 -N -E para atualizar o código fonte em /usr/src/linux para a versão 2.6.24.

Alternativamente você pode primeiro descompactar o arquivo patch-2.6.24.gz com o gzip e usar o comando patch -p0 -N -E <patch-2.6.24 para atualizar o código fonte do kernel. O GNU/Linux permite que você obtenha o mesmo resultado através de diferentes métodos, a escolha é somente sua. Caso deseja atualizar o kernel 2.6.20 para 2.6.24, como no exemplo acima, você deverá aplicar os patches em sequência (do patch 2.6.20 ao 2.6.24). Vale a pena observar se o tamanho total dos patches ultrapassa ou chega perto o tamanho do kernel completo, pois dependendo da quantidade de alterações pode ser mais viável baixar diretamente a nova versão.