FERRAMENTAS LINUX: O suporte genérico de inicialização compactada EFI preparado antes do Kernel Linux 6.1

segunda-feira, 26 de setembro de 2022

O suporte genérico de inicialização compactada EFI preparado antes do Kernel Linux 6.1

 

O desenvolvedor do kernel Linux Ard Biesheuvel tem trabalhado em uma série de patches que implementa o suporte genérico de inicialização compactada da EFI que pode ser facilmente usado por arquiteturas como AArch64, LoongArch e RISC-V.

Na fila do EFI, o "próximo" branch do Linux antes da janela de mesclagem do Linux 6.1 que será aberta no início de julho está o suporte genérico de inicialização compactada EFI. Biesheuvel explicou a motivação e o raciocínio para este trabalho:

Arquiteturas relativamente modernas, como arm64 ou RISC-V, não implementam um kernel de autodescompactação e deixam para o bootloader descompactar a imagem compactada antes de executá-la. Para inicialização bare metal, essa política faz sentido, pois uma imagem de autodescompactação duplica essencialmente muito trabalho de preparação complicado para criar um mapeamento 1:1 e configurar o tempo de execução C e descobrir ou inferir onde a DRAM reside a partir de árvores de dispositivos ou outras tabelas de firmware.

Para inicialização EFI, a situação é um pouco diferente: o ponto de entrada EFI é chamado com um mapeamento em cache 1:1 cobrindo toda a DRAM já ativa e com uma pilha, um heap, um mapa de memória e serviços de inicialização para carregar e iniciar imagens. Isso significa que é bastante trivial implementar um wrapper de autodescompactação para inicialização EFI de maneira genérica e reutilizá-lo em arquiteturas que implementam inicialização EFI.

Neste estágio, o código está conectado com sucesso para ARM64, LoongArch e RISC-V, mas requer pouco trabalho específico de arquitetura e pode ser adaptado para arquiteturas adicionais posteriormente. Ou o novo EFI_ZBOOT resume assim:

Crie a imagem inicializável como um aplicativo EFI que carrega a imagem real do kernel em formato compactado e a descompacta na memória antes de executá-la por meio de chamadas de serviço de inicialização LoadImage/StartImage EFI. Para compatibilidade com carregadores não EFI, a carga útil também pode ser descompactada e executada pelo carregador, desde que o carregador implemente o algoritmo de descompactação e que a inicialização não EFI seja suportada pela imagem encapsulada. (O algoritmo de compactação usado é descrito no cabeçalho da imagem zboot)

O Gzip / LZ4 / LZMA / LZO / XZ / Zstd estão entre os algoritmos de compressão possíveis. O recurso está sob a nova opção EFI_ZBOOT e permite a assinatura da imagem também para UEFI Secure Boot.

Os interessados ​​em mais detalhes sobre esse suporte genérico de inicialização compactada para EFI podem encontrar os patches enfileirados agora em EFI.git antes da próxima janela de mesclagem do Kernel Linux 6.1.






Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário