Savoir si l'on est sur une machine virtuelle ou non
Voici une commande qui permet de savoir si l'on se trouve sur une machine virtuelle ou physique. Celle-ci se base sur l'utilitaire dmidecode qui permet de récupérer des informations sur le matériel de votre ordinateur en les collectant depuis le BIOS.
Voici un exemple d'utilisation pour une machine virtuelle basée sur VMware :
$ dmidecode | grep Product
Product Name: VMware Virtual Platform
Et là, le résultat pour une machine virtuelle basée sur VirtualBox :
$ dmidecode | grep Product
Product Name: VirtualBox
Et enfin pour une vrai machine physique :
$ dmidecode | grep Product
Product Name: A8N-SLI DELUXE
14 Commentaires pour "Savoir si l'on est sur une machine virtuelle ou non"
Flux des commentaires de cet article Ajouter un commentaireOu :
"Product Name: Not Specified"
Pour une machine virtuelle sous KVM
@Fabien Engels : essaye peut-être en enlevant l'option -m1 du grep :
Enlever le m1 ne change rien, il y a qu'une seule ligne qui est matchée
Il est apparemment possible de forcer cette valeur. Par exemple sur un Kimsufi XXL d'OVH :
Enlever le -m1 change tout, j'ai 2 lignes qui sont matchées (pour ma machine physique) :
Avec le -m1 je n'ai que "System Product Name". Chouette info cela dit (:
@Kévin Hinault : c'est étrange, car dmidecode lit des informations contenues dans le Bios. OVH arrive donc à les modifier ...
@Colar : je vais enlever le -m1 des commandes, les résultats seront ainsi plus fiables pour tout le monde.
Ou bien sur un VPS Gandi :
18:43 kegeruneku@XXX ~# dmidecode | grep -m1 Product
/dev/mem: mmap: Bad address
zsh: exit 1 dmidecode | grep -m1 Product
Et voilà pour moi : (serveur physique @home)
dmidecode | grep Product
Product Name:
Product Name: 8I945GMH-RH
Obligé aussi d'enlever le -m1 sinon ça ne me donne que la premiere ligne ... vide d'information.
Et sur la machine physique :
18:52 kegeruneku@ZZZ ~# dmidecode | grep -m1 Product
Product Name: Alienware Aurora m9700
@Kegeruneku : quand on fait une recherche sur le message d'erreur "/dev/mem: mmap: Bad address" on trouve une série de résultats sur un bug de Xen. J'ai fait une recherche plus poussée du coup, et les VPS de Gandi tourne bien sous cette technologie.
Donc soit il s'agit d'un bug (ce qui me semble le plus probable), soit la technique exposée ici ne fonctionne pas pour les machines virtualisées par Xen.
@pti-seb :
Oui, je savais pour Xen, mais il me semble que ce n'est pas un bug mais une mesure de protection pour éviter que l'on accède au BIOS et a la mémoire totale du serveur physique, implémentée par Gandi (j'ai vérifié le noyau Gandi n'a plus grand chose a voir avec l'officiel Xen ...) et il est bien robuste au vu des exploits que j'ai testés sans succès
Cool l'astuce merci !
Bonjour,
Je me permet d'apporter ma « pierre à l'édifice » :
$ sudo dmidecode -s system-product-name
Le fait que les domU Xen n'affichent rien à part une erreur semble normal (du moins en paravirtualisation et ce pour l'instant !).
Cette astuce n'est viable que pour la virtualisation, pas la para-virtualisation.
Sous OpenVZ, j'ai simplement une erreur