¿Se puede ejecutar un emulador de máquina (Bochs) dentro de una máquina virtual?


82

¿Es posible, por ejemplo, ejecutar VirtualBox en Windows 7 con un invitado Linux, y dentro de esa máquina Linux ejecutar Bochs?

La razón es que estoy interesado en comenzar el desarrollo del sistema operativo, y he descubierto que todos los tutoriales y demás son mucho más fáciles de seguir en las máquinas * nix. Intenté usar Cygwin, pero creo que está agregando otra capa de complejidad y no necesariamente facilitando las cosas.


1
El arranque dual es Linux y Windows es relativamente fácil de hacer, y el resultado final se ejecuta mucho más rápidamente. El único inconveniente real es que tienes que reiniciar para cambiar de sistema operativo.
lyallcooper

@AUAnonymous: Lo sé, pero quiero seguir ejecutando Windows.
Javier

Siempre es una opción si no logra que las máquinas virtuales funcionen o si no funcionan demasiado bien.
lyallcooper

12
Voy a argumentar que esta pregunta está mal titulada. Bochs no es un software de virtualización en el mismo sentido que VirtualBox y VMWare. Es un emulador. No ofrece virtualización de CPU. La distinción aquí no es meramente pedante. Puede esperar que un emulador como bochs funcione dentro de una máquina virtual con bastante confianza. Ejecutar un verdadero software de virtualización "anidado" en una VM es un problema mucho más complicado. Por ejemplo, esta característica solo se implementó en VMWare a partir de Fusion 4 .
superbatfish

2
VirtualMachine-ception: D Tiene el peligro de perder la noción de cuántos niveles de profundidad en las máquinas virtuales tiene. En ese momento cuando te das cuenta de que acabas de dañar tu disco duro físico en lugar de uno de los virtuales anidados en los que estabas probando: P
developerbmw

Respuestas:


63

Larga historia corta: .

Cada máquina virtual es técnicamente "independiente" entre sí, y con VirtualBox , podría hacerlo fácilmente, ya que es compatible con los sistemas operativos host de Windows y Linux (emulados o no). Simplemente puede usar Windows como su sistema operativo "host base", ejecutar Linux en una máquina virtual y luego usar ese sistema operativo como el nuevo host base para Bochs.

Tenga en cuenta que su única limitación aquí es su hardware. Dependiendo de los requisitos de su desarrollo, es posible que necesite más memoria o una actualización a un sistema operativo de "host base" de 64 bits. Dicho esto, si elige sabiamente sus distribuciones de Linux, cualquier sistema moderno debería ser capaz de anidar arbitrariamente como este.

Verá un rendimiento mejorado si habilita el soporte de virtualización x86 en su computadora (si su placa base y CPU lo admiten), y AFAIK, puede "pasar" esta función a múltiples máquinas virtuales anidadas. Si tenemos nmáquinas virtuales anidadas en el uno al otro, esto es apoyado siempre y cuando el 1st a la n-1XX sistema operativo huésped anidada tiene soporte para la virtualización x86 (el anfitrión base también debe ser compatible con ella). Tenga en cuenta que todavía hay algunos problemas de seguridad a tener en cuenta si hace esto, así que tome las precauciones adecuadas.


2
Parece que realmente funciona. Después de todo, si necesitara velocidad, no estaría usando Bochs en primer lugar. Si bien no es el más votado, creo que su respuesta es la más completa y precisa, así que la aceptaré.
Javier

¿Soy solo yo, o esta respuesta no parece ser sobre la ejecución de múltiples máquinas virtuales, no anidadas ?
Thomas Padron-McCarthy

@Thomas Padron-McCarthy, estaba hablando de los anidados. Modifiqué la respuesta para que sea más explícita a este respecto.
Avance el

77
Bochs no es el mejor caso de prueba para esta pregunta general, ya que es un emulador, no una VM. (Ver mi comentario sobre el OP.)
superbatfish

¿No se contradice esta respuesta con la respuesta de TobyJ y la solicitud de función VirtualBox sin resolver a la que se vincula su respuesta?
ChrisW

40

A veces ejecuto toda una infraestructura virtual de VMware vSphere dentro de VMware Workstation, junto con enrutadores y conmutadores virtuales de Cisco y el dispositivo de almacenamiento virtualizado Celerra de EMC, con fines de autoaprendizaje y pruebas.

Lo llamo "Computación de inicio", y puede ser bastante confuso. Sin embargo, es algo más barato que usar el equipo real.


1
Esto debería probar la viabilidad de esto. vinf.net/2010/02/25/…
Mike Soule

1
@Mike: los detalles de tu enlace ejecutan ESXi dentro de ESX, pero he usado algunos de los enlaces, como TechHead, que es uno de los principales sitios que me llevó a la virtualización en primer lugar. También hay mucha información sobre cómo ejecutar una infraestructura de vSphere en VMware Workstation: google.co.uk/…
paradroid

2
Sabes que el término "inicio" no se refiere al concepto [cosa dentro de una cosa], ¿verdad?
ekillaby

77
@countfloortiles: Es una referencia a la película, por supuesto.
paradroid

1
@paradroid debería haber llamado "CompCeption" o "VirtuaCeption".
Mohd Abdul Mujib

32

Para cualquiera que lea esta pregunta, vea la respuesta aceptada y piense que esto también se aplicará a VirtualBox, vea el comentario de @superbatfish sobre la pregunta original. Él hace un buen punto sobre la diferencia entre virtualización y emulación.

