sviluppo-web-qa.it

VMware Linux Server - come puoi sapere se sei un VM o un hardware reale?

Una domanda interessante Ho effettuato l'accesso a un host Linux (molto probabilmente SuSE). C'è un modo in cui posso dire a livello di codice che sono un VM Host o no?

Supponi anche che i vmtools non siano installati.

46
mdpc

Utilizzare strumenti Linux standard per ispezionare l'hardware sul 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", ci si trova su una VM VMWare. Qui vengono forniti più comandi perché le configurazioni e gli strumenti di sistema differiscono.

29
Greg Cain
facter virtual 
xenu

indica che si tratta di una macchina virtuale. Se ha restituito "fisico", è vero il contrario (non una macchina virtuale), ad esempio:

facter virtual
Physical
13
user155575

C'è un'app utile che potrebbe aiutarti chiamata virt-what . Non l'ho usato con VMWare, ma ha funzionato bene con Qemu.

11
Raynet

Potresti essere in grado di ottenere e idea guardando in giro sotto /sys. Per 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
10
Zoredache

Alcuni ambienti virtuali nominano alcuni dei loro dispositivi virtuali con nomi un po 'rivelatori, ad esempio VirtualBox che presenta una scheda grafica che si chiama "VirtualBox Display Adapter". Ma la ricerca di questi ti lega a un particolare VM e forse a una gamma ristretta di versioni.

Potrebbe essere possibile per il tuo codice vedere quale tipo di virtualizzazione potrebbe impostare. Se il problema persiste, potresti trovarti in una macchina virtuale. Ma potresti essere facilmente su una scatola che non ha hardware VM compatibile.

6
staticsan

C'è un sacco di codice là fuori per rilevare se sei in un VM o no. Inizia con pillola rossa e cerca da lì. Questo documento su Offensive Computing è anche una buona lettura.

Questo se nessuno di quelli facili sopra funziona :)

4
Bill Weiss

Per Linux digiti dmesg |grep DMI:

USCITA VIRTUALE dell'host

 [root @ myhost ~] # dmesg | grep DMI 
 DMI 2.3 presente. 
 DMI: Macchina virtuale/macchina virtuale di Microsoft Corporation, BIOS 090006 23/05/2012 
 
 [root @ myhost ~] # dmesg | grep -i virtual 
 DMI: Microsoft Corporation Macchina virtuale/Macchina virtuale, BIOS 090006 23/05/2012 
 Avvio del kernel paravirtualizzato su input hardware nudo. 
 input: Mouse conforme a Microsoft Vmbus HID come /devices/virtual/input/input4

PER ESEMPIO DI FISICA Host

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

Puoi anche cercare la prima parte del tuo indirizzo mac qui e vedere se è elencato come assegnato a una delle società di virtualizzazione.

3
Zypher

I dispositivi virtuali verranno inoltre rivelati dalle informazioni sul dispositivo lspci e/o su disco in/proc:

lspci | grep -i vmware

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

In Linux, le informazioni di sistema sono rivelate in/sys/devices/virtual/dmi/id /. Vedi la mia risposta qui per uno script utile per mostrarti tutte le informazioni disponibili.

radice non richiesta.

2
Mike S

Questo ha funzionato meglio per me in quanto mi fornisce informazioni specifiche sul produttore e sul nome del prodotto.

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

Uscita sul server Dell:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Output su Virtualbox VM:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Uscita su KVM/QEMU:

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

Questo è ottimo per gli script che possono analizzarli per una migliore identificazione dei server ... ma se usi Chef nella tua infrastruttura, puoi controllare l'attributo del nodo Virtualization -> system nel server dello chef.

1
user751528

Non mi è piaciuta nessuna di queste soluzioni, in quanto di solito è installato un driver CD-ROM o un driver di memoria VMware, quindi dmesg lo conferma o lo nega rapidamente per me.

 [server @ utente ~] $ dmesg | grep VMware 
 hda: VMware Virtual IDE unità CDROM, unità CD/DVD-ROM ATAPI 
 Venditore: Modello VMware: Disco virtuale Rev: 1.0 
 Venditore: Modello VMware: Disco virtuale Rev: 1.0 
 Venditore: Modello VMware: Disco virtuale Rev: 1.0 
 Venditore: Modello VMware: Rev. disco virtuale: 1.0 
 Venditore: Modello VMware: Rev. disco virtuale: 1.0 
 Venditore: Modello VMware: Rev. disco virtuale: 1,0 
 Venditore: Modello VMware: Rev. disco virtuale: 1,0 
 Driver di controllo memoria VMware inizializzato 
1
Greg