您可以在虚拟机中运行机器仿真器(Boch)吗?


82

例如,是否可以在具有Linux guest虚拟机的Windows 7上运行VirtualBox,并在该Linux计算机内部运行Bochs?

原因是我对开始进行OS开发感兴趣,而且我发现* nix机器上的所有教程和内容都更容易理解。我尝试使用Cygwin,但我认为它增加了另一层复杂性,并不一定会使事情变得容易。


1
双引导是Linux和Windows的相对容易实现的方法,其最终结果运行得更快。唯一的缺点是您必须重新启动才能切换操作系统。
lyallcooper

@AUAnonymous:我知道,但是我想继续运行Windows。
哈维尔

如果您无法使虚拟机正常运行或运行不正常,这始终是一个选择。
lyallcooper

12
我要争辩这个问题的标题很差。Bochs不是与VirtualBox和VMWare相同的虚拟化软件。它是一个模拟器。它不提供CPU虚拟化。这里的区别不仅是学究的。您可以期望像bochs这样的模拟器可以在VM内高可信度地工作。在VM中运行真正的虚拟软件“嵌套”是一个非常棘手的问题。例如,此功能仅在Fusion 4以后的VMWare中实现
超级蝙蝠鱼

2
VirtualMachine-ception:D您可能会失去跟踪虚拟机中有多少层的危险。那一刻,当你意识到你只是破坏你的物理硬盘,而不是你的意思嵌套虚拟子里的一个被测试的:P
developerbmw

Answers:


63

长话短说: 是的

从技术上讲,每个虚拟机都是彼此“独立”的,使用VirtualBox可以轻松做到这一点,因为Windows和Linux主机操作系统(是否仿真)都支持该虚拟机。您可以简单地将Windows用作“基本主机”操作系统,在VM中运行Linux,然后将该操作系统用作Bochs的新基本主机。

请注意,这里唯一的限制是硬件。根据您的开发要求,您可能需要更多内存或升级到64位“基本主机”操作系统。话虽如此,如果您明智地选择Linux发行版,那么任何现代系统都应该能够像这样任意嵌套。

如果在计算机上启用x86虚拟化支持(如果您的主板和CPU支持)和AFAIK,则可以看到性能的提高,您可以将该功能“传递”到多个嵌套的虚拟机。如果我们有n嵌套在海誓山盟的虚拟机,这是支持的,只要1第一n-1嵌套的来宾操作系统具有x86虚拟化(底座主机也必须支持它)的支持。请注意,如果这样做,仍要注意一些安全问题,因此请采取适当的预防措施。


2
看来它确实有效。毕竟,如果我需要速度,那么我一开始就不会使用Bochs。虽然不是最受好评,但我认为您的回答较为完整且切合实际,因此我会接受。
哈维尔

仅仅是我,还是这个答案似乎与运行多个虚拟机而不是嵌套虚拟机有关?
Thomas Padron-McCarthy

@Thomas Padron-McCarthy,我说嵌套的。在这方面,我修改了答案,使其更加明确。
突破

7
对于这个一般性问题,Bochs并不是最佳的测试用例,因为它是模拟器,而不是VM。(请参阅我对OP的评论。)
superbatfish

这个答案是否与TobyJ的答案以及他的答案链接到的未解决的VirtualBox功能要求相矛盾?
ChrisW

40

我有时会在VMware Workstation内运行整个VMware vSphere虚拟基础架构,以及虚拟Cisco路由器和交换机以及EMC Celerra虚拟存储设备,以进行自学和测试。

我称其为“初始计算”,它可能会造成混乱。但是,它比使用真正的齿轮便宜。


1
这应该证明其可行性。vinf.net/2010/02/25/…–
Mike Soule

1
@Mike:您的链接详细说明了在ESX中运行ESXi的情况,但是我使用了某些链接,例如TechHead,它是使我首先进入虚拟化的主要站点之一。有很多的信息上运行VMware Workstation内的vSphere基础架构,以及:google.co.uk/...
paradroid

2
您知道术语“开始”不是指[事物中的事物]概念,对吗?
ekillaby

7
@countfloortiles:当然,这是对电影的引用。
paradroid

1
@paradroid您应该将其命名为“ CompCeption”或“ VirtuaCeption”。
Mohd Abdul Mujib

32

对于阅读此问题,看到已接受的答案并认为这也适用于VirtualBox的任何人,请参阅@superbatfish对原始问题的评论。他很好地说明了虚拟化和仿真之间的区别。

