Puoi eseguire un emulatore di macchina (Bochs) all'interno di una macchina virtuale?


82

È possibile, diciamo, eseguire VirtualBox su Windows 7 con un guest Linux e all'interno di quella macchina Linux eseguire Bochs?

Il motivo è che sono interessato a iniziare lo sviluppo del sistema operativo e ho scoperto che tutti i tutorial e le cose sono molto più facili da seguire su macchine * nix. Ho provato ad usare Cygwin, ma penso che stia aggiungendo un altro livello di complessità e non necessariamente rendendo le cose più facili.


1
Il doppio avvio è Linux e Windows è relativamente facile da eseguire e il risultato finale viene eseguito molto più rapidamente. L'unico aspetto negativo è che devi riavviare per cambiare sistema operativo.
Lyallcooper,

@Anonimo: lo so, ma voglio continuare a eseguire Windows.
Javier,

È sempre un'opzione se non riesci a far funzionare le VM o se non funzionano troppo bene.
Lyallcooper,

12
Sosterrò che questa domanda è scarsamente intitolata. Bochs non è un software di virtualizzazione nello stesso senso di VirtualBox e VMWare. È un emulatore. Non offre virtualizzazione della CPU. La distinzione qui non è semplicemente pedante. Puoi aspettarti che un emulatore come bochs funzioni all'interno di una VM con una sicurezza abbastanza elevata. L'esecuzione di un vero software di virtualizzazione "nidificato" in una macchina virtuale è un problema molto più complicato. Ad esempio, questa funzione è stata implementata in VMWare solo da Fusion 4 .
superbatfish,

2
VirtualMachine-ception: D Hai il pericolo di perdere la traccia di quanti livelli sei nelle macchine virtuali. Quel momento in cui ti rendi conto di aver appena corrotto il tuo disco rigido fisico invece di uno di quelli virtuali nidificati su cui dovevi testare: P
developerbmw,

Risposte:


63

Per farla breve: .

Ogni macchina virtuale è tecnicamente "indipendente" l'una dall'altra e con VirtualBox è possibile farlo facilmente, poiché è supportata su sistemi operativi host Windows e Linux (emulati o meno). Potresti semplicemente usare Windows come sistema operativo "host di base", eseguire Linux in una macchina virtuale e quindi utilizzare quel sistema operativo come nuovo host di base per Bochs.

Nota che l'unica limitazione qui è il tuo hardware. A seconda dei requisiti del tuo sviluppo, potresti richiedere più memoria o un aggiornamento a un sistema operativo "base-host" a 64 bit. Detto questo, se scegli saggiamente le tue distribuzioni Linux, qualsiasi sistema moderno dovrebbe essere in grado di annidare arbitrariamente in questo modo.

