Kernel live patching (Portuguê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:
- Obter a árvore de fontes do kernel que está sendo usado
- Preparar o patch no kernel
- 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
.
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.