Alors que la réponse de @user3439894 indique que le firmware mac devrait activer VMX lors du démarrage, cela ne se produit pas sur mon MBP 2013 ou 2014. Cela signifie que Hyper-V (en bootcamp) ne fonctionne pas sans correction.
Pour vérifier si vmx est réellement activé, vous devez vérifier le registre CPU 0x3a - voir Activation de la fonction de virtualisation Intel VT. Cela ne peut être fait qu'en utilisant RDMSR qui nécessite des autorisations au niveau du noyau.
Si l'EFI ne configure pas cela correctement, la solution la plus simple est de corriger cela en utilisant rEFInd et de définir enable_and_lock_vmx
dans refind.conf sur 1
Lorsqu'il est défini sur vrai ou un synonyme, activez le bit VMX du CPU et verrouillez le MSR. Cette configuration est nécessaire pour certains hyperviseurs (notamment le Hyper-V de Microsoft) pour fonctionner correctement. L'activer sur d'autres CPUs n'aura, au mieux, aucun effet, et pourrait éventuellement planter l'ordinateur, donc activez-le à vos risques et périls!
Si votre firmware prend en charge l'activation de ces fonctionnalités, vous devriez l'utiliser à la place; cette option est fournie pour les utilisateurs dont le firmware ne fournit pas cette fonctionnalité. (Beaucoup de Macs manquent de cette configurabilité, par exemple.) La valeur par défaut est faux.
Cela fonctionne comme ceci (issu de la source de rEFInd mais peut être compilé séparément).
#include "../include/tiano_includes.h"
static VOID DoEnableAndLockVMX(VOID)
{
UINT32 msr = 0x3a;
UINT32 low_bits = 0, high_bits = 0;
// is VMX active ?
__asm__ volatile ("rdmsr" : "=a" (low_bits), "=d" (high_bits) : "c" (msr));
// enable and lock vmx if not locked
if ((low_bits & 1) == 0) {
high_bits = 0;
low_bits = 0x05;
msr = 0x3a;
__asm__ volatile ("wrmsr" : : "c" (msr), "a" (low_bits), "d" (high_bits));
}
} // VOID DoEnableAndLockVMX()
EFI_STATUS
EFIAPI
efi_main (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
DoEnableAndLockVMX();
return EFI_SUCCESS;
}