Qual é o propósito dos patches do kernel do linux?

21

Para cada versão do kernel Linux, há um arquivo de patch disponível para download. Por exemplo, o linux-3.12.22 possui um patch 3.12.22 correspondente .

Qual é o objetivo desse patch? Para corrigir sempre o kernel correspondente antes de compilá-lo ou atualizar uma versão anterior do kernel com o kernel que o patch corresponde (3.12.22, neste caso)?

Elena
fonte

Respostas:

31

O objetivo é economizar muito tráfego.

O tarball do Linux tem cerca de 75 MB, enquanto os patches geralmente têm apenas alguns KB.

Portanto, se você compilar seu próprio kernel e atualizar para cada nova versão secundária no dia em que for lançado, em vez de baixar novamente um novo tarball de 75 MB para cada atualização secundária, basta baixar (por exemplo) o tarball principal de uma determinada versão uma vez e depois o patch para a versão que você realmente deseja. Quando há uma atualização, você reutiliza o tarball principal já baixado.

linux-3.14.tar.xz+ patch-3.14.{1..n}.xzestá abaixo de 100 MB no total.

linux-3.14.tar.xz+ linux-3.14.{1..n}.tar.xzé várias vezes 100 MB.

Não há desvantagem no patch, o resultado final é idêntico, a menos que você faça algo errado.

frostschutz
fonte
9
Como está escrito, isso não responde à pergunta. Para ser explícito, o objetivo do patch é aplicá-lo à versão n-1 da fonte "atualizá-lo" para a versão n. A vantagem é que economiza muito tráfego, como a resposta descreve.
David Richerby
1
Eu não sou um falante nativo. Mas a vantagem me parece fraca demais. Salvar largura de banda / tráfego é importante para qualquer servidor. Tem propósito.
23614 frostschutz
A parte que você não respondeu explicitamente é: "Sempre corrigir o kernel correspondente antes de compilá-lo ou atualizar uma versão anterior do kernel com o kernel que o patch corresponde (3.12.22, neste caso)? " O patch-3.12.22 deve atualizar da versão 3.12.21 para a .22, para não ser aplicado às fontes 3.12.22 antes de compilá-las.
David Richerby
Patches são geralmente para .0, por exemplo VERSION = 3 PATCHLEVEL = 12 -SUBLEVEL = 0 +SUBLEVEL = 22. Seria chato de passar por 20 manchas ...
frostschutz
Como esse esquema de economia de tráfego seria melhor do que, por exemplo, ter um clone git do repositório e funcionar git pullquando uma nova versão é lançada?
Ruslan
5

Estes são chamados "patchset". Patchset são grupos de patches que atendem à mesma funcionalidade, estão relacionados ou implementam uma função em etapas. Estes, em particular, são a diferença entre uma revisão principal do kernel (XY) e as revisões secundárias / de manutenção subsequentes (XY Z ) com várias propostas:

  • Economize espaço nos servidores.
  • Economize largura de banda.
  • Sendo facilmente aplicável e distribuível

Lembre-se de que esses conjuntos de patches são incrementais. Você primeiro deve aplicar o patch .1 antes do patch .2 e depois aplicar o .3.

Braiam
fonte