Можете ли вы запустить эмулятор машины (Bochs) внутри виртуальной машины?


82

Можно ли, скажем, запустить VirtualBox в Windows 7 с гостем Linux, а внутри этой машины Linux запустить Bochs?

Причина в том, что я заинтересован в том, чтобы начать разработку ОС, и я обнаружил, что все учебные пособия и прочее намного проще следовать на * nix машинах. Я пытался использовать Cygwin, но я думаю, что это добавляет еще один уровень сложности и не обязательно делает вещи проще.


1
Двойная загрузка - это Linux и Windows, относительно легко сделать, и конечный результат выполняется намного быстрее. Единственный реальный недостаток - перезагрузка для переключения ОС.
lyallcooper

@AUAnonymous: я знаю это, но я хочу продолжать использовать Windows.
Хавьер

Это всегда вариант, если вам не удается заставить работать виртуальные машины или они работают не очень хорошо.
lyallcooper

12
Я собираюсь утверждать, что этот вопрос плохо назван. Bochs не является программным обеспечением для виртуализации в том же смысле, что и VirtualBox и VMWare. Это эмулятор. Он не предлагает виртуализацию процессора. Различие здесь не просто педантичное. Вы можете ожидать, что эмулятор типа bochs будет работать внутри виртуальной машины с достаточно высокой достоверностью. Запуск истинного программного обеспечения виртуализации, «вложенного» в виртуальную машину, является гораздо более сложной задачей. Например, эта функция была реализована только в VMWare начиная с Fusion 4 .
Superbatfish

2
VirtualMachine-ception: D У вас есть опасность потерять отслеживание того, сколько уровней в виртуальных машинах вы находитесь. В тот момент, когда вы понимаете, что вы просто испортили свой физический жесткий диск вместо одного из вложенных виртуальных, на которых вы должны были тестировать: P
developerbmw

Ответы:


63

Короче говоря: да .

Каждая виртуальная машина технически «независима» друг от друга, и с помощью VirtualBox вы можете легко это сделать, поскольку она поддерживается в хост-системах Windows и Linux (эмулируемых или нет). Вы можете просто использовать Windows в качестве ОС «базовый хост», запустить Linux на виртуальной машине, а затем использовать эту операционную систему в качестве нового базового хоста для Bochs.

Обратите внимание, что единственным ограничением здесь является ваше оборудование. В зависимости от требований вашей разработки вам может потребоваться больше памяти или обновление до 64-разрядной операционной системы «базовый хост». При этом, если вы выбираете свои дистрибутивы Linux разумно, любая современная система должна быть способна к произвольному вложению, подобному этому.

Вы увидите повышение производительности, если включите поддержку виртуализации x86 на своем компьютере (если ваша материнская плата и процессор поддерживают ее), и AFAIK, вы сможете «передать» эту функцию нескольким вложенным виртуальным машинам. Если у нас есть nвиртуальные машины , вложенные в Афоризме, это поддерживается до тех пор , как 1улица к - n-1й вложенной гостевой ОС имеет поддержку виртуализации x86 (базовый узел должен также поддерживать его). Обращаем ваше внимание на то, что, если вы это сделаете, все еще есть некоторые проблемы с безопасностью , поэтому примите соответствующие меры предосторожности.


2
Кажется, это действительно работает. В конце концов, если бы мне нужна была скорость, я бы вообще не использовал Bochs. Хотя я не пользуюсь наибольшим спросом, я чувствую, что ваш ответ является более полным и конкретным, поэтому я приму его.
Хавьер

Это только я, или этот ответ не касается нескольких виртуальных машин, а не вложенных ?
Томас Падрон-Маккарти

@Thomas Padron-McCarthy, я был говорить о вложенных из них. Я изменил ответ, чтобы быть более четким в этом отношении.
Прорыв

7
Bochs - не лучший тест для этого общего вопроса, так как это эмулятор, а не виртуальная машина. (См. Мой комментарий к ОП.)
Superbatfish

Разве этот ответ не противоречит ответу TobyJ и неразрешенному запросу функции VirtualBox, на который ссылается его ответ?
ChrisW

40

Иногда я запускаю целую виртуальную инфраструктуру VMware vSphere в VMware Workstation, а также виртуальные маршрутизаторы и коммутаторы Cisco и EMC Celerra Virtualized Storage Appliance для целей самообучения и тестирования.

Я называю это «Начальные вычисления», и это может привести к путанице. Это, однако, несколько дешевле, чем использование реальной экипировки.


1
Это должно доказать жизнеспособность этого. vinf.net/2010/02/25/…
Майк Соул

1
@Mike: Ваша ссылка подробно описывает ESXi в ESX, но я использовал некоторые ссылки, такие как TechHead, который является одним из основных сайтов, которые в первую очередь привели меня в виртуализацию. Также есть много информации о работе инфраструктуры vSphere в VMware Workstation: google.co.uk/…
paradroid

2
Вы знаете, что термин «начало» не относится к концепции «вещь в вещи», верно?
ekillaby

7
@countfloortiles: Это ссылка на фильм, конечно.
paradroid

1
@paradroid вы должны были назвать "CompCeption" или "VirtuaCeption".
Мохд Абдул Муджиб

32

Любой, кто прочитает этот вопрос, увидит принятый ответ и думает, что это относится и к VirtualBox, см. Комментарий @superbatfish по первоначальному вопросу. Он хорошо понимает разницу между виртуализацией и эмуляцией.

В частности, «виртуальная машина с аппаратным обеспечением» не будет доступна в гостевой ОС «верхнего уровня» (то есть, на момент написания этой статьи VirtualBox не предоставляет аппаратную виртуальную машину в гостевых ОС ). С VirtualBox это означает, что вы можете создавать только 32-битные «вложенные гостевые» ОС, даже если гостевой уровень верхнего уровня является 64-битным, а ваш «настоящий» хост имеет аппаратную виртуальную машину.

Может быть, для вас это и не показательное шоу, но это стоит отметить. Мне это нужно для того, чтобы запустить Vagrant на гостевом компьютере Ubuntu в Windows, для тестирования поваренной книги Chef.


Так вы смогли запустить Vagrant на гостевой Ubuntu на хосте Windows?
Висбуки

2
@wisbucky да, я могу запустить его в 32-битном режиме, но не в 64-битном. Поскольку все мои производственные системы являются 64-битными, это не было идеальным тестом, но все еще работало достаточно хорошо.
Тобиас Дж

3
Если я не ошибаюсь, теперь вы можете запускать 64-битные блоки Vagrant в виртуальной машине Ubuntu с помощью поставщика Docker для Vagrant, поскольку контейнеры не зависят от виртуализации оборудования: vagrantup.com/docs/docker . Однако Vagrant box, который вы используете, должен будет поддерживать это.
Брендан

@Brendan, если вам не нужно запускать конкретные 64-битные программы, а затем использовать докер-контейнер по сравнению с 32-битным виртуальным блоком, является ли производительность одинаковой или нет?
serup 22.11.16

11

Linux-KVM имеет некоторую поддержку вложенных виртуальных машин. Я спросил на IRC-канале KVM и получил следующую информацию (но не верьте мне на слово, попробуйте сами):

  • Процессоры AMD должны хорошо работать, известно, что гости с Xen и Hyper-V работают,
  • Процессорам Intel нужен последний исходный код KVM Git, и работают только гости с KVM

Я еще не пробовал это сам. Поиск "KVM nested" должен дать вам достаточно информации, чтобы попробовать его самостоятельно.

РЕДАКТИРОВАТЬ: KVM будет работать только на хосте Linux. Я не получил никакой достоверной информации о программном обеспечении для виртуализации Windows относительно правильной поддержки вложенных ВМ. Под «правильным» я подразумеваю, что гипервизор предоставляет гостю расширения виртуализации. Вы всегда можете запустить вложенную ВМ, используя чистый программный гипервизор (например, динамический перевод), но это будет заметно медленнее.

РЕДАКТИРОВАТЬ: Bochs, который вы упомянули, является программным гипервизором. Это означает, что он всегда будет медленным и бесполезным, если гипервизор на хосте выставляет расширения виртуализации гостю (как это делает KVM). Однако большинство других программ виртуализации (KVM, VirtualBox, VMWare) могут использовать эти расширения и будут работать намного лучше, если они будут доступны.


К вашему второму редактору: итак, если я собираюсь запустить Bochs (и мне все равно, будет ли он медленным), нужно ли мне беспокоиться о KVM?
Хавьер

Если вы запускаете Bochs внутри виртуальной машины, она будет такой же медленной, как если бы вы запускали ее на оборудовании (при условии, что ваше оборудование имеет расширения виртуализации, то есть AMD-v или VT-x, и они включены в BIOS; в противном случае это будет еще медленнее, как и все в ВМ).
Амброз Бизжак

Что касается виртуализации Windows ... это представляется возможным, но (по состоянию на июнь 2016 года) работает только с HyperV-on-HyperV, со сборками ОС Windows Insider и на оборудовании Intel. От msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/...
Mark

3

Это возможно, но не очень выполнимо, особенно для развития. Вы, вероятно, должны рассматривать Linux как свою собственную операционную систему или получать вторую коробку для размещения виртуальных машин.


Я понимаю, что это может быть сложно, но что именно вы подразумеваете под "не очень выполнимо"?
Хавьер

1
Могу поспорить, что @peelman означает: «Это слишком медленно для практических целей». Я сам не пробовал.
CarlF

@ Carlf точно.
Пилман

1

Подробное описание этого процесса находится на этой странице: https://wiki.openstack.org/wiki/XenServer/VirtualBox

В сетевых картах машины VirtualBox вы должны разрешить все в Promiscuous Mode и некоторых других опциях, и вы можете иметь os внутри vm, например, Xenserver внутри vm, например VirtualBox.


1

Да , вы можете запустить виртуальную машину на виртуальной машине. Я получил компьютер с Windows 7 Ultimate x64, запустил ту же операционную систему на виртуальной машине, а затем запустил 32-разрядную версию (она не могла обрабатывать 64-разрядную версию на 3-м уровне) на 3-м уровне. Это было довольно медленно, но мне удалось добраться до Нью-Йорк Таймс с помощью Internet Explorer. Это может быть сложно, если у вас нет мощного компьютера, но вы используете Linux и Bochs, которые являются легковесными операционными системами, поэтому это должно быть возможно.


-2

Да , это возможно, учитывая, что ваш компьютер достаточно мощный, чтобы справиться с этим.

На моей машине (i7 4770S, 16 ГБ ОЗУ) мне удалось получить уровень виртуальной целостности 4.5 (последний сбой в половине случаев).

Я использовал VMware Player 12, потому что VirtualBox не любил эмулировать VM-x, и это было намного медленнее. Сейчас я пытаюсь заставить W2K работать на XP, но VMware не может установить, VirtualBox создает BSOD, поэтому я пытаюсь использовать QEMU.

Посмотрите на этот скриншот (один из самых красивых скриншотов, которые я когда-либо видел):

введите описание изображения здесь


Какую новую информацию дает этот ответ?
Ramhound
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.