Können Sie einen Maschinenemulator (Bochs) in einer virtuellen Maschine ausführen?

82

Ist es beispielsweise möglich, VirtualBox unter Windows 7 mit einem Linux-Gast auszuführen und auf diesem Linux-Computer Bochs auszuführen?

Der Grund dafür ist, dass ich daran interessiert bin, mit der Betriebssystementwicklung zu beginnen, und ich habe festgestellt, dass alle Tutorials und Dinge auf * nix-Computern viel einfacher zu befolgen sind. Ich habe versucht, Cygwin zu verwenden, aber ich denke, es fügt eine weitere Komplexitätsebene hinzu und macht die Dinge nicht unbedingt einfacher.

Javier
quelle
1
Das doppelte Booten von Linux und Windows ist relativ einfach und das Endergebnis läuft viel schneller. Der einzige wirkliche Nachteil ist, dass Sie einen Neustart durchführen müssen, um das Betriebssystem zu wechseln.
Lyallcooper
@AUAnonymous: Ich weiß das, aber ich möchte weiterhin mit Windows arbeiten.
Javier
Es ist nur immer eine Option, wenn Sie es nicht schaffen, die VMs zum Laufen zu bringen, oder wenn sie nicht zu gut funktionieren.
Lyallcooper
12
Ich werde argumentieren, dass diese Frage schlecht betitelt ist. Bochs ist keine Virtualisierungssoftware im gleichen Sinne wie VirtualBox und VMWare. Es ist ein Emulator. Es bietet keine CPU-Virtualisierung. Die Unterscheidung ist hier nicht nur umständlich. Sie können davon ausgehen, dass ein Emulator wie bochs innerhalb einer VM mit ziemlich hoher Sicherheit funktioniert. Das Ausführen einer echten Virtualisierungssoftware, die in einer VM "verschachtelt" ist, ist ein viel schwierigeres Problem. Diese Funktion wurde beispielsweise erst in VMWare ab Fusion 4 implementiert .
Superbatfish
2
VirtualMachine-ception: D Es besteht die Gefahr, dass Sie die Anzahl der Ebenen in virtuellen Maschinen aus den Augen verlieren. In dem Moment, in dem Sie feststellen, dass Sie gerade Ihre physische Festplatte anstelle einer der verschachtelten virtuellen Festplatten beschädigt haben, auf denen Sie testen sollten: P
developerbmw

Antworten:

63

Lange Rede kurzer Sinn : Ja .

Jede virtuelle Maschine ist technisch "unabhängig" voneinander, und mit VirtualBox können Sie dies problemlos tun, da sie sowohl auf Windows- als auch auf Linux-Host-Betriebssystemen (emuliert oder nicht) unterstützt wird. Sie können einfach Windows als Basis-Host-Betriebssystem verwenden, Linux in einer VM ausführen und dieses Betriebssystem dann als neuen Basis-Host für Bochs verwenden.

Beachten Sie, dass Ihre einzige Einschränkung hier Ihre Hardware ist. Je nach den Anforderungen Ihrer Entwicklung benötigen Sie möglicherweise mehr Arbeitsspeicher oder ein Upgrade auf ein 64-Bit-Betriebssystem "Basis-Host". Das heißt, wenn Sie Ihre Linux-Distributionen mit Bedacht auswählen, sollte jedes moderne System in der Lage sein, beliebige Schachtelungen wie diese durchzuführen.

Sie werden eine verbesserte Leistung feststellen, wenn Sie die x86-Virtualisierungsunterstützung auf Ihrem Computer aktivieren (sofern dies von Ihrem Motherboard und Ihrer CPU unterstützt wird), und AFAIK können Sie diese Funktion an mehrere geschachtelte virtuelle Maschinen "weiterleiten". Wenn wir nvirtuelle Maschinen verschachtelt in mir, wird diese so lange unterstützt , da die 1st zum n-1th verschachtelten Gastbetriebssystem - Unterstützung für x86 - Virtualisierung hat (die Host - Basis muss auch sie unterstützt). Beachten Sie, dass in diesem Fall noch einige Sicherheitsprobleme zu beachten sind. Treffen Sie daher die entsprechenden Vorsichtsmaßnahmen.

