仮想マシン内でマシンエミュレーター(Bochs)を実行できますか?


82

たとえば、Linuxゲストを使用してWindows 7でVirtualBoxを実行し、そのLinuxマシン内でBochsを実行することは可能ですか?

その理由は、私はOS開発の開始に興味があり、すべてのチュートリアルと内容が* nixマシンではるかに簡単であることがわかったからです。Cygwinを使用してみましたが、複雑さの別の層が追加され、必ずしも物事が簡単になるとは限らないと思います。


1
デュアルブートはLinuxとWindowsで比較的簡単に実行でき、最終結果ははるかに速く実行されます。唯一の本当の欠点は、OSを切り替えるために再起動する必要があることです。
lyallcooper

@AUAnonymous:私はそれを知っていますが、Windowsを実行し続けたいです。
ハビエル

VMを機能させることができない場合、またはVMがうまく機能しない場合は、常にオプションになります。
lyallcooper

12
この質問のタイトルは貧弱だと主張します。Bochsは、VirtualBoxやVMWareと同じ意味での仮想化ソフトウェアではありません。エミュレーターです。CPU仮想化は提供しません。ここでの区別は、単なる教訓的なものではありません。bochsのようなエミュレーターは、かなり高い信頼性でVM内で動作することが期待できます。VMで「ネスト」された真の仮想化ソフトウェアを実行することは、はるかに難しい問題です。たとえば、この機能はFusion 4の時点でVMWareにのみ実装されていました
superbatfish

2
VirtualMachine-ception:D仮想マシンの深さのレベルを把握できなくなる危険があります。ネストされた仮想ハー​​ドディスクの1つではなく、物理ハードディスクを破損したことに気付いた瞬間:P
developerbmw

回答:


63

簡単に言えば、 はい

各仮想マシンは技術的には互いに「独立」しており、VirtualBoxを使用すると、WindowsとLinuxの両方のホストオペレーティングシステム(エミュレートまたは非エミュレート)でサポートされているため、簡単に実行できます。Windowsを「ベースホスト」OSとして使用し、VMでLinuxを実行してから、そのオペレーティングシステムをBochsの新しいベースホストとして使用できます。

ここでの唯一の制限はハードウェアであることに注意してください。開発の要件に応じて、より多くのメモリが必要になるか、64ビットの「ベースホスト」オペレーティングシステムへのアップグレードが必要になる場合があります。そうは言っても、Linuxディストリビューションを賢明に選択すれば、現代のシステムはこのように任意のネストができるはずです。

コンピューターでx86仮想化サポートを有効にするとパフォーマンスが向上します(マザーボードとCPUがサポートしている場合)。そして、この機能を複数のネストされた仮想マシンに「パススルー」できます。我々が持っている場合はnお互いにネストされた仮想マシンを、これは、限り、サポートされている1STn-1ネストされたゲストOSは、x86仮想化(ベースホストでも、それをサポートしている必要があります)をサポートしています。これを行う場合、注意すべきセキュリティ上の問題がまだあることに注意してください。そのため、適切な予防措置を講じてください。


2
実際に機能しているようです。結局のところ、速度が必要な場合は、そもそもBoch​​sを使用しないでしょう。最も支持されているわけではありませんが、あなたの答えはより完全で、要点であると思うので、私はそれを受け入れます。
ハビエル

それは私だけですか、この答えはネストされたものではなく、複数の仮想マシンを実行することに関するものではないのですか?
トーマスパドロン-マッカーシー

@Thomas Padron-McCarthy、私ネストされたものについて話していました。この点に関してより明確になるように回答を修正しました。
ブレークスルー

7
Bochsは、VMではなくエミュレーターであるため、この一般的な質問に対する最良のテストケースではありません。(OPに関する私のコメントを参照してください。)
superbatfish

この回答は、TobyJの回答と、彼の回答がリンクする未解決のVirtualBox機能リクエストと矛盾していませんか?
ChrisW

40

VMware Workstation内でVMware vSphere仮想インフラストラクチャ全体を実行し、仮想シスコルーターおよびスイッチ、EMC Celerra Virtualized Storage Applianceを自己学習およびテスト目的で実行することがあります。

私はそれを「インセプションコンピューティング」と呼びますが、かなり混乱する可能性があります。ただし、実際のギアを使用するよりも多少安価です。


1
これはこれの実行可能性を証明するはずです。vinf.net/2010/02/25/...
マイクSoule

1
@Mike:ESX内でESXiを実行するリンクの詳細ですが、TechHeadのようなリンクをいくつか使用しました。同様にVMware Workstationの内のvSphereインフラストラクチャを実行する上で多くの情報があります:google.co.uk/...
paradroid

2
「インセプション」という用語は、[物の中の物]の概念を指していないことを知っていますか?
ekillaby

7
@countfloortiles:もちろん映画への参照です。
パラドロイド

1
@paradroidには、「CompCeption」または「VirtuaCeption」という名前を付ける必要があります。
モハドアブドゥルムジブ14年

32

この質問を読んで、受け入れられた答えを見て、これがVirtualBoxにも当てはまると思うには、元の質問に関する@superbatfishのコメントをご覧ください。彼は、仮想化とエミュレーションの違いについて良い点を述べています。

