VMware Linux Server - Wie können Sie feststellen, ob Sie ein VM oder eine echte Hardware sind?


Antworten:


29

Verwenden Sie Standard-Linux-Tools, um die Hardware auf dem System zu überprüfen.

cat /proc/scsi/scsi

oder

ethtool -i eth0

oder

dmidecode | grep -i vmware

Wenn die Ausgabe dieser Befehle Hardware mit dem Herstellernamen "VMWare" anzeigt, befinden Sie sich auf einer VMWare-VM. Hier werden mehrere Befehle bereitgestellt, da die Systemkonfigurationen und -tools unterschiedlich sind.


12
Können Sie erklären, was diese Befehle bewirken, anstatt nur vage Befehle bereitzustellen?
Stefan Lasiewski

Vielen Dank. cat /proc/scsi/scsiist nett, weil es anscheinend überall verfügbar ist und keine neue Software installiert oder mit privilegierten Rechten ausgeführt werden muss.
Tiktak

@tiktak Ich sehe es nicht /proc/scsi/scsiauf meiner Debian 7-Box ...
Kyle Strand

1
Beachten Sie, dass dies nicht 100% zuverlässig ist. Beispielsweise werden AWS-Boxen nicht als VMs angezeigt. Siehe man virt-whatfür das heuristische Skript, das für diesen Erkennungszweck erstellt wurde (für RedHat / Fedora-Systeme) und für die damit verbundenen Vorsichtsmaßnahmen.
Wildcard

13
facter virtual 
xenu

zeigt an, dass es sich um eine VM handelt. Wenn es "physisch" zurückgegeben hat, ist das Gegenteil der Fall (keine VM), z. B .:

facter virtual
Physical

Dies ist jedoch ein nicht-standardmäßiges Spezialpaket .... aber ich mag es.
mdpc

1
@mdpc Es sollte auf jedem System vorhanden sein, das Puppet verwendet.
Michael Hampton

11

Es gibt eine praktische App namens virt-what . Ich habe es nicht mit VMWare verwendet, aber es hat gut mit Qemu funktioniert.


1
Leider hat das Binär-RPM zwei Abhängigkeiten, dmidecode und util-linux-ng, wenn es mit SuSE Commercial ausprobiert wird.
mdpc

10

Sie könnten in der Lage sein, eine Idee zu bekommen, indem Sie sich unter umschauen /sys. Zum Beispiel /sys/class/dmi/id/sys_vendorhat einen Wert von VMware, Inc..

Wenn es installiert ist, können Sie lshw verwenden . Der Befehl lshw -class systemgibt dies auf meinem System zurück:

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

Auf den SuSE-Instanzen, auf die ich Zugriff habe, existiert lshw nicht. Außerdem existiert / sys / class / dmi / ... nicht.
mdpc

6

Einige virtuelle Umgebungen benennen einige ihrer virtuellen Geräte mit etwas verräterischen Namen, z. B. VirtualBox mit einer Grafikkarte, die sich selbst "VirtualBox Display Adapter" nennt. Aber wenn Sie nach solchen suchen, sind Sie an eine bestimmte VM und möglicherweise an eine begrenzte Anzahl von Versionen gebunden.

Möglicherweise kann Ihr Code sehen, welche Art von Virtualisierung er einrichten könnte. Wenn dies vollständig fehlschlägt, befinden Sie sich möglicherweise in einer VM. Aber Sie könnten genauso leicht auf einer Box sein, die keine VM-fähige Hardware hat.


Ihre erste Antwort war die richtige. Überprüfen Sie die Gerätetreibernamen.
Izzy

4

Für Linux geben Sie Folgendes ein dmesg |grep DMI:

VIRTUAL HOST OUTPUT

[root @ myhost ~] # dmesg | grep DMI
DMI 2.3 vorhanden.
DMI: Virtuelle Maschine / Virtuelle Maschine der Microsoft Corporation, BIOS 090006 23.05.2012

[root @ myhost ~] # dmesg | grep -i virtual
DMI: Virtuelle Maschine / Virtuelle Maschine der Microsoft Corporation, BIOS 090006 23.05.2012
Paravirtualisierten Kernel auf nackter Hardware booten
input: Macintosh-Maustastenemulation als / devices / virtual / input / input1
scsi 0: 0: 0: 0: Msft Virtual Disk 1.0 mit Direktzugriff PQ: 0 ANSI: 4
Eingabe: Microsoft Vmbus HID-kompatible Maus als / devices / virtual / input / input4

