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


Eine interessante Frage. Ich habe mich in einen Linux (wahrscheinlich SuSE) Host eingeloggt. Gibt es eine Möglichkeit, programmgesteuert zu sagen, dass ich ein VM-Host bin oder nicht?

Nehmen Sie außerdem an, dass die vmtools nicht installiert sind.


44
2017-09-15 23:21


Ursprung


Überprüfen Sie diese Antwort auch: unix.stackexchange.com/a/32605/103980 - Muhamed Huseinbašić


Antworten:


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. Mehrere Befehle werden hier bereitgestellt, da sich Systemkonfigurationen und Tools unterscheiden.


28
2018-06-10 19:24



Können Sie erklären, was diese Befehle tun, anstatt nur vage Befehle zu geben? - Stefan Lasiewski
Vielen Dank. cat /proc/scsi/scsi Es ist nett, weil es überall verfügbar zu sein scheint und keine neue Software installieren oder mit privilegierten Rechten laufen muss. - tiktak
@tiktak Ich sehe nicht /proc/scsi/scsi auf meiner Debian 7 Box ... - Kyle Strand
Beachten Sie, dass dies nicht 100% zuverlässig ist. Zum Beispiel erscheinen AWS-Boxen nicht als VMs. Sehen man virt-what für das heuristische Skript, das für diesen Erkennungszweck (für RedHat / Fedora-Systeme) erstellt wurde, und für die damit verbundenen Vorbehalte. - Wildcard


facter virtual 
xenu

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

facter virtual
Physical

13
2018-01-22 19:14



Dies ist jedoch ein Nicht-Standard-Spezialpaket .... aber ich mag es. - mdpc
@mdpc Es sollte auf jedem System mit Marionette vorhanden sein. - Michael Hampton♦


Es gibt eine handliche App, die helfen könnte angerufen virt-was. Ich habe es nicht mit VMWare verwendet, aber es hat gut mit Qemu funktioniert.


11
2017-09-16 00:34



Unglücklicherweise hat das binäre RPM zwei Dependenzen, dmidecode und util-linux-ng, wenn es auf SuSE kommerziell getestet wird. - mdpc


Vielleicht könntest du dir etwas einfallen lassen, indem du dich unter dir umschaust /sys. Zum Beispiel /sys/class/dmi/id/sys_vendor hat einen Wert von VMware, Inc..

Wenn es installiert ist, können Sie verwenden lshw. Der Befehl lshw -class system gibt das 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

10
2017-09-15 23:37



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


Einige virtuelle Umgebungen benennen einige ihrer virtuellen Geräte mit Namen, die ein bisschen verräterisch sind, z. B. VirtualBox präsentiert eine Grafikkarte, die sich selbst "VirtualBox Display Adapter" nennt. Aber wenn Sie danach suchen, sind Sie mit einer bestimmten VM und möglicherweise mit einer begrenzten Anzahl von Versionen verbunden.

Möglicherweise kann Ihr Code sehen, welche Art von Virtualisierung er einrichten könnte. Wenn dies nicht möglich ist, befinden Sie sich möglicherweise in einer VM. Aber Sie können genauso gut auf einer Box sein, die keine VM-fähige Hardware hat.


6
2017-09-15 23:38



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


Für Linux tippen Sie ein dmesg |grep DMI:

Virtueller Host-Ausgang

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

[root @ myhost ~] # dmesg | grep -i virtuell
DMI: Microsoft Corporation, virtuelle Maschine / virtuelle Maschine, BIOS 090006 23.05.2012
Booten von paravirtualisiertem Kernel auf nackter Hardware
Eingabe: Macintosh-Maustastenemulation als / devices / virtual / input / input1
scsi 0: 0: 0: 0: Msft Virtual Disk 1.0 mit direktem Zugriff PQ: 0 ANSI: 4
Eingabe: Microsoft Vmbus HID-konforme Maus als / devices / virtual / input / input4

FÜR PHYSISCHES 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

4
2018-04-10 18:43



Ein großes Problem mit Ihrer Lösung ist, dass dmesg den Kernel-Puffer ausliest und nur eine begrenzte Größe hat. Wenn nach dem Neustart des Systems viele Nachrichten oder ein wenig Zeit verstrichen sind, sind diese Informationen nicht verfügbar. - mdpc


Es gibt eine Menge Code, um herauszufinden, ob Sie in einer VM sind oder nicht. Beginnen mit rote Pille und suche von dort. Dieses Papier bei Offensive Computing ist auch eine gute Lektüre.

Das ist, wenn keiner der einfachen oben genannten funktioniert :)


4
2017-09-18 20:25



Die erste Verbindung ist unterbrochen. Die Sekunde ist entweder gebrochen oder langsam. - Wildcard
Du hast recht. Der Sand der Zeit hat sie gefressen ... Ich werde sehen, ob ich alternative Links finden kann. - Bill Weiss
Es ist Schande; "Rote Pille" klang interessant. :) - Wildcard
Mit archive.org-Links aktualisiert. - Bill Weiss


Sie können auch den ersten Teil Ihrer Mac-Adresse suchen Hier und sehen Sie, ob es einem der Virtualisierungsunternehmen zugewiesen ist.


3
2017-09-16 00:18



Interessante Idee .... Ich denke, das funktioniert (solange ein Netzwerkgerät in der VM enthalten ist ;-)) - mdpc
Wird nicht zuverlässig sein. In vielen Fällen kann der Mac auf einen beliebigen Wert gesetzt werden. Dies ermöglicht das Klonen des Macs der Originalmaschine beim Konvertieren in die VM. Einige Software bindet ihre Lizenz an den Mac und oft ist es unmöglich, eine neue Lizenz zu erhalten (Verkäufer ging kaputt oder die Kosten sind unerschwinglich). - Tonny


Virtuelle Geräte werden auch durch lspci und / oder Datenträger-Geräteinformationen in / proc angezeigt:

lspci | grep -i vmware

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

3
2017-09-18 18:55





Unter Linux werden Systeminformationen in / sys / devices / virtual / dmi / id / angezeigt. Siehe meine Antwort Hierfür ein handliches Skript, um Ihnen alle verfügbaren Informationen zu zeigen.

root nicht erforderlich.


2
2018-02-20 20:05