La sortie du hyperviseur Bareflank 3.0 a eu lieu, offrant des outils pour un développement rapide d'hyperviseurs spécialisés. Bareflank est écrit en C++, prenant en charge C++ STL. L'architecture modulaire de Bareflank permet d'étendre facilement les fonctionnalités existantes de l'hyperviseur et de créer ses propres variantes d'hyperviseurs, tant fonctionnant directement sur le matériel (comme Xen) que s'exécutant dans un environnement logiciel donné (comme VirtualBox). Il est possible d'exécuter le système d'exploitation de l'environnement hôte dans une machine virtuelle séparée. Le code du projet est distribué sous licence LGPL 2.1.
Bareflank prend en charge Linux, Windows et UEFI sur des CPU Intel et AMD 64 bits. Pour la séparation matérielle des ressources machines virtuelles la technologie Intel VT-x est utilisée. À l'avenir, il est prévu d'ajouter la prise en charge de macOS et des systèmes BSD, ainsi que la possibilité de fonctionner sur une plateforme ARM64. De plus, le projet développe son propre pilote pour charger le VMM (Virtual Machine Manager), un chargeur ELF pour charger les modules VVM, et une application bfm pour gérer l'hyperviseur depuis l'espace utilisateur. Des outils sont fournis pour écrire des extensions utilisant des éléments définis dans les spécifications C++11/14, une bibliothèque de gestion d'exceptions (unwind), ainsi qu'une bibliothèque runtime propre pour prendre en charge l'utilisation de constructeurs/destructeurs et l'enregistrement de gestionnaires d'exceptions.
Basé sur Bareflank, un système de virtualisation nommé Boxy est en cours de développement, prenant en charge le démarrage de systèmes invités et permettant d'utiliser des machines virtuelles légères avec Linux et Unikernel pour exécuter des services ou applications spécialisés. Sous la forme de services isolés, on peut exécuter à la fois des web-services classiques et des applications ayant des exigences particulières en matière de fiabilité et de sécurité, complètement détachées de l'influence de l'environnement hôte (l'environnement hôte étant isolé dans une machine virtuelle séparée). Bareflank est également à la base de l'hyperviseur MicroV, conçu pour exécuter des machines virtuelles minimalistes (machine virtuelle une seule application), mettant en œuvre l'API KVM et convenant à la création de systèmes critiques.
Les principales nouveautés de Bareflank 3.0 :
- Passage à l'utilisation du concept de micro-noyau. Auparavant, l'hyperviseur avait une architecture monolithique, où l'élargissement des fonctionnalités nécessitait l'utilisation d'une API spéciale pour l'enregistrement des appels de rappel, ce qui compliquait le développement d'extensions en raison de son attachement au langage C++ et à l'architecture interne. La nouvelle architecture basée sur un micro-noyau implique la division de l'hyperviseur en composants de noyau, exécutés en mode ring zéro, et extensions, exécutées en mode ring trois (espace utilisateur). Les deux parties fonctionnent en mode racine VMX, tandis que tout le reste, y compris l'environnement hôte, fonctionne en mode non-racine VMX. Les extensions dans l'espace utilisateur implémentent la fonctionnalité du gestionnaire de machines virtuelles (VMM) et interagissent avec le noyau de l'hyperviseur via des appels système, pour lesquels la compatibilité ascendante est garantie. Les extensions peuvent être créées dans n'importe quel langage de programmation, y compris la prise en charge du langage Rust.
- Le passage à l'utilisation de notre propre bibliothèque BSL prenant en charge Rust et C++, qui a remplacé les bibliothèques externes libc++ et newlib, a été réalisé. L'abandon des dépendances externes a permis d'implémenter dans Bareflank un support natif pour la compilation sous Windows afin de simplifier le développement sur cette plateforme.
- Ajout du support pour les processeurs AMD. En outre, le développement de Bareflank se fait désormais sur un système avec un CPU AMD et est ensuite porté pour les CPU Intel.
- Le chargeur a été mis à jour avec le support de l'architecture ARMv8, l'adaptation de l'hyperviseur pour celle-ci étant prévue pour être finalisée dans une des prochaines versions.
- La conformité aux exigences de développement de systèmes critiques, formulées par les organisations AUTOSAR et MISRA, a été assurée.
Source : opennet.ru
