La sociĂ©tĂ© Microsoft a annoncĂ© l'ouverture du code source de la couche de para-virtualisation OpenHCL et du moniteur de machines virtuelles OpenVMM, spĂ©cifiquement dĂ©veloppĂ© pour faciliter le fonctionnement d'OpenHCL. Le code d'OpenVMM et d'OpenHCL est Ă©crit en Rust et distribuĂ© sous licence MIT. OpenVMM se rapporte aux hyperviseurs de niveau 2 fonctionnant dans le mĂȘme anneau de protection que le noyau du systĂšme d'exploitation, Ă l'instar de produits tels que VirtualBox et VMware Workstation. Il prend en charge le fonctionnement sur des systĂšmes hĂŽtes basĂ©s sur Linux (x86_64), Windows (x86_64, Aarch64) et macOS (x86_64, Aarch64), en utilisant les API de virtualisation KVM, SHV (Microsoft Hypervisor), WHP (Windows Hypervisor Platform) et Hypervisor.framework fournies par ces systĂšmes d'exploitation.
Parmi les fonctionnalités prises en charge par OpenVMM :
- Démarrage en modes UEFI et BIOS, démarrage direct du noyau Linux ;
- Prise en charge de la para-virtualisation basée sur les pilotes Virtio (virtio-fs, virtio-9p, virtio-net, virtio-pmem)
- Prise en charge de la para-virtualisation basée sur VMBus (storvsp, netvsp, vpci, framebuffer) ;
- Ămulation de vTPM, NVMe, UART, chipset i440BX + PIIX4, IDE HDD, PCI et VGA ;
- Backends pour le passage de la vidéo, des périphériques d'entrée, de la console, du stockage et de l'accÚs réseau ;
- Gestion via interface de ligne de commande, console interactive, gRPC et ttrpc.
OpenHCL est positionnĂ© comme un environnement avec des composants de para-virtualisation (paravirtuel), fonctionnant au-dessus de l'hyperviseur OpenVMM. La caractĂ©ristique clĂ© des systĂšmes de virtualisation basĂ©s sur OpenVMM et OpenHCL est que les composants de para-virtualisation s'exĂ©cutent non pas du cĂŽtĂ© du systĂšme hĂŽte, mais dans une machine virtuelle avec le systĂšme invitĂ©. L'isolation de la couche de para-virtualisation du systĂšme d'exploitation invitĂ© est assurĂ©e par l'hyperviseur de niveau 2 OpenVMM. Dans ce cadre, OpenHCL peut ĂȘtre considĂ©rĂ© comme un microprogramme virtuel s'exĂ©cutant Ă un niveau de privilĂšges supĂ©rieur Ă celui du systĂšme d'exploitation invitĂ©.
La sĂ©paration du systĂšme invitĂ© et des composants d'OpenHCL est rĂ©alisĂ©e Ă l'aide du concept de niveaux de confiance virtuels (VTL, Virtual Trust Level), pour lesquels peuvent ĂȘtre utilisĂ©s Ă la fois des mĂ©canismes logiciels et des technologies matĂ©rielles telles qu'Intel TDX (Trust Domain Extensions), AMD SEV-SNP (Secure Encrypted Virtualization-Secure Nested Paging) et ARM CCA (Confidential Compute Architecture). Pour l'exĂ©cution des composants d'OpenHCL, une version allĂ©gĂ©e du noyau Linux est utilisĂ©e, n'incluant que les composants minimaux nĂ©cessaires au fonctionnement d'OpenVMM.

OpenHCL peut fonctionner sur des plateformes x86-64 et ARM64, et prend en charge les extensions Intel TDX, AMD SEV-SNP et ARM CCA pour une isolation supplĂ©mentaire. OpenHCL comprend un ensemble de services, de pilotes et d'Ă©mulateurs utilisĂ©s pour organiser l'accĂšs au matĂ©riel, assurer le fonctionnement des appareils virtuels cĂŽtĂ© invitĂ© et Ă©muler des dispositifs matĂ©riels (par exemple, il est possible d'Ă©muler une puce pour le stockage des clĂ©s cryptographiques â vTPM).
Pour la traduction d'accĂšs au matĂ©riel cĂŽtĂ© invitĂ©, des pilotes existants compatibles avec la paravirtualisation sont utilisĂ©s, ou un attachement direct des dispositifs Ă la machine virtuelle peut ĂȘtre effectuĂ©, ce qui permet de transfĂ©rer les systĂšmes invitĂ©s existants dans l'environnement basĂ© sur OpenHCL sans modifications. De plus, OpenHCL inclut des composants pour la diagnostic et le dĂ©bogage, machines virtuelles, rĂ©alisĂ©s Ă l'aide d'extensions pour garantir des calculs confidentiels.
Contrairement à l'existant projet open-source COCONUT-SVSM (Secure VM Service Module), fournissant des services et des dispositifs émulés pour des systÚmes invités exécutés en environnements confidentiels des machines virtuelles (CVM, Confidential Virtual Machine), OpenHCL permet d'utiliser des interfaces standard dans les systÚmes invités, tandis que COCONUT-SVSM nécessite la mise en place d'interactions spéciales avec SVSM, des modifications dans le systÚme invité et l'utilisation de pilotes séparés.
Les applications du paravirtualiseur OpenHCL incluent des scénarios tels que la migration de systÚmes existants vers des accélérateurs matériels Azure Boost sans modifications de l'image disque du systÚme invité ; l'exécution de systÚmes invités existants dans des machines virtuelles offrant des calculs confidentiels (par exemple sur la base d'Intel TDX et AMD SEV-SNP) ; et l'organisation du démarrage vérifié des machines virtuelles en utilisant le mode UEFI Secure Boot et vTPM.
Il convient de noter que le projet OpenVMM est axĂ© sur l'utilisation avec OpenHCL et n'est pas encore prĂȘt pour une application autonome sur des systĂšmes d'hĂ©bergement pour des dĂ©ploiements par des utilisateurs finaux. Parmi les problĂšmes d'OpenVMM qui entravent son utilisation dans des environnements d'hĂ©bergement au sens traditionnel, sans l'association Ă OpenHCL, on mentionne : une mauvaise documentation de l'interface de gestion ; un manque d'optimisation adĂ©quate des performances des backends pour les stockages, les rĂ©seaux et la vidĂ©o ; l'absence de support pour certains pilotes (par exemple, disques IDE et souris PS/2) ; aucune garantie de stabilitĂ© des API et des fonctionnalitĂ©s. Cependant, l'association d'OpenVMM et d'OpenHCL a dĂ©jĂ atteint un niveau d'industrialisation et est utilisĂ©e par Microsoft sur sa plateforme Azure (SKU Azure Boost) pour faire fonctionner plus de 1,5 million de machines virtuelles.
Source : opennet.ru