具体来说,“硬件辅助VM”在“顶级”来宾OS中将不可用(也就是说,在撰写本文时,VirtualBox尚未在来宾OS中提供硬件VM)。使用VirtualBox,这意味着您只能创建32位“嵌套来宾”操作系统,即使顶级来宾是64位并且“实际”主机具有硬件VM。

可能对您而言不是最佳选择,但值得注意。我需要这样做,以便在Windows内部的Ubuntu来宾上运行Vagrant,以进行Chef Cookbook测试。


那么,您能够在Windows主机内的Ubuntu guest虚拟机上运行Vagrant吗?
威斯巴基2015年

2
@wisbucky是的,我可以在32位模式下运行它,但不能在64位模式下运行。由于我所有的生产系统都是64位的,因此这不是一个完美的测试,但仍然可以很好地工作。
Toby J

3
除非我没有记错,否则您现在可以通过使用Vagrant的Docker提供程序在Ubuntu VM中运行64位Vagrant盒,因为容器不依赖于硬件虚拟化:vagrantup.com/docs/docker。但是,您正在使用的Vagrant框必须支持该框。
布伦丹

@Brendan,除非必须运行特定的64位程序,否则使用docker容器与运行32位虚拟盒相比,性能明智还是相同?
serup

11

Linux-KVM对嵌套虚拟机提供了一些支持。我已在KVM IRC频道上提问,并获得了以下信息(但请不要相信,请自己尝试):

  • AMD CPU应该可以正常工作,已知使用Xen和Hyper-V的来宾可以工作,
  • 英特尔CPU需要最新的KVM Git源代码,只有具有KVM的客户机才能工作

我自己还没有尝试过。搜索“嵌套的KVM”应为您提供足够的信息,以便您自己尝试。

编辑:KVM将仅在Linux主机上运行。关于正确的嵌套VM支持,我尚未获得有关Windows虚拟化软件的任何可靠信息。“适当”是指管理程序向访客公开虚拟化扩展。您始终可以使用纯软件管理程序(例如,动态翻译)运行嵌套VM,但这会明显变慢。

编辑:您提到的Bochs是仅软件的管理程序。这意味着它总是很慢,并且如果主机上的虚拟机管理程序向来宾公开虚拟化扩展(就像KVM一样),则是无关紧要的。但是,大多数其他虚拟化软件(KVM,VirtualBox,VMWare)可以利用这些扩展,并且如果可用的话,它们的性能会更好。


进行第二次编辑:因此,如果我只是要运行Bochs(并且我不太在意它的运行速度是否太慢),我是否需要担心KVM?
哈维尔

如果您在虚拟机中运行Bochs,它的速度将与在硬件上运行时一样慢(假设您的硬件具有虚拟化扩展,即AMD-v或VT-x,并且已在BIOS中启用;否则将甚至更慢,虚拟机中的所有内容也会一样)。
2011年

关于Windows虚拟化……似乎有可能,但是(截至2016年6月)仅适用于HyperV-on-HyperV,“ Windows Insider” OS构建以及Intel硬件。从msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/...
马克

3

这是可能的,但不是很可行,特别是对于开发而言。您可能应该将Linux作为本机OS运行,或者再找一个主机来托管VM。


我知道这可能很复杂,但是“不太可行”到底是什么意思?
哈维尔

1
我敢打赌@peelman的意思是:“出于实际目的,它太慢了。” 我自己还没有尝试过。
Carf 2011年

恰好是@carlf。
Peelman


1

是的,您可以在虚拟机中运行虚拟机。我要做的是得到一台Windows 7 Ultimate x64计算机,在虚拟机上运行相同的OS,然后在第三层运行32位版本(第三层不能处理64位)。当时很漫长,但我设法通过它在互联网浏览器上进入了纽约时代。如果您没有强大的计算机,但是您正在运行的是Linux和Bochs(这是轻量级的操作系统),则这可能会很困难,因此应该有可能。


-2

是的,有可能,因为您的计算机功能强大到可以处理它。

在我的机器(i7 4770S,16GB RAM)上,我设法获得了4.5的VM感知度(最后一个崩溃了一半的时间)。

我使用了VMware Player 12,因为VirtualBox不喜欢模拟VM-x,而且速度确实较慢。现在,我试图使W2K在XP上运行,但是VMware无法安装,VirtualBox会产生BSOD,因此我正在尝试使用QEMU。

查看此屏幕截图(我见过的最漂亮的屏幕截图之一):

在此处输入图片说明


这个答案提供什么新信息?
Ramhound
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.