Lançamento do MirageOS 4.0, uma plataforma para execução de aplicações no hipervisor

Após um ano e meio de desenvolvimento, foi publicado o lançamento do projeto MirageOS 4.0, que permite a criação de sistemas operacionais para uma aplicação, na qual a aplicação é entregue como um “unikernel” independente, capaz de rodar sem o uso de sistemas operacionais, um kernel de sistema operacional separado e quaisquer camadas. A linguagem OCaml é usada para desenvolver aplicativos. O código do projeto é distribuído sob a licença ISC gratuita.

Todas as funcionalidades de baixo nível inerentes ao sistema operacional são implementadas na forma de uma biblioteca anexada ao aplicativo. A aplicação pode ser desenvolvida em qualquer sistema operacional, após o qual é compilada em um kernel especializado (conceito unikernel), que pode ser executado diretamente em hipervisores Xen, KVM, BHyve e VMM (OpenBSD), em plataformas móveis, no forma de um processo em um ambiente compatível com POSIX ou em ambientes de nuvem Amazon Elastic Compute Cloud e Google Compute Engine.

O ambiente gerado não contém nada supérfluo e interage diretamente com o hipervisor sem drivers ou camadas de sistema, o que permite uma redução significativa de custos indiretos e aumento de segurança. Trabalhar com MirageOS se resume a três etapas: preparar a configuração com definição dos pacotes OPAM utilizados no ambiente, montar o ambiente e lançar o ambiente. Para garantir a operação em hipervisores, o Runtime é construído com base no kernel Solo5.

Apesar de os aplicativos e bibliotecas serem criados na linguagem OCaml de alto nível, os ambientes resultantes demonstram desempenho bastante bom e tamanho mínimo (por exemplo, o servidor DNS ocupa apenas 200 KB). A manutenção dos ambientes também é simplificada, pois caso seja necessário atualizar o programa ou alterar a configuração, basta criar e lançar um novo ambiente. Várias centenas de bibliotecas na linguagem OCaml são suportadas para realizar operações de rede (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, etc.), trabalhando com armazenamento e fornecendo processamento paralelo de dados.

Principais melhorias:

  • O processo de compilação de projetos e unikernel foi alterado. Em vez do sistema de montagem ocamlbuild usado anteriormente, o kit de ferramentas Dune e repositórios locais (monorepo) são usados. Para criar esses repositórios, foi adicionado um novo utilitário, opam-monorepo, que permite separar o gerenciamento de pacotes da construção do código-fonte. O utilitário opam-monorepo funciona como criar arquivos de bloqueio para dependências relacionadas ao projeto, carregar e extrair código de dependência e configurar o ambiente para usar o sistema de construção de dunas. A montagem real é realizada pelo kit de ferramentas Dune.
  • Um processo de construção repetível é fornecido. O uso de arquivos de bloqueio fornece um link para versões de dependência e permite repetir completamente o processo de construção com o mesmo código a qualquer momento.
  • Um novo processo de compilação cruzada foi implementado e é fornecida a capacidade de compilação cruzada para todas as plataformas de destino suportadas a partir de um ambiente de construção comum, que também faz compilação cruzada de dependências e bibliotecas que possuem ligações C, sem a necessidade de adicionar essas ligações a o pacote principal. A compilação cruzada é organizada usando espaços de trabalho fornecidos pelo sistema de construção dune.
  • Foi adicionado suporte para novas plataformas de destino, por exemplo, foi fornecida uma capacidade experimental de construir aplicativos independentes para execução em placas Raspberry Pi 4.
  • Foram feitos trabalhos para integrar partes do MirageOS em ecossistemas relacionados ao desenvolvimento na linguagem OCaml para simplificar a montagem de aplicativos na forma de unikernel. Muitos pacotes MirageOS foram portados para o sistema de construção dune. O utilitário opam-monorepo está disponível para instalação usando o gerenciador de pacotes opam e pode ser usado em projetos que usam o sistema de construção dune. Para manter patches que resolvem problemas de construção de dependências no dune, dois repositórios foram criados: dune-universe/opam-overlays e dune-universe/mirage-opam-overlays, que são habilitados por padrão ao usar o utilitário mirage CLI.
  • A integração do MirageOS com bibliotecas C e Rust foi simplificada.
  • Foi proposto um novo tempo de execução OCaml que permite dispensar libc (livre de libc).
  • É possível utilizar o serviço Merlin para integração com ambientes de desenvolvimento integrados padrão.

Fonte: opennet.ru

Adicionar um comentário