Kernel live patching (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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