Come faccio a sapere se sto in esecuzione in una macchina virtuale VMware (da Linux)?
Domanda
Ho un VMware ESX Server. Ho Redhat macchine virtuali in esecuzione su quel server. Ho bisogno di un modo per programatically testare se sto in esecuzione in una macchina virtuale. Idealmente, mi piacerebbe sapere come fare questo da Perl.
Soluzione
Vedere la risposta alla domanda " Rileva OS virtualizzato da un'applicazione? " .
Altri suggerimenti
Si dovrebbe non al 100% dipende da alcun metodo, in quanto sono caratteristiche non documentate / insetti - lavorano su alcuni sistemi operativi host e alcune soluzioni di virtualizzazione, ma non v'è alcuna garanzia che continuerà a lavorare; infatti, il punto di virtualizzazione deve essere indistinguibile da metallo reale possibile. Con questo in mente, il pillola blu pillola rossa (che è menzionato nella risposta accettata questa domanda simile ) sembra funzionare ... per ora.
VMWare ha un paio di SDK, tra cui un SDK per Perl .
Credo che (a seconda della versione di ESX) è possibile ispezionare presso l'indirizzo MAC della scheda di rete. VM in esecuzione in VMWare NIC avrà una stringa produttore assegnato a VMWare, non il fisico NIC MAC. (Stavamo cercando di falsificare il MAC VM un server di licenza e le versioni più recenti non lasceremo lo fai.) Inoltre, questo non garantisce non è in esecuzione su una scatola fisico con una scheda di rete spoofing a guardare come VMWare, ma sarebbe una cosa strana da fare nella maggior parte dei casi comunque.
Eseguire il seguente comando:
lspci | grep VMware
Si dovrebbe mostrare qualcosa del genere:
00: compatible controller 0f.0 VGA: VMware Adattatore SVGA II
00: 11.0 bridge PCI: bridge VMware PCI (rev 02)
00: 15.0 bridge PCI: VMware PCI Express Root Port (rev 01)