題 你可以在虛擬機中運行機器模擬器(Bochs)嗎?


例如,是否有可能在Linux 7上運行帶有Linux客戶端的VirtualBox,並且在Linux機器內運行Bochs?

原因是我對開始操作系統開發感興趣,並且我發現所有教程和內容都更容易在* nix機器上使用。我嘗試過使用Cygwin,但我認為它增加了另一層複雜性,並不一定會讓事情變得更容易。


82
2017-07-19 17:33


起源


雙啟動是Linux,Windows相對容易,最終結果運行得更快。唯一真正的缺點是您必須重新啟動才能切換操作系統。 - lyallcooper
@AUAnonymous:我知道,但我想繼續運行Windows。 - Javier
如果您沒有設法讓虛擬機工作或者它們不能正常工作,那麼它總是一個選項。 - lyallcooper
我要說這個問題標題很差。 Bochs不是與VirtualBox和VMWare同樣意義上的虛擬化軟件。它是一個模擬器。它不提供CPU虛擬化。這裡的區別不僅僅是迂腐。你可以期待像bochs這樣的模擬器能夠以相當高的可信度在VM內部工作。在VM中“嵌套”運行真正的虛擬化軟件是一個非常棘手的問題。例如,此功能僅適用 自Fusion 4起在VMWare中實施。 - superbatfish
VirtualMachine-ception:D您有可能無法跟踪虛擬機中有多少級別。那一刻,當你意識到你剛剛破壞了你的物理硬盤,而不是你想要測試的嵌套虛擬硬盤之一:P - developerbmw


答案:


長話短說:

每個虛擬機在技術上都是彼此“獨立”的,並且具有 VirtualBox的,您可以輕鬆地執行此操作,因為Windows和Linux主機操作系統(模擬或非模擬)都支持它。您可以簡單地使用Windows作為“基本主機”操作系統,在VM中運行Linux,然後使用  操作系統作為Bochs的新基礎主機。

請注意,您唯一的限制是您的硬件。根據開發的要求,您可能需要更多內存或升級到64位“基本主機”操作系統。話雖如此,如果您明智地選擇Linux發行版,任何現代系統都應該能夠像這樣任意嵌套。

如果啟用,您將看到改進的性能 x86虛擬化 在您的計算機上支持(如果您的主板和CPU支持它),以及AFAIK,您可以將此功能“傳遞”到多個嵌套虛擬機。如果我們有 n 互相嵌套的虛擬機,只要支持這個就可以了 1ST 到了 n-1 嵌套的guest虛擬機操作系統支持x86虛擬化(基本主機也必須支持它)。請注意,仍有 一些安全問題 要知道你是否這樣做,所以採取適當的預防措施。


63
2017-07-19 18:49



它似乎確實有效。畢竟,如果我需要速度,我首先不會使用Bochs。雖然不是最受歡迎的,但我覺得你的答案更完整,更重要,所以我會接受它。 - Javier
它只是我,或者這個答案似乎不是關於跑步 多 虛擬機,不是 嵌套 那些? - Thomas Padron-McCarthy
@Thomas Padron-McCarthy,我 是 談論嵌套的。在這方面,我修改了答案以更加明確。 - Breakthrough
Bochs不是這個一般性問題的最佳測試用例,因為它是一個模擬器,而不是VM。 (見我對OP的評論。) - superbatfish


我有時在VMware Workstation中運行整個VMware vSphere虛擬基礎架構,以及虛擬Cisco路由器和交換機以及EMC Celerra虛擬化存儲設備,用於自學習和測試目的。

我將其稱為“初始計算”,它可能會讓人感到困惑。然而,它比使用真實裝備便宜一些。


40
2017-07-19 19:40



這應該證明了這一點的可行性。 vinf.net/2010/02/25/... - Mike Soule
@Mike:您的鏈接詳細信息在ESX中運行ESXi,但我使用了一些鏈接,例如TechHead,它是首先讓我進入虛擬化的主要站點之一。有關在VMware Workstation中運行vSphere基礎架構的大量信息: google.co.uk/... - paradroid
你知道“起始”一詞並不是指[事物中的事物]概念,對嗎? - ekillaby
@countfloortiles:當然,這是對電影的引用。 - paradroid
@paradroid你應該命名為“CompCeption”或“VirtuaCeption”。 - Mohd Abdul Mujib


