Les Applications de Virtualisation Ne Fonctionnent Pas : Que Faire ?

Lorsque vous installez une application de virtualisation sur une machine Windows sur laquelle Hyper-V ou des services associés sont installés, des erreurs peuvent souvent survenir. Les erreurs qui se produisent lorsque vous exécutez des VM sur des applications de virtualisation non-Hyper-V causent d’importants problèmes. Cet article de blog explique ce qui cause ces erreurs, comment les résoudre et comment exécuter d’autres applications de virtualisation sur un ordinateur avec Hyper-V.

Contexte et principe de fonctionnement

Après avoir installé VMware Workstation, VMware Player ou Oracle VirtualBox sur une machine Windows, vous pouvez rencontrer des erreurs lors du démarrage d’une VM dans ces applications de virtualisation. Les erreurs surviennent même si des VM Hyper-V ne sont pas en cours d’exécution à ce moment-là. Vous pouvez installer VMware Workstation et VirtualBox, et exécuter des VM VMware et des VM VirtualBox sur le même ordinateur, mais pas simultanément. Qu’est-ce qui cause ce problème avec Hyper-V? Examinons de plus près.

VMware Workstation, VMware Player et VirtualBox sont des hyperviseurs de type 2, tandis que Hyper-V est un hyperviseur de type 1. Un hyperviseur de type 2 est installé sur le système d’exploitation qui s’exécute sur le matériel. Un hyperviseur de type 1 est installé au-dessus du matériel. Tous les hyperviseurs nécessitent des extensions de virtualisation du processeur, qui sont des ensembles d’instructions pour la virtualisation matérielle – Intel VT-x ou AMD-V. Hyper-V prend le contrôle des extensions de virtualisation lorsque Windows démarre. Ces extensions de virtualisation ne sont pas disponibles pour VMware Workstation et VirtualBox lorsque Windows se charge. Seul un composant logiciel peut utiliser Intel VT-x ou AMD-V à la fois.

Cette incompatibilité est causée par Hyper-V car les extensions de virtualisation ne sont pas exposées aux hyperviseurs de type 2 installés sur une machine Windows où le rôle Hyper-V est activé.

Erreurs de VMware Workstation:

VMware Workstation et Hyper-V ne sont pas compatibles. Supprimez le rôle Hyper-V du système avant d’exécuter VMware Workstation.

VMware Workstation et Device/Credential Guard ne sont pas compatibles. VMware Workstation peut être exécuté après avoir désactivé Device/Credential Guard.

Erreurs de VirtualBox:

BSOD, tel que BSOD avec SYSTEM_SERVICE_EXCEPTION

VT-x n’est pas disponible (VER_VMX_NO_VMX). E_FAIL (0x80004005).

A VirtualBox VM works too slowly and uses the paravirtualisation (emulation) mode.

La situation la plus intéressante est lorsque qu’un utilisateur n’installe pas Hyper-V et rencontre toujours l’une des erreurs mentionnées précédemment lors de l’utilisation de VMware Workstation ou VirtualBox. L’erreur se produit lorsque les mises à jour automatiques de Windows sont activées. Avec les mises à jour (Windows 10 v1607 et les versions appropriées de Windows Server à partir de Windows Server 2016), certaines nouvelles fonctionnalités liées à Hyper-V sont installées et activées automatiquement sans le consentement de l’utilisateur de Windows. Ces fonctionnalités sont Device Guard et Credential Guard. Les mises à jour de Windows corrigent les vulnérabilités connues mais peuvent ajouter des problèmes et détruire une configuration de travail. C’est pourquoi de nombreux utilisateurs n’aiment pas les mises à jour automatiques.

Device Guard est un groupe de fonctionnalités de sécurité dans Windows. L’idée de mettre en œuvre cette fonctionnalité est de renforcer l’exécution de code malveillant. Device Guard est disponible dans Windows 10, Windows Server 2019 et Windows Server 2019. Les principaux prérequis sont: UEFI en mode natif et Secure Boot activé.

Credential Guard est une fonctionnalité visant à minimiser l’impact des attaques si du code malveillant est déjà en cours d’exécution en isolant les secrets système et utilisateur pour rendre la compromission plus difficile.

Le mode sécurisé virtuel (VSM) est une fonctionnalité permettant d’exploiter les extensions de virtualisation du processeur qui sécurisent les données dans une région isolée de la mémoire. HVCI est l’intégrité de code protégée par hyperviseur. LSA est l’Autorité de sécurité locale.

