J'ai un ordinateur portable avec Intel Core i5 M 450 @ 2,40 GHz qui a apparemment VT-x mais pas VT-d. J'ai Ubuntu 12.04 32 bits, mais j'aimerais avoir un Linux 64 bits basé sur un terminal virtuel. Comment savoir si la fonction VT-x du BIOS est activée sans avoir à redémarrer?
Vous pouvez utiliser rdmsr de msr-tools pour lire le registre IA32_FEATURE_CONTROL (adresse x3a). Le module du noyau msr doit être chargé pour cela.
Sur la plupart des systèmes Linux:
Sudo modprobe msr
Sudo rdmsr 0x3a
Valeurs 3
et 5
signifie qu'il est activé.
Vous pouvez utiliser
Sudo kvm-ok
de cpu-checker . Sur Intel, qui a la logique la plus compliquée, kvm-ok vérifie que si le bit 0 de rdmsr 0x3a
(le bit de verrouillage) est défini, le bit 2 (qui permet d'utiliser virt en dehors du mode SMX, quelque chose à voir avec un démarrage sécurisé) doit également être défini. Si la sortie de rdmsr 0x3a
est tout sauf ( 1 ou 3 , vous pourrez utilisez kvm. kvm définira le bit 2 du msr si nécessaire, je m'attends à ce que virtualbox et le reste aient la même logique.
Installez cpu-checker et exécutez "kvm-ok"
Si le CPU est activé, vous devriez voir quelque chose comme:
INFO: /dev/kvm exists
KVM acceleration can be used
autrement
INFO: /dev/kvm does not exist
HINT: Sudo modprobe kvm_intel
INFO: Your CPU supports KVM extensions
INFO: KVM (vmx) is disabled by your BIOS
HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
and then hard poweroff/poweron your system
KVM acceleration can NOT be used
Sous linux, vous pouvez vérifier cpuinfo:
cat /proc/cpuinfo| egrep "vmx|svm"
vous pouvez utiliser:
Sudo apt-get update
Sudo apt-get install cpu-checker
kvm-ok
Une approche simple pour confirmer que Vt-D est activé dans le BIOS passe par le système Linux. Si le VT-D est activé dans le BIOS et Iommu=on
dans le grub.cfg
puis la structure de dossiers ci-dessous est créée automatiquement pour contenir les périphériques virtuels.
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
Alors que si l'une des options VT-D ou Iommu n'est pas configurée/activée, la structure de dossiers mentionnée ci-dessus n'est pas créée. Ce comportement est confirmé dans CentOS 7.4 et Ubuntu. Espérons que ce comportement soit similaire pour les autres systèmes d'exploitation, mais cela devra être confirmé.
systool -m kvm_intel -v | grep nested
systool -m kvm_AMD -v | grep nested
L'un d'eux devrait produire:
nested = "1"
Ce qui indique qu'il est activé.
J'ai trouvé que la réponse de scai ne fonctionne pas sur mes systèmes AMD Ryzen.
Cela fonctionne cependant très bien pour moi, même sur Intel:
if systool -m kvm_AMD -v &> /dev/null || systool -m kvm_intel -v &> /dev/null ; then
echo "AMD-V / VT-X is enabled in the BIOS/UEFI."
else
echo "AMD-V / VT-X is not enabled in the BIOS/UEFI"
fi
(systool
se trouve dans le package sysfsutils
sur la plupart des distributions.)
Pour l'IOMMU VT-D/AMD d'Intel, j'ai trouvé cette solution:
if compgen -G "/sys/kernel/iommu_groups/*/devices/*" > /dev/null; then
echo "AMD's IOMMU / Intel's VT-D is enabled in the BIOS/UEFI."
else
echo "AMD's IOMMU / Intel's VT-D is not enabled in the BIOS/UEFI"
fi
(Cela a même fonctionné pour moi si les paramètres du noyau iommu ne sont pas définis.)