HermiTux: um unikernel binário compatível com aplicativos Linux

Hermitux

Um grupo de pesquisadores da Virginia Polytechnic University (EUA), Universidade Técnica Qualcomm e Aachen Rhine-Westphalia (Alemanha) eles estão desenvolvendo o núcleo leve Hermitux, correspondendo ao paradigma unikernel.

HermiTux é destina-se a permitir a execução de aplicativos diretamente no hipervisor sem a necessidade de camadas adicionais, que fornece compatibilidade binária com aplicativos Linux no nível ABI.

O código HermiTux Está escrito na linguagem de programação C e é distribuído sob a licença BSD.

HermiTux fornece um ambiente de sistema operacional mínimo com seu próprio kernel (unikernel), que consome muito menos recursos do que ao criar ambientes baseados em um kernel Linux normal.

Com isso permite que você inicie aplicativos rapidamente no hipervisor: o tempo de início não excede 0,1 segundos.

Nos testes de desempenho HermiTux, aproximadamente 3% atrasou em ambientes com um kernel Linux regular, devido à sobrecarga de encaminhamento de E / S para o lado do host.

O consumo de memória no ambiente de teste foi de 9 MB, que é 10 vezes menor do que quando se usa o kernel Linux (o consumo do Docker era de cerca de 2 MB devido ao uso de um kernel comum com o ambiente host sem usar virtualização completa).

Sobre Hermitux

Hermitux se destaca por ter a capacidade de executar aplicativos não modificados criado para Linux, este é feito através do suporte para o formato ELF, a implementação de chamadas de sistema Linux e a emulação de sistemas de arquivos virtuais.

No estágio atual de desenvolvimento do HermiTux, este implementa 83 chamadas de sistema. No total, o kernel Linux oferece mais de 350 chamadas de sistema, mas apenas uma pequena parte delas é usada em aplicações reais (para cobrir 90% dos programas de distribuições regulares, basta implementar 200 chamadas de sistema).

Para reduzir atrasos durante o processamento das chamadas do sistema, um mecanismo opcional é implementado para redefinir (reescrever) as chamadas do sistema para chamar funções de kernel típicas.

Para aplicativos estaticamente relacionados, é possível substituir instruções syscall por chamadas de função em um arquivo executável.

Para aplicativos relacionados dinamicamente, a substituição é feita no nível da biblioteca padrão.

Além disso, ferramentas foram preparadas para analisar as chamadas de sistema envolvidas em arquivos executáveis que permitem coletar uma imagem HermiTux mínima que inclui apenas o código necessário para processar apenas as chamadas do sistema usadas no aplicativo.

Hermitux

Recursos do HermiTux

Hermitux usa um hipervisor leve baseado em KVM que carrega o binário Linux junto com uma camada mínima do sistema operacional em uma única máquina virtual de espaço de endereço. Em tempo de execução, as chamadas de sistema feitas pelo aplicativo são capturadas pelo kernel HermiTux.

Opcionalmente, HermiTux fornece um mecanismo para reescrever a invocação de chamadas do sistema em chamadas de função de kernel comuns, reduzindo significativamente a latência de chamada do sistema.

Do ponto de vista da proteção, a referida modularidade permiteeEm vez de filtrar, chamadas de sistema não utilizadas (por exemplo, via seccomp) para excluí-los completamente do kernel.

O aplicativo é executado em um espaço de endereço compartilhado (o HermiTux foi projetado para ser executado em um único hipervisor de aplicativo).

Suporte básico de threading (Pthreads Embedded) é fornecido.

Como sistema de arquivos, MiniFS é proposto, em que os arquivos são colocados na RAM (disco RAM) e alguns elementos dos sistemas de arquivos virtuais (/ dev / zero, proc / cpuinfo, etc.) são emulados.

A pilha TCP / IP é baseada no projeto LWIP e uma versão modificada do projeto Musl é usada como uma biblioteca C padrão.

O HermiTux não requer nenhuma remontagem de aplicativos e permite que você execute arquivos executáveis ​​compilados (relacionados estática e dinamicamente) e aplicativos em linguagens interpretadas (Python, Lua, etc.).

Link do projeto.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.