La sécurité basée sur la virtualisation (VBS) est une classe de technologies qui utilise des extensions de virtualisation, y compris VSM, pour fournir une sécurité dans Windows. Le rôle Hyper-V est nécessaire pour faire fonctionner ces fonctionnalités (les outils de gestion Hyper-V ne sont pas nécessaires).

L’hyperviseur (Hyper-V) se charge d’abord, puis le système d’exploitation (Windows) se charge. Hyper-V fournit une couche d’abstraction entre le matériel et le système d’exploitation. Un VSM permet le marquage de processus critiques spécifiques et de la mémoire utilisée par eux car ils appartiennent à un système d’exploitation indépendant distinct contrôlé par Hyper-V. Le principe est similaire à l’isolement de deux VM exécutées sur un hôte Hyper-V où chaque VM ne peut utiliser que les ressources matérielles qui lui sont attribuées.

Note : Si vous avez besoin d’un hyperviseur de type 1 de VMware, utilisez VMware ESXi et l’environnement VMware vSphere. En savoir plus dans ces articles de blog : Hyper-V vs VMware, VMware Workstation vs VMware Player, et Comment installer ESXi sur Hyper-V.

Explorons ensemble comment résoudre le problème d’incompatibilité entre Hyper-V et d’autres applications de virtualisation en détail.

Méthode 1 : Désinstaller Hyper-V dans l’interface graphique

Vérifiez les informations système sur la configuration Windows en exécutant la commande suivante dans CMD :

msinfo32.exe

A System Information window opens. On the following screenshot, you see that Hyper-V is enabled (a hypervisor has been detected), and Device Guard Virtualization-based security is running. Now you can remove these features.

Vous devez être conscient que les fonctionnalités suivantes liées à Hyper-V ne seront plus disponibles après avoir supprimé Hyper-V :

  • Hyper-V
  • Credential Guard et Device Guard
  • Plateforme de machine virtuelle
  • Boîte de dialogue Windows
  • WSL2.

Supprimez la fonctionnalité Hyper-V dans l’interface graphique (GUI) en utilisant le Panneau de configuration, l’Assistant Ajout de rôles et de fonctionnalités.

Sous Windows 10, ouvrez Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis cliquez sur Activer ou désactiver les fonctionnalités Windows.

L’onglet « Fonctionnalités Windows » s’ouvre.

Désélectionnez la case à cocher Hyper-V, et cliquez sur OK.

Pour terminer le retrait de Hyper-V, redémarrez l’ordinateur.

Les étapes pour supprimer Hyper-V sur Windows 10 et Windows Server 2016 sont similaires.

Dans Windows Server 2016, ouvrez Gestionnaire de serveur et cliquez sur Gérer > Supprimer les rôles et fonctionnalités. Dans le Assistant Supprimer les rôles et fonctionnalités, allez à l’étape Rôles de serveur, et désélectionnez Hyper-V. Cliquez sur Suivant à chaque étape pour continuer. Un redémarrage est requis pour terminer la suppression du rôle Hyper-V.

Méthode 2 : Utiliser PowerShell pour Désactiver la Fonctionnalité Hyper-V

Vous pouvez effectuer une action similaire en utilisant l’interface de ligne de commande plutôt que l’interface graphique.

Connectez-vous à PowerShell en tant qu’Administrateur, et exécutez la commande pour désactiver la fonctionnalité Hyper-V :

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor

Redémarrez votre machine hôte :

shutdown -r -t 0

Méthode 3 : Désactiver Hyper-V en Utilisant BCDedit

L’idée derrière cette méthode est d’éditer les données de configuration de démarrage et de désactiver le démarrage de Hyper-V sans désinstaller le rôle Hyper-V.

Connectez-vous à PowerShell en tant qu’Administrateur, ou exécutez la commande à partir d’une invite de commande élevée pour désactiver Hyper-V :

bcdedit /set hypervisorlaunchtype off

Si vous avez besoin de réactiver Hyper-V et de remettre la valeur par défaut, exécutez cette commande :

bcdedit /set hypervisorlaunchtype auto

Pour plus de contrôle et de commodité, désactivez le démarrage rapide dans Windows 10. Ouvrez l’Éditeur du Registre Windows et allez à :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power

Définissez le paramètre HiberbootEnabled sur 0