Durchbruch
quelle
2
Es scheint, dass es tatsächlich funktioniert. Denn wenn ich Geschwindigkeit brauchte, würde ich Bochs gar nicht erst einsetzen. Obwohl dies nicht die am meisten verärgerte Antwort ist, bin ich der Meinung, dass Ihre Antwort vollständiger und auf den Punkt gebracht ist, also werde ich sie akzeptieren.
Javier
Bin ich es nur, oder handelt es sich bei dieser Antwort anscheinend nicht um die Ausführung mehrerer virtueller Maschinen, nicht um verschachtelte ?
Thomas Padron-McCarthy
@Thomas Padron-McCarthy, ich war im Gespräch über verschachtelt diejenigen. Ich habe die Antwort dahingehend geändert, dass sie eindeutiger ist.
Durchbruch
7
Bochs ist nicht der beste Testfall für diese allgemeine Frage, da es sich um einen Emulator handelt, nicht um eine VM. (Siehe meinen Kommentar zum OP.)
Superbatfish
Widerspricht diese Antwort nicht der Antwort von TobyJ und der ungelösten VirtualBox-Feature-Anfrage, auf die seine Antwort verweist ?
ChrisW
40

Manchmal verwende ich eine virtuelle VMware vSphere-Infrastruktur in VMware Workstation sowie virtuelle Cisco-Router und -Switches und die EMC Celerra Virtualized Storage Appliance für Selbstlern- und Testzwecke.

Ich nenne es "Inception Computing", und es kann ziemlich verwirrend werden. Es ist jedoch etwas billiger als die Verwendung der realen Ausrüstung.

paradroid
quelle
1
Dies sollte die Realisierbarkeit beweisen. vinf.net/2010/02/25/…
Mike Soule
1
@Mike: Ihre Link-Details beim Ausführen von ESXi in ESX, aber ich habe einige der Links verwendet, wie z. B. TechHead, eine der wichtigsten Sites, die mich überhaupt erst zur Virtualisierung gebracht haben. Es gibt auch viele Informationen zum Ausführen einer vSphere-Infrastruktur in VMware Workstation: google.co.uk/…
paradroid
2
Sie wissen, dass sich der Begriff "Inception" nicht auf das Konzept bezieht, oder?
Ekillaby
7
@countfloortiles: Es ist natürlich ein Hinweis auf den Film.
Paradroid
1
@paradroid sollten Sie "CompCeption" oder "VirtuaCeption" genannt haben.
Mohd Abdul Mujib
32

Wenn Sie diese Frage lesen, die akzeptierte Antwort sehen und der Meinung sind, dass dies auch für VirtualBox gilt, lesen Sie den Kommentar von @superbatfish zur ursprünglichen Frage. Er macht einen guten Punkt über den Unterschied zwischen Virtualisierung und Emulation.

Insbesondere ist "Hardware-unterstützte VM" im Gastbetriebssystem der "obersten Ebene" nicht verfügbar (dh, zum Zeitpunkt dieses Schreibens stellt VirtualBox keine Hardware-VM in Gastbetriebssystemen bereit ). Mit VirtualBox können Sie also nur 32-Bit-Betriebssysteme für "verschachtelte Gäste" erstellen, selbst wenn der Gast der obersten Ebene 64-Bit-Betriebssysteme ist und Ihr "realer" Host über eine Hardware-VM verfügt.

Vielleicht ist es kein Showstopper für Sie, aber es lohnt sich, darauf hinzuweisen. Ich brauchte dies, um Vagrant auf einem Ubuntu-Gast in Windows zum Testen von Kochbüchern auszuführen.

Toby J
quelle
Konnten Sie Vagrant auf einem Ubuntu-Gast in einem Windows-Host ausführen?
wisbucky
2
@wisbucky Ja, ich könnte es im 32-Bit-Modus ausführen, aber nicht 64-Bit. Da alle meine Produktionssysteme 64-Bit sind, war es kein perfekter Test, funktionierte aber trotzdem gut genug.
Toby J
3
Wenn ich mich nicht irre, können Sie jetzt 64-Bit-Vagrant-Boxen in der Ubuntu-VM mithilfe des Docker-Anbieters für Vagrant ausführen , da Container nicht auf Hardware-Virtualisierung angewiesen sind: vagrantup.com/docs/docker . Die Vagrant-Box, die Sie verwenden, muss dies jedoch unterstützen.
Brendan
@Brendan, wenn Sie nicht bestimmte 64-Bit-Programme ausführen müssen und dann den Docker-Container im Vergleich zur Ausführung einer virtuellen 32-Bit-Box verwenden, ist die Leistung gleich oder nicht?
Serup
11

Linux-KVM bietet Unterstützung für verschachtelte virtuelle Maschinen. Ich habe im KVM-IRC-Kanal nachgefragt und folgende Informationen erhalten (aber nimm mein Wort, versuch es selbst):

  • AMD-CPUs sollten gut funktionieren, Gäste mit Xen und Hyper-V sind dafür bekannt, dass sie funktionieren.
  • Intel-CPUs benötigen den neuesten KVM-Git-Quellcode, und nur Gäste mit KVM arbeiten

Ich habe das selbst noch nicht ausprobiert. Eine Suche nach "KVM verschachtelt" sollte Ihnen genügend Informationen liefern, um es selbst zu versuchen.

