Savoir si l'on est sur une machine virtuelle ou non


Virtualization Linux
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.

Server Sun

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 commentaire
  •  

    Ou :
    "Product Name: Not Specified"

    Pour une machine virtuelle sous KVM :)

    RépondreRépondre
    Fabien Engels , le 5 octobre 2009 à 09:40
  •  

    @Fabien Engels : essaye peut-être en enlevant l'option -m1 du grep :

    dmidecode | grep Product

    RépondreRépondre
    pti-seb , le 5 octobre 2009 à 13:50
  •  

    Enlever le m1 ne change rien, il y a qu'une seule ligne qui est matchée :)

    RépondreRépondre
    Fabien Engels , le 5 octobre 2009 à 14:04
  •  

    Il est apparemment possible de forcer cette valeur. Par exemple sur un Kimsufi XXL d'OVH :

    # dmidecode | grep -m1 Product -B 1
    Manufacturer: OVH
    Product Name: KSXXL

    RépondreRépondre
    Kévin Hinault , le 5 octobre 2009 à 17:06
  •  

    Enlever le -m1 change tout, j'ai 2 lignes qui sont matchées (pour ma machine physique) :

    # dmidecode | grep Product
    Product Name: System Product Name
    Product Name: P5KPL-VM

    Avec le -m1 je n'ai que "System Product Name". Chouette info cela dit (:

    RépondreRépondre
    Colar , le 5 octobre 2009 à 18:29
  •  

    @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.

    RépondreRépondre
    pti-seb , le 5 octobre 2009 à 18:39
  •  

    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

    RépondreRépondre
    Kegeruneku , le 5 octobre 2009 à 18:44
  •  

    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.

    RépondreRépondre
    Droïde , le 5 octobre 2009 à 18:46
  •  

    Et sur la machine physique :

    18:52 kegeruneku@ZZZ ~# dmidecode | grep -m1 Product
    Product Name: Alienware Aurora m9700

    RépondreRépondre
    Kegeruneku , le 5 octobre 2009 à 18:55
  •  

    @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.

    RépondreRépondre
    pti-seb , le 5 octobre 2009 à 19:15
  •  

    @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 :)

    RépondreRépondre
    Kegeruneku , le 5 octobre 2009 à 19:20
  •  

    Cool l'astuce merci !

    RépondreRépondre
    gangan , le 6 octobre 2009 à 02:11
  •  

    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 !).

    RépondreRépondre
    Guillaume , le 6 octobre 2009 à 22:57
  •  

    Cette astuce n'est viable que pour la virtualisation, pas la para-virtualisation.
    Sous OpenVZ, j'ai simplement une erreur :)

    aline# dmidecode | grep Product
    /dev/mem: Operation not permitted

    RépondreRépondre
    Mogui , le 11 octobre 2009 à 08:56
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum