Eine interessante Frage. Ich habe mich bei einem Linux-Host (höchstwahrscheinlich SuSE) angemeldet. Kann ich programmgesteuert feststellen, ob ich ein VM-Host bin oder nicht?
Nehmen Sie auch an, dass die vmtools nicht installiert sind.
linux
virtualization
mdpc
quelle
quelle
Antworten:
Verwenden Sie Standard-Linux-Tools, um die Hardware auf dem System zu überprüfen.
oder
oder
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.
quelle
cat /proc/scsi/scsi
ist nett, weil es anscheinend überall verfügbar ist und keine neue Software installiert oder mit privilegierten Rechten ausgeführt werden muss./proc/scsi/scsi
auf meiner Debian 7-Box ...man virt-what
für das heuristische Skript, das für diesen Erkennungszweck erstellt wurde (für RedHat / Fedora-Systeme) und für die damit verbundenen Vorsichtsmaßnahmen.zeigt an, dass es sich um eine VM handelt. Wenn es "physisch" zurückgegeben hat, ist das Gegenteil der Fall (keine VM), z. B .:
quelle
Es gibt eine praktische App namens virt-what . Ich habe es nicht mit VMWare verwendet, aber es hat gut mit Qemu funktioniert.
quelle
Sie könnten in der Lage sein, eine Idee zu bekommen, indem Sie sich unter umschauen
/sys
. Zum Beispiel/sys/class/dmi/id/sys_vendor
hat einen Wert vonVMware, Inc.
.Wenn es installiert ist, können Sie lshw verwenden . Der Befehl
lshw -class system
gibt dies auf meinem System zurück:quelle
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.
quelle
Für Linux geben Sie Folgendes ein
dmesg |grep DMI
:VIRTUAL HOST OUTPUT
FÜR PHYSICAL HOST BEISPIEL
quelle
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 :)
quelle
Sie können auch den ersten Teil Ihrer Mac-Adresse hier durchsuchen und prüfen, ob sie einem der Virtualisierungsunternehmen zugewiesen ist.
quelle
Virtuelle Geräte werden auch durch lspci- und / oder Plattengeräte-Informationen in / proc angezeigt:
quelle
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.
quelle
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.
quelle
Dies funktionierte besser für mich, da es mir spezifische Informationen über den Hersteller und den Produktnamen gibt.
Ausgabe auf Dell Server:
Ausgabe auf Virtualbox VM:
Ausgabe auf KVM / QEMU:
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 -> system
dem Chef-Server überprüfen .quelle
Ich mag sehr gerne:
oder konkret:
So überprüfen Sie, ob es sich bei einem Linux-System um eine physische oder virtuelle Maschine handelt
16 Methoden zum Überprüfen, ob es sich bei einem Linux-System um eine physische oder virtuelle Maschine handelt
quelle