7

Ho accesso a una macchina su cui posso ssh. Come determinare se il mio sistema operativo è in esecuzione completamente virtualizzato (dove VMM esegue la traduzione binaria), ambiente paravirtualizzato o non virtualizzato? Ho qualche idea su come procedere (alcune operazioni come l'accesso a una pagina di memoria/disco richiederanno più tempo in un ambiente virtualizzato) ma non so come procedere.Come scoprire se il mio sistema operativo è in esecuzione su un ambiente virtualizzato o non virtualizzato?

+2

Come si può sapere se stiamo vivendo all'interno di un universo reale o di una simulazione computerizzata? Se sta andando bene, è importante? :-) –

+1

Un ambiente virtualizzato perfetto (o abbastanza buono) non dovrebbe essere dectable in questo modo ... –

+0

perché puoi chiedere al fornitore di hosting. prova free -m, a volte vedrai l'intera ram del sistema. Sono felice con la mia scatola di VM. ha mostrato tutta la memoria dell'hardware 148GB – user2134226

risposta

2

Dipende dal VMM su cui si sta eseguendo. Se si tratta di Xen o Microsoft VM, credo che CPUID con valore EAX di 0x40000000 fornirà un valore diverso da zero in EAX. Non sono sicuro che funzioni su VMWare, VirtualBox o KVM. Prevedo che funzionerà anche lì ...

Misurare i tempi di accesso è improbabile che SEMPRE mostri la verità, poiché in un sistema non VM questi possono variare parecchio, e non c'è alcun VERO motivo per cui vedresti un'enorme differenza in un'implementazione efficiente. E, naturalmente, non si sa se la VM è in esecuzione con un controller del disco rigido REAL passato attraverso il PCI, o se i dischi montati su NFS sono collegati tramite una scheda di rete REAL passata alla VM, o se sono accesso tramite una scheda di rete virtuale.

Un buon VMM non dovrebbe mostrare molta differenza fintanto che l'applicazione si comporta da sola.

Problemi correlati