Específicamente, la "VM asistida por hardware" no estará disponible en el SO invitado de "nivel superior" (es decir, al momento de escribir esto, VirtualBox no proporciona VM de hardware en los SO invitados ). Con VirtualBox, esto significa que solo puede crear sistemas operativos de "invitado anidado" de 32 bits, incluso si el invitado de nivel superior es de 64 bits y su host "real" tiene VM de hardware.

Puede que no sea un espectáculo para ti, pero vale la pena señalar. Necesitaba esto para ejecutar Vagrant en un invitado de Ubuntu dentro de Windows, para probar el libro de cocina de Chef.


Entonces, ¿pudo ejecutar Vagrant en un invitado de Ubuntu dentro del host de Windows?
wisbucky

2
@wisbucky sí, podría ejecutarlo en modo de 32 bits, pero no en 64 bits. Como todos mis sistemas de producción son de 64 bits, no fue una prueba perfecta, pero funcionó lo suficientemente bien.
Tobias J

3
A menos que me equivoque, ahora podría ejecutar cajas Vagrant de 64 bits dentro de la VM de Ubuntu utilizando el proveedor Docker para Vagrant, ya que los contenedores no dependen de la virtualización de hardware: vagrantup.com/docs/docker . Sin embargo, el cuadro Vagabundo que estés usando tendrá que soportar eso.
Brendan

@Brendan, a menos que tenga que ejecutar programas específicos de 64 bits, y luego usar el contenedor acoplable en comparación con la ejecución de la caja virtual de 32 bits, ¿el rendimiento es el mismo o no?
serup

11

Linux-KVM tiene algún soporte para máquinas virtuales anidadas. Le pregunté por el canal KVM IRC y obtuve la siguiente información (pero no tome mi palabra, pruébelo usted mismo):

  • Las CPU AMD deberían funcionar bien, se sabe que los huéspedes con Xen e Hyper-V funcionan,
  • Las CPU Intel necesitan el último código fuente de KVM Git, y solo los invitados con KVM trabajan

Todavía no lo he probado. Una búsqueda de "KVM anidado" debería darle suficiente información para probarlo usted mismo.

EDITAR: KVM se ejecutará solo en un host Linux. No he recibido ninguna información confiable sobre el software de virtualización de Windows con respecto al soporte de VM anidado adecuado. Por "apropiado" quiero decir que el hipervisor expone las extensiones de virtualización al invitado. Siempre puede ejecutar una máquina virtual anidada utilizando un hipervisor de software puro (por ejemplo, traducción dinámica), pero eso será notablemente más lento.

EDITAR: Bochs, que mencionó, es un hipervisor solo de software. Esto significa que siempre será lento, y es irrelevante si el hipervisor en el host expone las extensiones de virtualización al invitado (como lo hace KVM). Sin embargo, la mayoría de los otros softare de virtualización (KVM, VirtualBox, VMWare) pueden hacer uso de esas extensiones y funcionarán mucho mejor si están disponibles.


Para su segunda edición: Entonces, si solo voy a ejecutar Bochs (y no me importa demasiado si es lento), ¿debo preocuparme por lo de KVM?
Javier

Si está ejecutando Bochs dentro de la máquina virtual, será tan lento como si lo ejecutara en hardware (suponiendo que su hardware tenga extensiones de virtualización, es decir, AMD-v o VT-x y estén habilitadas en BIOS; de lo contrario, será incluso más lento, como lo hará todo en la VM).
Ambroz Bizjak

Con respecto a la virtualización de Windows ... parece posible, pero (a partir de junio de 2016) solo funciona con HyperV-on-HyperV, con las compilaciones del sistema operativo "Windows Insider" y en el hardware Intel. De msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/…
Marque el

3

Es posible, pero no muy factible, especialmente para el desarrollo. Probablemente debería considerar ejecutar Linux como su sistema operativo nativo u obtener un segundo cuadro para alojar las máquinas virtuales.


Entiendo que es probable que sea complicado, pero ¿qué quiere decir exactamente con "no muy factible"?
Javier

1
Apuesto a que @peelman significa: "Es demasiado lento para fines prácticos". No lo he intentado yo mismo.
CarlF

@carlf con precisión.
peelman

1

La descripción detallada de este proceso se encuentra en esta página: https://wiki.openstack.org/wiki/XenServer/VirtualBox

En las tarjetas de red de la máquina VirtualBox, debe configurar permitir todo en modo promiscuo y varias otras opciones y puede tener un sistema operativo dentro de vm, por ejemplo, Xenserver dentro de vm, por ejemplo, VirtualBox.


1

, puede ejecutar una máquina virtual en una máquina virtual. Lo que hice fue obtener una computadora con Windows 7 Ultimate x64, ejecutar el mismo sistema operativo en la máquina virtual, luego ejecutar una versión de 32 bits (no podía manejar 64 bits en la tercera capa) en la tercera capa. Fue bastante lento pero pude llegar a los tiempos de Nueva York en Internet Explorer con él. Esto puede ser difícil si no tiene una computadora poderosa, pero está ejecutando Linux y Bochs, que son sistemas operativos livianos, por lo que debería ser posible.


-2

, es posible, dado que su computadora es lo suficientemente potente como para manejarla.

En mi máquina (i7 4770S, 16 GB de RAM) logré obtener un nivel de ceptividad de VM de 4.5 (el último falla la mitad del tiempo).

Utilicé VMware Player 12, porque a VirtualBox no le gustaba emular VM-x, y era mucho más lento. En este momento, estoy tratando de hacer que W2K funcione en XP, pero VMware no puede instalar, VirtualBox produce BSOD, así que estoy tratando de usar QEMU.

Vea esta captura de pantalla (una de las capturas de pantalla más hermosas que he visto):

ingrese la descripción de la imagen aquí


¿Qué nueva información proporciona esta respuesta?
Ramhound
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.