Soluzione 1:
Utilizza gli strumenti standard di Linux per ispezionare l'hardware del sistema.
cat /proc/scsi/scsi
o
ethtool -i eth0
o
dmidecode | grep -i vmware
Se l'output di questi comandi mostra l'hardware con il nome del produttore "VMWare", sei su una VM VMWare. Qui vengono forniti più comandi perché le configurazioni di sistema e gli strumenti differiscono.
Soluzione 2:
facter virtual
xenu
indica che si tratta di una VM. Se ha restituito "fisico", è vero il contrario (non una VM), ad esempio:
facter virtual
Physical
Soluzione 3:
Potresti farti un'idea guardandoti intorno sotto /sys
. Ad esempio /sys/class/dmi/id/sys_vendor
ha un valore di VMware, Inc.
.
Se è installato puoi usare lshw . Il comando lshw -class system
restituisce questo sul mio sistema:
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
Soluzione 4:
C'è un'app utile che potrebbe aiutarti chiamata virt-what . Non l'ho usato con VMWare, ma ha funzionato bene con Qemu.
Soluzione 5:
Alcuni ambienti virtuali denominano alcuni dei loro dispositivi virtuali con nomi un po' rivelatori, ad esempio VirtualBox che presenta una scheda grafica che si autodefinisce "VirtualBox Display Adapter". Ma cercare quelli ti lega a una particolare VM e possibilmente a una gamma ristretta di versioni.
Potrebbe essere possibile per il tuo codice vedere che tipo di virtualizzazione potrebbe impostare. Se fallisce del tutto, potresti trovarti in una VM. Ma potresti trovarti facilmente su una macchina che non ha hardware compatibile con VM.