對於閱讀此問題的任何人,請查看已接受的答案,並認為這也適用於VirtualBox,請參閱 來自@superbatfish的評論 在原來的問題上。他對虛擬化和仿真之間的區別提出了一個很好的觀點。

具體而言,“硬件輔助虛擬機”將無法在“頂級”客戶操作系統中使用(即,在撰寫本文時, VirtualBox不在來賓操作系統中提供硬件VM)。使用VirtualBox,這意味著您只能創建32位“嵌套訪客”操作系統,即使頂級訪客為64位且您的“真實”主機具有硬件VM。

可能不適合你,但值得注意。我需要這個,以便在Windows內的Ubuntu客戶端上運行Vagrant,以進行Chef cookbook測試。


30
2018-05-29 16:27



那麼你能在Windows主機上的Ubuntu客戶端上運行Vagrant嗎? - wisbucky
@wisbucky是的,我可以在32位模式下運行它,但不能運行64位模式。由於我的所有生產系統都是64位的,因此它不是一個完美的測試,但仍然運行良好。 - Toby J
除非我弄錯了,你現在可以通過使用Docker提供程序為Vagrant在Ubuntu VM中運行64位Vagrant盒子,因為容器不依賴於硬件虛擬化: vagrantup.com/docs/docker。但是,你正在使用的Vagrant盒子必須支持它。 - Brendan
@Brendan,除非你必須運行特定的64位程序,然後使用docker容器與運行32bit虛擬盒相比,性能是否相同或者是相同的? - serup


Linux-KVM對嵌套虛擬機有一些支持。我已經在KVM IRC頻道上詢問並獲得了以下信息(但不要理解我的意見,請親自嘗試):

  • AMD CPU應該運行良好,已知Xen和Hyper-V的客戶可以工作,
  • Intel CPU需要最新的KVM Git源代碼,只有擁有KVM的客戶才能使用

我自己還沒試過。搜索“KVM嵌套”應該會為您提供足夠的信息來自行嘗試。

編輯:KVM只能在Linux主機上運行。我沒有獲得有關正確嵌套VM支持的Windows虛擬化軟件的任何可靠信息。 “正確”是指虛擬機管理程序向訪客公開虛擬化擴展。您始終可以使用純軟件管理程序(例如動態轉換)運行嵌套VM,但速度會明顯變慢。

編輯:你提到的Bochs是一個純軟件管理程序。這意味著它總是很慢,如果主機上的虛擬機管理程序向訪客公開虛擬化擴展(如KVM那樣),那就無關緊要了。然而,大多數其他虛擬化軟件(KVM,VirtualBox,VMWare)可以使用這些擴展,並且如果可用,它們的性能會更好。


11
2017-07-19 18:36



到你的第二次編輯:所以,如果我要去運行Bochs(如果它很慢,我不會太在意),我是否需要擔心KVM的問題? - Javier
如果您在虛擬機內運行Bochs,它將像在硬件上運行它一樣慢(假設您的硬件具有虛擬化擴展,即A​​MD-v或VT-x並且它們在BIOS中啟用;否則它將是甚至更慢,VM中的所有內容都會更慢。 - Ambroz Bizjak
關於Windows虛擬化......似乎有可能,但(截至2016年6月)僅適用於HyperV-on-HyperV,“Windows Insider”操作系統構建,以及英特爾硬件。從 msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/... - Mark


它可能,但不是很可行,特別是對於開發。您應該將Linux作為本機操作系統運行,或者獲取第二個框來託管VM。


3
2017-07-19 17:47



我知道它可能很複雜,但究竟是什麼意思“不太可行”? - Javier
我敢打賭@peelman的意思是:“實際目的太慢了。”我自己沒試過。 - CarlF
@carlf正好。 - peelman


此過程的詳細說明在此頁面上: https://wiki.openstack.org/wiki/XenServer/VirtualBox

在VirtualBox機器網卡中,您必須設置允許所有處於混雜模式和其他幾個選項,並且您可以在vm中使用os,例如Xen內部的Xenserver,例如VirtualBox的。


1
2018-02-08 02:17





,您可以在虛擬機中運行虛擬機。我做的是獲得一台Windows 7 Ultimate x64計算機,在虛擬機上運行相同的操作系統,然後在第三層運行32位版本(它無法在第三層處理64位)。這是相當滯後的,但我設法在互聯網瀏覽器上到達紐約時代。如果您沒有功能強大的計算機,但是您正在運行Linux和Bochs(這是輕量級的操作系統),這可能很難,因此它應該是可行的。


1
2017-08-09 01:02