具体的には、「ハードウェア支援VM」は「トップレベル」のゲストOSでは使用できません(つまり、この記事の執筆時点では、VirtualBoxはゲストOSにハードウェアVMを提供していません)。VirtualBoxを使用すると、最上位のゲストが64ビットで「実際の」ホストにハードウェアVMがある場合でも、32ビットの「ネストされたゲスト」OSのみを作成できます。

あなたにとって最高のものではないかもしれませんが、注目に値します。Chef cookbookのテストのために、Windows内のUbuntuゲストでVagrantを実行するためにこれが必要でした。


Windowsホスト内のUbuntuゲストでVagrantを実行できましたか?
ウィスバッキー

2
@wisbuckyはい、64ビットではなく32ビットモードで実行できました。私の実動システムはすべて64ビットであるため、完全なテストではありませんでしたが、十分に機能しました。
トビアスJ

3
コンテナがハードウェア仮想化に依存しないため、VagrantのDockerプロバイダーを使用して、Ubuntu VM内で64ビットVagrantボックスを実行できるようになりました:vagrantup.com/docs/docker。ただし、使用しているVagrantボックスはそれをサポートする必要があります。
ブレンダン

@Brendan、特定の64ビットプログラムを実行する必要がない限り、32ビット仮想ボックスの実行と比較してdockerコンテナーを使用すると、パフォーマンスは同じですか?
serup

11

Linux-KVMは、ネストされた仮想マシンをある程度サポートしています。KVM IRCチャンネルで質問し、次の情報を入手しました(しかし、私の言葉を受け入れないで、自分で試してみてください):

  • AMD CPUは正常に動作するはずです。XenおよびHyper-Vを使用するゲストは動作することが知られていますが、
  • Intel CPUには最新のKVM Gitソースコードが必要で、KVMを持つゲストのみが動作します

私はまだこれを試していません。「KVM nested」を検索すると、自分で試してみるのに十分な情報が得られます。

編集:KVMはLinuxホストでのみ実行されます。ネストされたVMの適切なサポートに関するWindows仮想化ソフトウェアに関する信頼できる情報を得ていません。「適切」とは、ハイパーバイザーが仮想化拡張機能をゲストに公開することを意味します。純粋なソフトウェアハイパーバイザー(動的変換など)を使用してネストされたVMをいつでも実行できますが、それは著しく遅くなります。

編集:あなたが言及したBochsは、ソフトウェアのみのハイパーバイザーです。これは、常に遅いことを意味し、ホスト上のハイパーバイザーがゲストに仮想化拡張機能を公開する場合(KVMのように)無関係です。ただし、他のほとんどの仮想化ソフトウェア(KVM、VirtualBox、VMWare)は、これらの拡張機能を利用でき、使用可能であればパフォーマンスが大幅に向上します。


2番目の編集:Bochsを実行するだけの場合(そして遅い場合はあまり気にしません)、KVMのことを心配する必要がありますか?
ハビエル

仮想マシン内でBochsを実行している場合、ハードウェアで実行した場合と同じくらい遅くなります(ハードウェアに仮想化拡張機能、つまりAMD-vまたはVT-xがあり、BIOSで有効になっていると仮定します。 VMのすべてがそうであるように、さらに遅い)。
アンブロズビズジャク

Windowsの仮想化に関しては、可能性があるようですが、(2016年6月現在)HyperV-on-HyperV、「Windows Insider」OSビルド、およびIntelハードウェアでのみ機能します。msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/…
マーク

3

その可能性はありますが、特に開発に関してはあまり実現できません。LinuxをネイティブOSとして実行するか、VMをホストするための2番目のボックスを取得することを検討する必要があります。


複雑になる可能性があることは理解していますが、「あまり実行可能ではない」とはどういう意味ですか?
ハビエル

1
@peelmanの意味は「実際の目的には遅すぎる」と思います。私は自分で試したことはありません。
CarlF

@carlf正確に。
ピールマン

1

このプロセスの詳細な説明はこのページにあります:https : //wiki.openstack.org/wiki/XenServer/VirtualBox

VirtualBoxマシンのネットワークカードでは、Promiscuous Modeと他のいくつかのオプションですべてを許可するように設定する必要があります。


1

はい、仮想マシンで仮想マシンを実行できます。私がやったのは、Windows 7 Ultimate x64コンピューターを取得し、仮想マシンで同じOSを実行し、3番目のレイヤーで32ビットバージョン(3番目のレイヤーで64ビットを処理できなかった)を実行することでした。それはかなり遅れていましたが、私はそれでインターネットエクスプローラーでニューヨークタイムズに到達することができました。強力なコンピューターを持っていない場合、これは難しいかもしれませんが、軽量のオペレーティングシステムであるLinuxとBochsを実行しているので、可能なはずです。


-2

はい、それはあなたのコンピュータがそれを処理するのに十分強力であることを考えると、可能です。

私のマシン(i7 4770S、16GB RAM)では、4.5のVM-ception-nessレベルを得ることができました(最後の1つは半分の時間クラッシュします)。

VirtualBoxはVM-xのエミュレートを好まなかったため、VMware Player 12を使用しました。今、XPでW2Kを動作させようとしていますが、VMwareはインストールできません。VirtualBoxはBSODを生成するため、QEMUを使用しようとしています。

このスクリーンショットをご覧ください(私が今まで見た中で最も美しいスクリーンショットの1つ):

ここに画像の説明を入力してください


この回答はどのような新しい情報を提供しますか?
ラムハウンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.