È stata rilasciata la versione 3.0 dell'hypervisor Bareflank, che offre strumenti per lo sviluppo rapido di hypervisor specializzati. Bareflank è scritto in C++ e supporta la C++ STL. L'architettura modulare di Bareflank consente di ampliare facilmente le funzionalità esistenti dell'hypervisor e di creare varianti personalizzate di hypervisor, sia in esecuzione direttamente sull'hardware (come Xen), sia avviate in ambienti software esistenti (come VirtualBox). È possibile eseguire il sistema operativo dell'ambiente host in una macchina virtuale separata. Il codice del progetto è distribuito con licenza LGPL 2.1.
Bareflank supporta Linux, Windows e UEFI su CPU Intel e AMD a 64 bit. Sono previste funzionalità di partizionamento hardware delle risorse. di macchine virtuali Viene utilizzata la tecnologia Intel VT-x. In futuro è prevista la supporto per sistemi macOS e BSD, nonché la possibilità di operare su piattaforme ARM64. Inoltre, il progetto sta sviluppando un proprio driver per il caricamento del VMM (Virtual Machine Manager), un bootloader ELF per il caricamento dei moduli VVM, e l'applicazione bfm per la gestione dell'ipervisor dallo spazio utente. Viene fornito un toolkit per la scrittura di estensioni utilizzando elementi definiti nelle specifiche C++11/14, una libreria di gestione dello stack delle eccezioni (unwind), nonché una propria libreria runtime per supportare l'uso di costruttori/distruttori e la registrazione dei gestori delle eccezioni.
Sulla base di Bareflank, è in fase di sviluppo il sistema di virtualizzazione Boxy, che supporta l'esecuzione di sistemi guest e consente di utilizzare macchine virtuali leggere con Linux e Unikernel per avviare servizi o applicazioni specializzati. In forma di servizi isolati, è possibile eseguire sia normali servizi web sia applicazioni con requisiti particolari di affidabilità e sicurezza, totalmente isolati dall'ambiente host (l'ambiente host viene isolato in una macchina virtuale separata). Bareflank è anche alla base dell'ipervisore MicroV, progettato per l'esecuzione di macchine virtuali minimaliste.la macchina virtuale uno o più applicazioni, implementando l'API KVM e adatto per la creazione di sistemi critici.
Le principali novità di Bareflank 3.0:
- Transizione verso l'uso della concezione del microkernel. In precedenza, l'hypervisor aveva un'architettura monolitica, che richiedeva l'uso di API speciali per registrare chiamate di callback per espandere le funzionalità, rendendo difficile lo sviluppo di estensioni a causa della dipendenza dal linguaggio C++ e dalla sua architettura interna. La nuova architettura basata sul microkernel prevede la suddivisione dell'hypervisor in componenti del kernel, eseguiti in modalità a zero livello di protezione, ed estensioni eseguite in modalità a terzo livello (spazio utente). Entrambi i componenti operano in modalità root VMX, mentre tutto il resto, incluso l'ambiente host, in modalità non root VMX. Le estensioni nello spazio utente implementano la funzionalità del gestore delle macchine virtuali (VMM) e interagiscono con il kernel dell'hypervisor tramite chiamate di sistema, per le quali è garantita la retrocompatibilità. Le estensioni possono essere create in qualsiasi linguaggio di programmazione, incluso il supporto per il linguaggio Rust.
- È stato effettuato il passaggio all'uso della propria libreria BSL con supporto per Rust e C++, che ha sostituito le librerie esterne libc++ e newlib. L'abbandono delle dipendenze esterne ha consentito di implementare in Bareflank il supporto nativo per la compilazione su Windows, semplificando lo sviluppo su questa piattaforma.
- Aggiunto il supporto per i processori AMD. Inoltre, lo sviluppo di Bareflank ora avviene su un sistema con CPU AMD e successivamente viene portato su CPU Intel.
- Nel bootloader è stato aggiunto il supporto per l'architettura ARMv8, l'adattamento del hypervisor per la quale sarà completato in una delle prossime versioni.
- Garantito il rispetto dei requisiti di sviluppo di sistemi critici per la sicurezza, formulati dalle organizzazioni AUTOSAR e MISRA.
Fonte: opennet.ru
