Kernel live patching (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Kernel live patching. Data da última tradução: 2020-06-26. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

O Kernel Live Patching ou KLP ("Aplicação de patches durante o uso do kernel" em uma tradução livre) permite correções rápidas no espaço de kernel sem reiniciar o sistema inteiro. Desde a versão 4.0, os patches (modificações) relacionados foram aceitos[1][2][3], de forma que é possível configurar seu kernel para ativar esse recurso. Geralmente, o KLP é alcançado por meio das seguintes etapas:

  1. Obter a árvore de fontes do kernel que está sendo usado
  2. Preparar o patch no kernel
  3. Aplicar algumas ferramentas (veja a seguir) para ajudar a transformar e carregar o patch

Alguns projetos forneciam os utilitários de aplicação de patches durante o uso antes do suporte oficial do KLP, como o ksplice da Oracle, o #kGraft da SuSE e o #kpatch da Red Hat. Eles implementaram a funcionalidade KLP de diferentes maneiras. O conjunto funcional minimalista de patches inseridas no kernel mainstream foi derivado do kpatch e do kGraft.

kpatch

Instalação

Instale kpatchAUR para um kernel apropriado e kpatch-gitAUR para ferramentas de userspace.

Você também pode compilar manualmente um kernel que possui suporte ao uso kpatch, habilitando CONFIG_LIVEPATCH, CONFIG_DEBUG_INFO e CONFIG_KALLSYMS.

Nota: Lembre-se de atualizar o gerenciador de boot após você instalar o kernel especial.

Uso

Depois que os dois pacotes forem criados com sucesso e após a reinicialização, você pode

$ export ROOTDIR=some/dir/aur/linux-kpatch/src/linux-x-y
$ cd $ROOTDIR

Suponha que você tenha feito algumas modificações e tenha um patch algum.patch (contra a árvore de fontes após um makepkg -o, não o kernel padrão da versão x.y) em o diretório de trabalho. Inicie o utilitário kpatch,

$ kpatch-build -s $(pwd) -v $(pwd)/vmlinux algum.patch

Este comando envolve duas compilações do kernel, a original e a corrigida, portanto, pode levar um tempo para ser concluído. Após o término da compilação, deve haver um módulo kpatch-algum.ko no mesmo diretório. E depois,

# insmod kpatch-algum.ko

deve resolver a questão.

Para mais informações, consulte as páginas man ou o repositório no GitHub.

kGraft

KGraft não foi testado no ambiente do Arch.

Veja também