Rilascio di MirageOS 4.0, una piattaforma per l'esecuzione di applicazioni sull'hypervisor

Dopo un anno e mezzo di sviluppo, è stato pubblicato il rilascio del progetto MirageOS 4.0, che consente la creazione di sistemi operativi per un'unica applicazione, in cui l'applicazione viene consegnata come un “unikernel” autonomo, in grado di funzionare senza l'uso di sistemi operativi, un kernel del sistema operativo separato ed eventuali livelli. Il linguaggio OCaml viene utilizzato per sviluppare applicazioni. Il codice del progetto è distribuito con la licenza ISC gratuita.

Tutte le funzionalità di basso livello inerenti al sistema operativo sono implementate sotto forma di libreria allegata all'applicazione. L'applicazione può essere sviluppata su qualsiasi sistema operativo, dopo di che viene compilata in un kernel specializzato (concetto unikernel), che può essere eseguito direttamente sugli hypervisor Xen, KVM, BHyve e VMM (OpenBSD), su piattaforme mobili, in sotto forma di un processo in un ambiente conforme a POSIX o in ambienti cloud Amazon Elastic Compute Cloud e Google Compute Engine.

L'ambiente generato non contiene nulla di superfluo e interagisce direttamente con l'hypervisor senza driver o livelli di sistema, il che consente una significativa riduzione dei costi generali e una maggiore sicurezza. Il lavoro con MirageOS si riduce a tre fasi: preparazione della configurazione con la definizione dei pacchetti OPAM utilizzati nell'ambiente, assemblaggio dell'ambiente e avvio dell'ambiente. Per garantire il funzionamento sugli hypervisor, Runtime è costruito sulla base del kernel Solo5.

Nonostante il fatto che le applicazioni e le librerie siano create nel linguaggio OCaml di alto livello, gli ambienti risultanti dimostrano prestazioni abbastanza buone e dimensioni minime (ad esempio, il server DNS occupa solo 200 KB). Anche la manutenzione degli ambienti è semplificata, poiché se è necessario aggiornare il programma o modificare la configurazione, è sufficiente creare e lanciare un nuovo ambiente. Sono supportate diverse centinaia di librerie nel linguaggio OCaml per eseguire operazioni di rete (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, ecc.), lavorare con l'archiviazione e fornire elaborazione parallela dei dati.

Miglioramenti chiave:

  • Il processo di compilazione di progetti e unikernel è stato modificato. Al posto del sistema di assemblaggio ocamlbuild utilizzato in precedenza, vengono utilizzati il ​​toolkit dune e i repository locali (monorepo). Per creare tali repository è stata aggiunta una nuova utility, opam-monorepo, che rende possibile separare la gestione dei pacchetti dalla creazione dal codice sorgente. L'utilità opam-monorepo funziona, ad esempio creando file di blocco per le dipendenze relative al progetto, caricando ed estraendo il codice delle dipendenze e configurando l'ambiente per utilizzare il sistema di compilazione dune. L'assemblaggio vero e proprio viene eseguito dal toolkit dune.
  • Viene fornito un processo di compilazione ripetibile. L'utilizzo dei file di blocco fornisce un collegamento alle versioni delle dipendenze e consente di ripetere completamente il processo di compilazione con lo stesso codice in qualsiasi momento.
  • È stato implementato un nuovo processo di compilazione incrociata e viene fornita la possibilità di eseguire la compilazione incrociata per tutte le piattaforme di destinazione supportate da un ambiente di compilazione comune, che esegue anche la compilazione incrociata di dipendenze e librerie che dispongono di collegamenti C, senza la necessità di aggiungere questi collegamenti a il pacchetto principale. La compilazione incrociata è organizzata utilizzando gli spazi di lavoro forniti dal sistema di costruzione delle dune.
  • È stato aggiunto il supporto per nuove piattaforme target, ad esempio è stata fornita la capacità sperimentale di creare applicazioni autonome da eseguire su schede Raspberry Pi 4.
  • È stato svolto il lavoro per integrare parti di MirageOS negli ecosistemi relativi allo sviluppo nel linguaggio OCaml per semplificare l'assemblaggio di applicazioni sotto forma di unikernel. Molti pacchetti MirageOS sono stati portati sul sistema di build dune. L'utilità opam-monorepo è disponibile per l'installazione utilizzando il gestore pacchetti opam e può essere utilizzata in progetti che utilizzano il sistema di compilazione dune. Per mantenere le patch che risolvono i problemi con la creazione di dipendenze in dune, sono stati creati due repository: dune-universe/opam-overlays e dune-universe/mirage-opam-overlays, che sono abilitati per impostazione predefinita quando si utilizza l'utilità CLI mirage.
  • L'integrazione di MirageOS con le librerie C e Rust è stata semplificata.
  • È stato proposto un nuovo runtime OCaml che permette di fare a meno di libc (libc-free).
  • È possibile utilizzare il servizio Merlin per l'integrazione con ambienti di sviluppo integrato standard.

Fonte: opennet.ru

Aggiungi un commento