web-dev-qa-db-fra.com

VMware Linux Server - comment savoir si vous êtes un vm ou un vrai matériel?

Une question intéressante. Je me suis connecté à un hôte Linux (probablement SuSE). Existe-t-il un moyen de dire par programme que je suis un hôte VM ou non?

Supposons également que les vmtools ne sont pas installés.

46
mdpc

Utilisez des outils Linux standard pour inspecter le matériel du système.

cat /proc/scsi/scsi

ou

ethtool -i eth0

ou

dmidecode | grep -i vmware

Si la sortie de ces commandes affiche du matériel avec un nom de fabricant "VMWare", vous êtes sur une machine virtuelle VMWare. Plusieurs commandes sont fournies ici car les configurations système et les outils diffèrent.

29
Greg Cain
facter virtual 
xenu

indique qu'il s'agit d'une machine virtuelle. S'il est retourné "physique", l'inverse est vrai (pas une VM), par exemple:

facter virtual
Physical
13
user155575

Il existe une application pratique qui pourrait aider à s'appeler virt-what . Je ne l'ai pas utilisé avec VMWare, mais cela a bien fonctionné avec Qemu.

11
Raynet

Vous pourriez être en mesure de vous faire une idée en regardant autour sous /sys. Par exemple /sys/class/dmi/id/sys_vendor a une valeur de VMware, Inc..

S'il est installé, vous pouvez utiliser lshw . La commande lshw -class system renvoie ceci sur mon système:

server1
    description: Computer
    product: VMware Virtual Platform
    vendor: VMware, Inc.
    version: None
    serial: VMware-...
    width: 64 bits
    capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
10
Zoredache

Certains environnements virtuels nomment certains de leurs périphériques virtuels avec des noms qui sont un peu révélateurs, par exemple, VirtualBox présentant une carte graphique qui s’appelle "VirtualBox Display Adapter". Mais la recherche de ces liens vous relie à un VM et éventuellement à une gamme étroite de versions).

Il pourrait être possible pour votre code de voir quel type de virtualisation il pourrait mettre en place. Si cela échoue complètement, vous pourriez être dans une machine virtuelle. Mais vous pourriez tout aussi bien être sur une boîte qui n'a pas de matériel compatible avec VM.

6
staticsan

Il y a beaucoup de code pour détecter si vous êtes dans un VM ou pas. Commencez par pilule rouge et recherchez à partir de là. Ce document à Informatique offensive est également une bonne lecture.

C'est si aucun de ces plus faciles ne fonctionne :)

4
Bill Weiss

Pour Linux, vous tapez dmesg |grep DMI:

SORTIE Hôte VIRTUEL

 [root @ myhost ~] # dmesg | grep DMI 
 DMI 2.3 présent. 
 DMI: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090006 23/05/2012 
 
 [root @ myhost ~] # dmesg | grep -i virtual 
 DMI: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090006 23/05/2012 
 Démarrage du noyau paravirtualisé sur le matériel nu 
 entrée: émulation du bouton de la souris Macintosh en tant que /devices/virtual/input/input1[.____. E5Escsi 0: 0: 0: 0: disque virtuel Msft à accès direct 1.0 PQ: 0 ANSI: 4 
 entrée: souris compatible Microsoft Vmbus HID en tant que /devices/virtual/input/input4

POUR L'EXEMPLE D'Hôte PHYSIQUE

 [root @ backdev1 ~] # dmesg | grep DMI 
 DMI 2.5 présent. 
 DMI: IBM System x3650 M3 - [7945AC1] -/90Y4784, BIOS - [D6E153AUS-1.12 ] - 30/06/2011 
4
gabo34

Vous pouvez également rechercher la première partie de votre adresse mac ici et voir si elle est répertoriée comme affectée à l'une des sociétés de virtualisation.

3
Zypher

Les périphériques virtuels seront également révélés par lspci et/ou les informations sur les périphériques de disque dans/proc:

lspci | grep -i vmware

grep -i vmware /proc/scsi/scsi /proc/ide/*/model
3
Heath

Sous Linux, les informations système sont révélées dans/sys/devices/virtual/dmi/id /. Voir ma réponse ici pour un script pratique pour vous montrer toutes les informations disponibles.

racine non requise.

2
Mike S

Cela a mieux fonctionné pour moi car il me donne des informations spécifiques sur le fabricant et le nom du produit.

dmidecode -t system|grep 'Manufacturer\|Product'

Sortie sur serveur Dell:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Sortie sur Virtualbox VM:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Sortie sur KVM/QEMU:

Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)

C'est très bien pour les scripts qui peuvent les analyser pour une meilleure identification des serveurs ... mais si vous utilisez Chef dans votre infrastructure, vous pouvez vérifier l'attribut de nœud Virtualization -> system sur le serveur du chef.

1
user751528

Je n'ai aimé aucune de ces solutions, car il y a généralement un pilote de CD-ROM VMware ou un pilote de mémoire installé, donc dmesg le confirme ou le refuse rapidement pour moi.

 [serveur @ utilisateur ~] $ dmesg | grep VMware 
 hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive 
 Fournisseur: VMware Model: Virtual disk Rev: 1.0 
 Vendor: VMware Model: Virtual disk Rev: 1.0 
 Vendor: VMware Model: Virtual disk Rev: 1.0 
 Vendor: VMware Model: Disque virtuel Rév: 1.0 
 Fournisseur: Modèle VMware: Disque virtuel Rév: 1.0 
 Fournisseur: Modèle VMware: Disque virtuel Rév: 1.0 
 Fournisseur: Modèle VMware: Disque virtuel Rév: 1.0 
 Pilote de contrôle de mémoire VMware initialisé 
1
Greg