FÜR PHYSICAL HOST BEISPIEL

[root @ backdev1 ~] # dmesg | grep DMI
DMI 2.5 vorhanden.
DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30.06.2011

1
Ein Hauptproblem bei Ihrer Lösung ist, dass dmesg den Kernel-Puffer ausliest und von begrenzter Größe ist. Wenn seit dem Neustart des Systems viele Nachrichten oder einige Zeit vergangen sind, sind diese Informationen nicht verfügbar.
mdpc

4

Es gibt viele Codes, mit denen Sie feststellen können, ob Sie sich in einer VM befinden oder nicht. Beginnen Sie mit der roten Pille und suchen Sie von dort aus. Dieses Papier bei Offensive Computing ist auch eine gute Lektüre.

Das ist, wenn keiner dieser einfachen oben funktioniert :)


Die erste Verbindung ist unterbrochen. Der zweite ist entweder kaputt oder langsam.
Wildcard

Du hast recht. Der Sand der Zeit hat sie aufgefressen ... Ich werde sehen, ob ich alternative Links finden kann.
Bill Weiss

Es ist Schande; "rote Pille" klang interessant. :)
Wildcard

1
Aktualisiert mit archive.org-Links.
Bill Weiss

3

Sie können auch den ersten Teil Ihrer Mac-Adresse hier durchsuchen und prüfen, ob sie einem der Virtualisierungsunternehmen zugewiesen ist.


Interessante Idee .... Ich denke, das funktioniert (solange ein Netzwerkgerät in der VM enthalten ist ;-))
mdpc

2
Wird nicht zuverlässig sein. In vielen Fällen kann der Mac auf einen beliebigen Wert gesetzt werden. Dies ermöglicht das Klonen des Mac des Originalcomputers beim Konvertieren in eine VM. Manche Software bindet ihre Lizenz an den Mac und oft ist es unmöglich, eine neue Lizenz zu erhalten (der Hersteller ist pleite oder die Kosten sind unerschwinglich).
Tonny

3

Virtuelle Geräte werden auch durch lspci- und / oder Plattengeräte-Informationen in / proc angezeigt:

lspci | grep -i vmware

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

2

Unter Linux werden Systeminformationen in / sys / devices / virtual / dmi / id / angezeigt. In meiner Antwort finden Sie ein praktisches Skript, mit dem Sie alle verfügbaren Informationen anzeigen können.

root nicht erforderlich.


1

Ich mochte keine dieser Lösungen, da normalerweise ein VMware-CD-ROM-Treiber oder ein Speichertreiber installiert ist, sodass dmesg dies für mich schnell bestätigt oder ablehnt.

[server @ user ~] $ dmesg | grep VMware
hda: VMware Virtual IDE-CD-ROM-Laufwerk, ATAPI-CD / DVD-ROM-Laufwerk
Hersteller: VMware Modell: Virtual Disk Rev: 1.0
Hersteller: VMware Modell: Virtual Disk Rev: 1.0
Hersteller: VMware Modell: Virtual Disk Rev: 1.0
Hersteller: VMware Modell: Virtual Disk Rev: 1.0
Hersteller: VMware Modell: Virtual Disk Rev: 1.0
Hersteller: VMware Modell: Virtual Disk Rev: 1.0
Hersteller: VMware Modell: Virtual Disk Rev: 1.0
VMware Memory Control-Treiber initialisiert

3
Dies funktioniert beim Start, aber später können Sie nicht garantieren, dass dmesg nicht gelöscht wurde oder übergelaufen ist.
Mattdm

Dies ist , was ich tun in der Regel, das heißt greppen dmesg
tpaul

1

Dies funktionierte besser für mich, da es mir spezifische Informationen über den Hersteller und den Produktnamen gibt.

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

Ausgabe auf Dell Server:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Ausgabe auf Virtualbox VM:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Ausgabe auf KVM / QEMU:

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

Dies ist ideal für Skripte, die diese zur besseren Identifizierung von Servern auswerten können. Wenn Sie jedoch Chef in Ihrer Infrastruktur verwenden, können Sie das Knotenattribut auf Virtualization -> systemdem Chef-Server überprüfen .


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.