Si vous avez besoin d’utiliser des machines virtuelles Hyper-V parfois, créez deux entrées pour un chargeur de démarrage Windows : une pour démarrer Windows avec Hyper-V et une autre pour démarrer Windows sans Hyper-V. Ensuite, sélectionnez l’option nécessaire avant de démarrer Windows. Cette approche vous évite d’avoir à exécuter des commandes dans PowerShell manuellement chaque fois que vous avez besoin d’activer ou de désactiver Hyper-V.

bcdedit /copy “{current}” /d “No Hyper-V”

“L’entrée a été copiée avec succès vers {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.”

Copiez et collez votre valeur à la place de xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

bcdedit /set “{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}” hypervisorlaunchtype off

Redémarrez l’ordinateur.

Une fois que votre ordinateur a redémarré, vous devriez voir deux options dans le Gestionnaire de démarrage Windows.

Si vous souhaitez supprimer l’entrée de démarrage No Hyper-V, utilisez l’option /delete pour bcdedit.

Obtenez la liste des entrées de démarrage actuelles :

bcdedit /v

A list of all entries with their identifiers is displayed in the output. Copy the ID of the entry which you want to remove, and run the following command:

bcdedit /delete “{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”

Méthode 4 : Désinstaller le Rôle Hyper-V dans PowerShell avec dism.exe

L’idée derrière cette méthode consiste à utiliser l’outil de gestion et de maintenance des images de déploiement dans l’interface de ligne de commande pour désinstaller Hyper-V.

Connectez-vous à CMD ou PowerShell en tant qu’Administrateur. Exécutez la commande suivante pour désinstaller Hyper-V:

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

Si vous souhaitez installer Hyper-V à nouveau, utilisez cette commande:

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

Méthode 5 : Désactiver la sécurité basée sur la virtualisation dans Windows

Cette méthode est utilisée pour désactiver Device Guard et Credential Guard, qui sont des fonctionnalités liées à Hyper-V.

Ouvrez l’éditeur de stratégies de groupe pour une machine locale. L’éditeur de stratégies de groupe est disponible dans Windows 10 Pro, Entreprise et Éducation. Dans l’invite de commande, exécutez gpedit.msc

Allez à Stratégie de l’ordinateur local > Configuration de l’ordinateur > Modèles d’administration > Système > Device Guard

Double-cliquez sur Activer la sécurité basée sur la virtualisation.Par défaut, l’état de cette configuration est Non configuré.

Dans la fenêtre qui s’ouvre, sélectionnez Désactivé et appuyez sur OK pour enregistrer les paramètres, puis fermez la fenêtre.

Modifier le Registre en alternative

Dans Windows 10 Home, où l’éditeur de stratégies de groupe n’est pas présent, vous pouvez désactiver la sécurité basée sur la virtualisation dans le registre Windows.

Créez une sauvegarde du registre Windows avant de modifier les paramètres du registre pour éviter les erreurs et les problèmes.

Ouvrez l’éditeur de registre. Exécutez regedit dans la ligne de commande qui devrait être ouverte en tant qu’Administrateur.

Allez à HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard

Créez l’entrée EnableVirtualizationBasedSecurity si cette entrée est absente. Pour créer une nouvelle entrée, faites un clic droit sur un endroit vide dans le DeviceGuard répertoire, et dans le menu contextuel, cliquez sur Nouveau > Valeur DWORD (32 bits). Entrez le EnableVirtualizationBasedSecurity nom pour cette entrée de registre. Par défaut, les données définies pour cette entrée devraient être 0 (voir l’image ci-dessous). Vous pouvez double-cliquer sur le EnableVirtualizationBasedSecurity et définir 0 manuellement.

Allez à HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa

Créez une nouvelle entrée de registre dans le Lsa répertoire. Faites un clic droit sur un espace vide dans la fenêtre de l’éditeur de registre. Dans le menu contextuel, cliquez sur Nouveau > Valeur DWORD (32 bits).

Entrez le LsaCfgFlags nom pour cette valeur. Cette valeur doit être définie sur 0.

Fermez l’éditeur de registre et redémarrez votre ordinateur.

Vous pouvez exécuter les commandes suivantes dans PowerShell (en tant qu’Administrateur) pour désactiver Device Guard et Credential Guard lors du prochain redémarrage de Windows.

Montez une partition de système UEFI sur le lecteur X: (sélectionnez un volume inutilisé) :

mountvol X: /s

Copiez le C:\Windows\System32\SecConfig.efi vers X:\EFI\Microsoft\Boot\SecConfig.efi avec une option pour remplacer le fichier si le fichier existe. Ce fichier est une image de démarrage pour l’outil de configuration de sécurité Windows.

copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y

Créez une nouvelle option dans le menu de démarrage avec l’ID {0cb3b571-2f2e-4343-a879-d86a476d7215} et le DebugTool nom :

bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader

Définissez l’option de démarrage que vous avez créée à l’étape précédente pour démarrer à \EFI\Microsoft\Boot\SecConfig.efi:

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.efi”

Définissez le Gestionnaire de démarrage Windows pour que la nouvelle entrée soit la valeur par défaut pour le prochain redémarrage. Après cela, redémarrez votre Windows devrait revenir au démarrage normal.

bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}

Définissez le chargeur de démarrage pour transmettre les options DISABLE-LSA-ISO,DISABLE-VBS au SecConfig.efi fichier lorsque le chargeur de démarrage lance le fichier.

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS

Définir la partition du disque de démarrage sur le lecteur X:

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:

Démonter le lecteur X: du système:

mountvol X: /d

Méthode 6: Mettre à jour VMware Workstation

Si vous avez Windows 10 version 2004 (20H1) build 19041 ou une version ultérieure sur votre ordinateur physique, vous pouvez mettre à niveau VMware Workstation à VMware Workstation 15.5.6 ou une version ultérieure et exécuter des machines virtuelles VMware sur votre ordinateur Windows sans désactiver/désinstaller Hyper-V et la sécurité basée sur la virtualisation (VBS), y compris Device Guard et Credential Guard.

En raison de nombreuses plaintes de clients, Microsoft et VMware ont décidé de développer un projet conjoint qui adopte les API Microsoft Windows Hypervisor Platform (WHP) pour permettre aux hyperviseurs de type 2, tels que VMware Workstation, de s’exécuter sur un hôte où Hyper-V est activé. Ces API permettent aux applications de gérer les ressources du processeur, de lire/écrire des valeurs de registre, d’interrompre l’opération du processeur et de générer des interruptions.

VMware Workstation avant la version 15.5.5 utilise un Virtual Machine Monitor (VMM) qui a un accès direct à un processeur et à des ensembles d’instructions de virtualisation (Intel VT-x ou AMD-V). Un VMM fonctionne en mode privilégié. Si les fonctionnalités de sécurité basées sur la virtualisation sont activées sur un hôte Windows, alors une couche d’hyperviseur supplémentaire (Hyper-V) est ajoutée entre le matériel et Windows. Hyper-V a un accès direct aux fonctionnalités du processeur utilisées pour la virtualisation matérielle, et le VMM n’a pas d’accès aux fonctionnalités de virtualisation du processeur.

VMware a apporté des modifications à l’architecture de VMware Workstation 15.5.6 pour permettre à leur produit d’utiliser les API de Microsoft WHP et de résoudre les problèmes de compatible. VMM peut maintenant fonctionner au niveau utilisateur (et non pas en mode privilégié) en utilisant les WHP APIs et exécuter des VMs sans accès direct aux extensions de virtualisation du CPU. Ce mode est appelé User Level Monitor (ULM) ou un mode Host VBS. Si vous désinstallez les fonctionnalités liées à Hyper-V sur votre hôte Windows, VMware Workstation le détecte automatiquement et VMM est passé à l’accès direct des extensions de virtualisation du CPU (en mode privilégié).

La Plateforme Windows Hypervisor (WHP) doit être installée sur une machine physique Windows où Hyper-V est activé pour permettre à VMware Workstation de tourner des VMs de VMware sur cette machine. Installez la fonctionnalité Plateforme Windows Hypervisor dans le Panneau de contrôle en cliquant sur Activer ou désactiver les fonctionnalités Windows.

Ainsi, vous pouvez mettre à jour Windows 10 et VMware Workstation sur votre machine physique pour les versions qui supportent l’exécution des fonctionnalités liées à Hyper-V et des VMs de VMware Workstation sur la même machine.

Limitations du mode Host VBS :

  • La Plateforme Windows Hypervisor n’est pas prise en charge sous Windows Server 2016 et les autres versions et éditions de Windows Server. En conséquence, VMware Workstation ne peut pas exécuter de VMs en mode Host VBS sur les machines physiques fonctionnant sous Windows Server.
  • La virtualisation nested n’est pas prise en charge. Vous ne pouvez pas exécuter de VMs nested (VM à l’intérieur de VMs de VMware Workstation).
  • Les VMs de VMware peuvent fonctionner plus lentement.
  • Les compteurs de performance de surveillance x86 (PMC) ne sont pas pris en charge.
  • La capacité des clés de protection du mode utilisateur (PKU) n’est pas disponible.
  • Les capacités de mémoire transactionnelle restreinte (RTM) et d’élision de verrouillage matériel (HLE) ne sont pas disponibles.

VirtualBox et Hyper-V

VirtualBox peut coexister avec Hyper-V, Device Guard et Credential Guard à partir de VirtualBox 6.0. VirtualBox 6 peut fonctionner avec les API Hyper-V de manière similaire à VMware Workstation sur Windows 10 v1803 x64.

Ces fonctionnalités doivent être activées sur une machine hôte Windows pour permettre à VirtualBox de fonctionner avec les API Hyper-V:

  • Hyper-V
  • Plateforme hyperviseur Windows

Si la fonctionnalité Hyper-V est activée, mais que la fonctionnalité Plateforme hyperviseur Windows est désactivée, dans Système > Accélération dans le résumé de configuration de la machine virtuelle, vous pouvez voir que le mode de paravirtualisation est activé. Si vous essayez de démarrer une machine virtuelle, VirtualBox vous rappelle que vous devez activer la Plateforme hyperviseur Windows et affiche le message d’erreur.

Le message d’erreur:
WHvCapabilityCodeHypervisorPresent est FALSE ! Assurez-vous d’avoir activé la fonctionnalité ‘Plateforme hyperviseur Windows’.

(VERR_NEM_NOT_AVAILABLE).

VT-x n’est pas disponible (VERR_VMX_NO_VMX).

Si les fonctionnalités Hyper-V requises dans Windows sont activées, les informations suivantes sont affichées pour la machine virtuelle dans la section Système:

Accélération : VT-x/AMD-v, Pagination imbriquée, Paravirtualisation Hyper-V

La machine virtuelle devrait démarrer avec succès. Une icône de tortue verte est affichée dans le panneau inférieur de la fenêtre VirtualBox. Cette icône indique qu’une machine virtuelle fonctionne en mode paravirtualisation Hyper-V plutôt qu’en mode natif, qui est généralement utilisé par VirtualBox lors de l’interaction directe avec les extensions de virtualisation du processeur. Les performances des machines virtuelles VirtualBox se dégradent sur les machines sur lesquelles Hyper-V et les fonctionnalités associées sont activées. Vous pouvez désactiver ou supprimer Hyper-V comme expliqué précédemment pour exécuter des machines virtuelles sur VirtualBox en mode natif en utilisant directement les extensions de virtualisation du CPU.

Lisez également la comparaison entre VirtualBox et Hyper-V et la comparaison entre VirtualBox et VMware.

Conclusion

Les nouvelles fonctionnalités de Windows telles que la sécurité basée sur la virtualisation (Device Guard et Credential Guard), Windows Sandbox, WSL qui utilisent le moteur Hyper-V causent de nombreux problèmes aux utilisateurs, administrateurs et développeurs de logiciels utilisant d’autres hyperviseurs tels que VMware Workstation, VirtualBox, QEMU et Google Android Emulator sur les machines Windows. Il existe deux approches pour résoudre ces problèmes d’incompatibilité : désactiver/désinstaller Hyper-V ou utiliser de nouvelles versions d’applications de virtualisation qui prennent en charge le travail avec les API Hyper-V, telles que l’API Windows Hypervisor Platform fournie par Microsoft.

Exécution de VM sur VirtualBox, VMware Workstation et autres hyperviseurs sur des machines avec Hyper-V en utilisant des API peut dégrader les performances des VM non-Hyper-V. La sauvegarde des données est cruciale pour les cas où les applications de virtualisation échouent. Si vous n’avez toujours pas choisi la meilleure solution de sauvegarde Hyper-V pour votre environnement, envisagez NAKIVO Backup & Replication. La solution offre une sauvegarde robuste, une protection contre les rançongiciels, la reprise après sinistre et plus encore. Téléchargez l’édition gratuite pour voir la solution en action.

Source:
https://www.nakivo.com/blog/virtualization-applications-with-hyper-v-device-guard-and-credential-guard/