26 votes

Comment vérifier l'état de VT-x sur MacBook Pro

Je dois activer le VT-x sur mon MacBook Pro, mais je ne sais pas s'il est activé ou non. Exist-ils des commandes pour vérifier le statut, activer ou désactiver le VT-x?

Voici les spécifications de mon appareil :

MacBook Pro (Retina, 13 pouces, début 2015)

SE: OS X El Capitan 10.11.2
CPU: 2,7 GHz Intel Core i5
RAM: 8 Go 1867 MHz DDR3

25voto

user3439894 Points 52496

Selon Intel® Core™ i5-5257U Processor, il prend en charge la technologie Intel Virtualization (VT-x).

Vous pouvez également utiliser la commande suivante depuis Terminal :

sysctl -a | grep machdep.cpu.features

Si vous voyez VMX dans la sortie, alors le CPU prend en charge la fonction Intel VT-x.

Si vous ne voulez pas avoir à parcourir la liste des fonctionnalités du CPU et simplement vérifier si VMX est présent, utilisez : sysctl -a | grep -o VMX

D'après Mac Intel : Utilisation de la technologie de virtualisation VT-x :

La technologie Intel VT-x est activée sur les Mac Intel. Assurez-vous que votre Mac Intel dispose de toutes les mises à jour EFI disponibles installées ; mettez également à jour tout logiciel de virtualisation tiers.

Par conséquent, il n'y a aucune raison de vérifier le statut.

Quant à l'activation/désactivation, il n'existe pas d'interface utilisateur directe pour cela. Comme elle est activée par défaut, la seule façon que je puisse penser pour la désactiver serait de modifier le firmware EFI. Ce que je ne recommande pas de faire !

0 votes

Ce lien indique qu'il est possible de désactiver la virtualisation : support.apple.com/en-us/HT203296

2 votes

Je vois VMX dans ma sortie, mais je reçois toujours des erreurs d'Android Studio disant /dev/kvm n'est pas trouvé

0 votes

@zundi, le document Apple lié a été modifié après que j'ai écrit cette réponse, et c'est une raison pour laquelle la citation des parties pertinentes devrait être incluse dans une réponse. Alors que la dernière version du document contredit ce qu'il disait autrefois, je pense que la pertinence ici est le dernier système dans ce document, un Xserve (début 2009) et 7 ans plus tard lorsque cette réponse a été rédigée, les Macs alors actuels n'avaient pas le problème et en particulier celui mentionné dans la question initiale, le MacBook Pro (Retina, 13 pouces, début 2015). Le document indique maintenant en texte rouge "Cet article a été archivé et n'est plus mis à jour par Apple."

2voto

lx07 Points 2680

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;
}

0voto

Vikas Tikoo Points 1

À partir de Intel SDM Sec 24.6 Découverte du support pour VMX - Si CPUID.1:ECX.VMX[bit 5] = 1, alors l'opération VMX est prise en charge.

Programme Python pour vérifier cette feuille CPUID, en utilisant le package python-cpuid -

pip install python-cpuid

from cpuid import cpuid

# CPUID.1: ECX.VMX[bit 5] = 1
def chk_vmx():
    (_, _, ecx, _) = cpuid(0x1)
    if ecx & (1 << 4) != 0:
        print("Opération VMX prise en charge")
    else:
        print("Opération VMX non prise en charge")
if __name__ == "__main__":
    chk_vmx()

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X