BEARBEITEN: KVM kann nur auf einem Linux-Host ausgeführt werden. Ich habe keine zuverlässigen Informationen zur Windows-Virtualisierungssoftware in Bezug auf die ordnungsgemäße Unterstützung verschachtelter VMs erhalten. Mit "richtig" meine ich, dass der Hypervisor Virtualisierungserweiterungen für den Gast verfügbar macht. Sie können eine verschachtelte VM immer mit einem reinen Software-Hypervisor ausführen (z. B. dynamische Übersetzung), dies ist jedoch merklich langsamer.

EDIT: Bochs, das Sie erwähnt haben, ist ein Software-Hypervisor. Dies bedeutet, dass es immer langsam ist und es keine Rolle spielt, ob der Hypervisor auf dem Host Virtualisierungserweiterungen für den Gast bereitstellt (wie dies bei KVM der Fall ist). Die meisten anderen Virtualisierungsprogramme (KVM, VirtualBox, VMWare) können diese Erweiterungen jedoch verwenden und erzielen eine bessere Leistung, wenn sie verfügbar sind.

Ambroz Bizjak
quelle
Zu Ihrer zweiten Ausgabe: Wenn ich also nur Bochs leite (und es ist mir egal, ob es langsam ist), muss ich mir dann Gedanken über die KVM-Sache machen?
Javier
Wenn Sie Bochs in der virtuellen Maschine ausführen, ist dies genauso langsam wie bei der Ausführung auf Hardware (vorausgesetzt, Ihre Hardware verfügt über Virtualisierungserweiterungen, z. B. AMD-v oder VT-x, und diese sind im BIOS aktiviert; andernfalls ist dies der Fall noch langsamer, wie alles in der VM).
Ambroz Bizjak
In Bezug auf die Windows-Virtualisierung ... scheint dies möglich zu sein, funktioniert jedoch (ab Juni 2016) nur mit HyperV-on-HyperV, mit Windows Insider-Betriebssystemen und auf Intel-Hardware. Von msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/...
Mark
3

Es ist möglich, aber nicht sehr machbar, insbesondere für die Entwicklung. Sie sollten wahrscheinlich Linux als natives Betriebssystem verwenden oder eine zweite Box zum Hosten der VMs erwerben.

Peelman
quelle
Ich verstehe, dass es wahrscheinlich kompliziert ist, aber was genau meinst du mit "nicht sehr machbar"?
Javier
1
Ich würde wetten, dass @peelman bedeutet: "Es ist für praktische Zwecke zu langsam." Ich habe es nicht selbst ausprobiert.
CarlF
@carlf genau.
Peelman
1

Eine ausführliche Beschreibung dieses Vorgangs finden Sie auf dieser Seite: https://wiki.openstack.org/wiki/XenServer/VirtualBox

Bei Netzwerkkarten für VirtualBox-Maschinen müssen Sie die Option Alle im Promiscuous-Modus und verschiedene andere Optionen aktivieren. Sie können OS in VM, z. B. Xenserver, in VM, z. B. VirtualBox, verwenden.

42n4
quelle
1

Ja , Sie können eine virtuelle Maschine in einer virtuellen Maschine ausführen. Was ich getan habe, war, einen Windows 7 Ultimate x64-Computer zu bekommen, dasselbe Betriebssystem auf der virtuellen Maschine auszuführen und dann eine 32-Bit-Version (es konnte 64-Bit auf der 3. Schicht nicht verarbeiten) auf der 3. Schicht auszuführen. Es war ziemlich nachlässig, aber ich habe es geschafft, mit dem Internet Explorer die New York Times zu erreichen. Dies kann schwierig sein, wenn Sie keinen leistungsstarken Computer haben, aber Linux und Bochs verwenden, die leichte Betriebssysteme sind. Dies sollte also möglich sein.

FluorescentGreen5
quelle
-2

Ja , es ist möglich, vorausgesetzt Ihr Computer ist leistungsfähig genug, um damit umzugehen.

Auf meinem Computer (i7 4770S, 16 GB RAM) habe ich eine VM-Akzeptanzstufe von 4,5 erreicht (der letzte stürzt die Hälfte der Zeit ab).

Ich habe VMware Player 12 verwendet, weil VirtualBox VM-x nicht gerne emuliert hat und es sehr viel langsamer war. Im Moment versuche ich, W2K unter XP zum Laufen zu bringen, aber VMware kann nicht installiert werden. VirtualBox produziert BSODs, daher versuche ich, QEMU zu verwenden.

Siehe diesen Screenshot (einer der schönsten Screenshots, die ich je gesehen habe):

Bildbeschreibung hier eingeben

Dimension
quelle
Welche neuen Informationen liefert diese Antwort?
Ramhound