Vedrai prestazioni migliori se abiliti il supporto della virtualizzazione x86 sul tuo computer (se la tua scheda madre e CPU lo supportano) e AFAIK, puoi "passare" questa funzione a più macchine virtuali nidificate. Se abbiamo nmacchine virtuali nidificati in vicenda, questo è supportato fino a quando la 1st alla n-1esimo sistema operativo guest annidata ha il supporto per la virtualizzazione x86 (l'host di base deve sostenerlo). Si noti che ci sono ancora alcuni problemi di sicurezza di cui tenere conto se si esegue questa operazione, quindi prendere le precauzioni appropriate.


2
Sembra che funzioni davvero. Dopotutto, se avessi bisogno di velocità, non avrei usato Bochs in primo luogo. Pur non essendo il più votato, sento che la tua risposta è più completa e precisa, quindi la accetterò.
Javier,

Sono solo io o non sembra che questa risposta riguardi l'esecuzione di più macchine virtuali, non di quelle nidificate ?
Thomas Padron-McCarthy,

@Thomas Padron-McCarthy, mi stava parlando di quelle nidificate. Ho modificato la risposta per essere più esplicito al riguardo.
Breakthrough

7
Bochs non è il miglior banco di prova per questa domanda generale, poiché è un emulatore, non una macchina virtuale. (Vedi il mio commento sull'OP.)
superbatfish

Questa risposta non è contraddetta dalla risposta di TobyJ e dalla richiesta irrisolta di funzionalità VirtualBox a cui si collega la sua risposta?
ChrisW,

40

A volte gestisco un'intera infrastruttura virtuale VMware vSphere all'interno di VMware Workstation, insieme a router e switch Cisco virtuali e EMC Celerra Virtualized Storage Appliance, per scopi di autoapprendimento e test.

Lo chiamo "Inception Computing" e può diventare piuttosto confuso. È comunque un po 'più economico rispetto all'utilizzo della vera attrezzatura.


1
Questo dovrebbe dimostrare la fattibilità di questo. vinf.net/2010/02/25/…
Mike Soule,

1
@Mike: i dettagli del tuo collegamento eseguono ESXi all'interno di ESX, ma ho usato alcuni dei collegamenti, come TechHead, che è uno dei siti principali che mi hanno portato alla virtualizzazione in primo luogo. Ci sono molte informazioni sulla gestione di un'infrastruttura vSphere anche in VMware Workstation: google.co.uk/…
paradroid

2
Sai che il termine "inizio" non si riferisce al concetto [cosa dentro una cosa], giusto?
ekillaby,

7
@countfloortiles: ovviamente è un riferimento al film.
paradroid

1
@paradroid avresti dovuto chiamare "CompCeption" o "VirtuaCeption".
Mohd Abdul Mujib,

32

A tutti coloro che leggono questa domanda, vedono la risposta accettata e pensano che ciò si applicherà anche a VirtualBox, si prega di vedere il commento di @superbatfish sulla domanda originale. Fa un buon punto sulla differenza tra virtualizzazione ed emulazione.

In particolare, la "VM assistita dall'hardware" non sarà disponibile nel sistema operativo guest "di livello superiore" (ovvero, al momento della stesura di questo documento, VirtualBox non fornisce la VM hardware nei sistemi operativi guest ). Con VirtualBox, ciò significa che puoi creare solo sistemi operativi "guest nidificati" a 32 bit, anche se il guest di livello superiore è 64 bit e il tuo host "reale" ha una VM hardware.

Potrebbe non essere uno spettacolo per te, ma vale la pena notare. Ne avevo bisogno per eseguire Vagrant su un guest Ubuntu in Windows, per testare il libro di cucina di Chef.


Quindi sei stato in grado di eseguire Vagrant su guest Ubuntu all'interno dell'host Windows?
Wisbucky

2
@wisbucky sì, ho potuto eseguirlo in modalità a 32 bit, ma non a 64 bit. Poiché tutti i miei sistemi di produzione sono a 64 bit, non è stato un test perfetto ma ha funzionato abbastanza bene.
Tobias J,

3
A meno che non mi sbagli, ora puoi eseguire i box Vagrant a 64 bit all'interno della VM Ubuntu utilizzando il provider Docker per Vagrant, poiché i contenitori non si basano sulla virtualizzazione dell'hardware: vagrantup.com/docs/docker . Tuttavia, la scatola Vagrant che stai usando dovrà supportarla.
Brendan,

@Brendan, a meno che non sia necessario eseguire programmi specifici a 64 bit, quindi utilizzare il contenitore docker rispetto all'esecuzione di una scatola virtuale a 32 bit, le prestazioni sono le stesse o no?
serup

11

Linux-KVM supporta alcune macchine virtuali nidificate. Ho chiesto sul canale IRC KVM e ho ottenuto le seguenti informazioni (ma non prendere la mia parola, provala tu stesso):

  • Le CPU AMD dovrebbero funzionare bene, gli ospiti con Xen e Hyper-V sono noti per funzionare,
  • Le CPU Intel richiedono l'ultimo codice sorgente KVM Git e solo gli ospiti con KVM lavorano

Non ho ancora provato questo. La ricerca di "KVM nidificato" dovrebbe fornirti informazioni sufficienti per provarlo tu stesso.

EDIT: KVM verrà eseguito solo su un host Linux. Non ho ottenuto informazioni affidabili sul software di virtualizzazione di Windows in merito al corretto supporto di macchine virtuali nidificate. Per "corretto" intendo che l'hypervisor espone estensioni di virtualizzazione al guest. È sempre possibile eseguire una macchina virtuale nidificata utilizzando un hypervisor software puro (ad es. Traduzione dinamica), ma sarà notevolmente più lento.

EDIT: Bochs, che hai menzionato, è un hypervisor solo software. Ciò significa che sarà sempre lento ed è irrilevante se l'hypervisor sull'host espone estensioni di virtualizzazione al guest (come fa KVM). La maggior parte degli altri software di virtualizzazione (KVM, VirtualBox, VMWare) può tuttavia utilizzare tali estensioni e funzionerà molto meglio se sono disponibili.


Alla tua seconda modifica: Quindi, se eseguirò Bochs (e non mi interessa troppo se è lento), devo preoccuparmi della cosa di KVM?
Javier,

Se stai eseguendo Bochs all'interno della macchina virtuale, sarà lento come se lo avessi eseguito su hardware (supponendo che il tuo hardware abbia estensioni di virtualizzazione, cioè AMD-v o VT-x e siano abilitate nel BIOS; altrimenti sarà ancora più lento, come tutto nella VM).
Ambroz Bizjak,

Per quanto riguarda la virtualizzazione di Windows ... sembra essere possibile, ma (a giugno 2016) funziona solo con HyperV-on-HyperV, con build del sistema operativo "Windows Insider" e su hardware Intel. Da msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/…
Segna il

3

È possibile, ma non molto fattibile, soprattutto per lo sviluppo. Probabilmente dovresti guardare Linux come sistema operativo nativo o ottenere una seconda casella su cui ospitare le macchine virtuali.


Capisco che probabilmente sarà complicato, ma cosa intendi esattamente con "non molto fattibile"?
Javier,

1
Scommetto che @peelman significa: "È troppo lento per scopi pratici". Non l'ho provato da solo.
CarlF

@carlf precisamente.
peelman,

1

La descrizione dettagliata di questo processo è su questa pagina: https://wiki.openstack.org/wiki/XenServer/VirtualBox

Nelle schede di rete della macchina VirtualBox devi impostare consenti tutto in modalità Promiscua e molte altre opzioni e puoi avere os all'interno di vm, ad esempio Xenserver, all'interno di vm, ad esempio VirtualBox.


1

, puoi eseguire una macchina virtuale in una macchina virtuale. Quello che ho fatto è stato ottenere un computer Windows 7 Ultimate x64, eseguire lo stesso sistema operativo sulla macchina virtuale, quindi eseguire una versione a 32 bit (non poteva gestire 64 bit al 3 ° livello) al 3 ° livello. Era piuttosto lento ma sono riuscito a raggiungere i tempi di New York su Internet Explorer con esso. Questo potrebbe essere difficile se non hai un computer potente, ma stai usando Linux e Bochs, che sono sistemi operativi leggeri, quindi dovrebbe essere possibile.


-2

, è possibile, dato che il tuo computer è abbastanza potente da gestirlo.

Sulla mia macchina (i7 4770S, 16 GB di RAM) sono riuscito a ottenere un livello di ception VM pari a 4,5 (l'ultimo si blocca metà del tempo).

Ho usato VMware Player 12, perché a VirtualBox non piaceva emulare VM-x, ed era sostanzialmente più lento. In questo momento, sto cercando di far funzionare W2K su XP, ma VMware non è in grado di installare, VirtualBox produce BSOD, quindi sto provando a utilizzare QEMU.

Guarda questo screenshot (uno degli screenshot più belli che abbia mai visto):

inserisci qui la descrizione dell'immagine


Quali nuove informazioni fornisce questa risposta?
Ramhound,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.