Você pode executar um emulador de máquina (Bochs) dentro de uma máquina virtual?

82

É possível, digamos, executar o VirtualBox no Windows 7 com um convidado Linux e, dentro dessa máquina Linux, executar Bochs?

O motivo é que estou interessado em iniciar o desenvolvimento do sistema operacional e descobri que todos os tutoriais e outras coisas são muito mais fáceis de seguir nas máquinas * nix. Tentei usar o Cygwin, mas acho que está adicionando outra camada de complexidade e não necessariamente facilitando as coisas.

Javier
fonte
1
A inicialização dupla é Linux e Windows é relativamente fácil, e o resultado final é executado muito mais rapidamente. A única desvantagem real é que você precisa reiniciar para trocar de SO.
21811 lyallcooper
@AUAnonymous: Eu sei disso, mas quero continuar executando o Windows.
Javier
É sempre sempre uma opção se você não conseguir fazer as VMs funcionarem ou se elas não funcionarem muito bem.
21411 lylycooper
12
Vou argumentar que esta questão é mal intitulada. Bochs não é um software de virtualização no mesmo sentido que o VirtualBox e o VMWare. É um emulador. Não oferece virtualização de CPU. A distinção aqui não é meramente pedante. Você pode esperar que um emulador como o bochs funcione dentro de uma VM com confiança bastante alta. A execução de um verdadeiro software de virtualização "aninhado" em uma VM é um problema muito mais complicado. Por exemplo, esse recurso foi implementado apenas no VMWare a partir do Fusion 4 .
superbatfish
2
VirtualMachine-ception: D Você tem o risco de perder o controle de quantos níveis existem nas máquinas virtuais. Naquele momento em que você percebe que acabou de corromper seu disco rígido físico em vez de um dos virtuais aninhados nos quais deveria testar: P
developerbmw

Respostas:

63

Para encurtar a história: sim .

Cada máquina virtual é tecnicamente "independente" uma da outra e, com o VirtualBox , você pode fazer isso facilmente, pois é suportado nos sistemas operacionais host Windows e Linux (emulados ou não). Você pode simplesmente usar o Windows como seu sistema operacional "host base", executar o Linux em uma VM e, em seguida, usar esse sistema operacional como o novo host base para Bochs.

Observe que sua única limitação aqui é o seu hardware. Dependendo dos requisitos do seu desenvolvimento, você pode precisar de mais memória ou uma atualização para um sistema operacional "host de base" de 64 bits. Dito isto, se você escolher suas distribuições Linux com sabedoria, qualquer sistema moderno deve ser capaz de aninhamento arbitrário como esse.

Você verá um desempenho aprimorado se habilitar o suporte à virtualização x86 em seu computador (se sua placa-mãe e CPU o suportar) e o AFAIK, poderá "transmitir" esse recurso para várias máquinas virtuais aninhadas. Se temos nmáquinas virtuais aninhados em eachother, este é suportado, desde que o 1st ao n-1th sistema operacional convidado aninhada tem suporte para virtualização de x86 (o anfitrião de base também deve apoiá-lo). Observe que ainda há alguns problemas de segurança a serem observados se você fizer isso, portanto, tome as precauções apropriadas.

Avanço
fonte
2
Parece que realmente funciona. Afinal, se eu precisasse de velocidade, não usaria Bochs em primeiro lugar. Embora não seja a mais votada, sinto que sua resposta é a mais completa e objetiva, então aceitarei.
Javier
Sou eu, ou essa resposta não parece ser sobre a execução de várias máquinas virtuais, não aninhadas ?
Thomas Padron-McCarthy
@ Thomas Padron-McCarthy, eu estava falando sobre os aninhados. Modifiquei a resposta para ser mais explícito nesse sentido.
Breakout
7
Bochs não é o melhor caso de teste para essa pergunta geral, pois é um emulador, não uma VM. (Ver o meu comentário sobre o OP.)
superbatfish
Não é esta a resposta contrariada por resposta de TobyJ eo não resolvido pedido de recurso VirtualBox que seus links de resposta para?
ChrisW
40

Às vezes, eu executo toda uma infraestrutura virtual do VMware vSphere na VMware Workstation, juntamente com roteadores e switches virtuais da Cisco e o EMC Celerra Virtualized Storage Appliance, para fins de autoaprendizagem e teste.

Eu chamo isso de 'computação inicial' e pode ficar bem confuso. No entanto, é um pouco mais barato do que usar o equipamento real.

paradroid
fonte
1
Isso deve provar a viabilidade disso. Vinf.net/2010/02/25/…
Mike Soule
1
@ Mike: Os detalhes do seu link executando o ESXi no ESX, mas eu usei alguns links, como o TechHead, que é um dos principais sites que me levou à virtualização. Há muitas informações sobre como executar uma infraestrutura do vSphere na VMware Workstation: google.co.uk/…
paradroid
2
Você sabe que o termo "criação" não se refere ao conceito [coisa dentro de uma coisa], certo?
precisa saber é o seguinte
7
@countfloortiles: É uma referência ao filme, é claro.
Paradroid
1
@paradroid você deveria ter chamado "CompCeption" ou "VirtuaCeption".
Mohd Abdul Mujib
32

Para quem lê esta pergunta, vê a resposta aceita e acha que isso também se aplica ao VirtualBox, consulte o comentário de @superbatfish sobre a pergunta original. Ele faz um bom argumento sobre a diferença entre virtualização e emulação.

Especificamente, a "VM assistida por hardware" não estará disponível no SO convidado "de nível superior" (ou seja, no momento em que este artigo foi escrito, o VirtualBox não fornece VM de hardware nos SO convidados ). Com o VirtualBox, isso significa que você só pode criar sistemas operacionais "convidado aninhado" de 32 bits, mesmo que o convidado de nível superior seja de 64 bits e o host "real" tenha VM de hardware.

Pode não ser um empecilho para você, mas vale a pena notar. Eu precisava disso para executar o Vagrant em um convidado do Ubuntu dentro do Windows, para testar os livros de receitas do Chef.

Tobias J
fonte
Então você foi capaz de executar o Vagrant no convidado do Ubuntu dentro do host do Windows?
21415 wisbucky
2
@wisbucky sim, eu poderia executá-lo no modo de 32 bits, mas não de 64 bits. Como todos os meus sistemas de produção são de 64 bits, não foi um teste perfeito, mas ainda funcionou bem o suficiente.
Tobias J
3
A menos que eu esteja enganado, agora você pode executar caixas do Vagrant de 64 bits na VM do Ubuntu usando o provedor Docker do Vagrant, pois os contêineres não dependem da virtualização do hardware: vagrantup.com/docs/docker . A caixa do Vagrant que você está usando terá que suportar isso.
Brendan
@Brendan, a menos que você precise executar programas específicos de 64 bits, usar o contêiner do docker em comparação com a caixa virtual de 32 bits, o desempenho é o mesmo ou não é?
Serup
11

O Linux-KVM tem algum suporte para máquinas virtuais aninhadas. Eu perguntei no canal IRC da KVM e obtive as seguintes informações (mas não aceite minha palavra, tente você mesmo):

  • As CPUs AMD devem funcionar bem, sabe-se que os hóspedes com Xen e Hyper-V funcionam,
  • As CPUs Intel precisam do código-fonte KVM Git mais recente, e apenas convidados com KVM trabalham

Eu ainda não tentei isso. Uma pesquisa por "KVM aninhado" deve fornecer informações suficientes para você experimentar.

EDIT: O KVM será executado apenas em um host Linux. Não obtive nenhuma informação confiável no software de virtualização do Windows referente ao suporte adequado à VM aninhada. Por 'adequado', quero dizer que o hipervisor expõe extensões de virtualização ao convidado. Você sempre pode executar uma VM aninhada usando um hipervisor de software puro (por exemplo, tradução dinâmica), mas isso será notavelmente mais lento.

EDIT: Bochs, que você mencionou, é um hipervisor somente de software. Isso significa que sempre será lento e não é relevante se o hipervisor no host expuser extensões de virtualização ao convidado (como o KVM). A maioria dos outros softwares de virtualização (KVM, VirtualBox, VMWare), no entanto, pode usar essas extensões e terá um desempenho muito melhor se estiverem disponíveis.

Ambroz Bizjak
fonte
Para sua segunda edição: Então, se eu vou rodar Bochs (e não me importo muito se for lento), preciso me preocupar com a coisa do KVM?
Javier
Se você estiver executando o Bochs dentro da máquina virtual, será tão lento quanto se você o executasse no hardware (assumindo que o seu hardware tenha extensões de virtualização, por exemplo, AMD-v ou VT-x e eles estejam ativados no BIOS; caso contrário, será ainda mais lento, como tudo na VM).
22611 Ambroz Bizjak
Em relação à virtualização do Windows ... parece possível, mas (a partir de junho de 2016) só funciona com o HyperV-on-HyperV, com compilações de SO "Windows Insider" e hardware Intel. De msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/…
Marque
3

É possível, mas não muito viável, principalmente para o desenvolvimento. Provavelmente, você deve executar o Linux como seu sistema operacional nativo ou obter uma segunda caixa para hospedar as VMs.

peelman
fonte
Entendo que é provável que seja complicado, mas o que exatamente você quer dizer com "não muito viável"?
Javier
1
Aposto que @peelman significa: "É muito lento para fins práticos". Eu não tentei eu mesmo.
19411 CarlF
@carlf precisamente.
22411 peelman
1

A descrição detalhada desse processo está nesta página: https://wiki.openstack.org/wiki/XenServer/VirtualBox

Nas placas de rede da máquina VirtualBox, é necessário definir permitir tudo no Modo Promíscuo e várias outras opções e você pode ter os dentro da vm, por exemplo, Xenserver dentro da vm, por exemplo, VirtualBox.

42n4
fonte
1

Sim , você pode executar uma máquina virtual em uma máquina virtual. O que fiz foi obter um computador com Windows 7 Ultimate x64, executar o mesmo sistema operacional na máquina virtual e, em seguida, executar uma versão de 32 bits (ela não suportava 64 bits na 3ª camada) na 3ª camada. Foi bastante lento, mas eu consegui chegar ao New York Times no Internet Explorer com ele. Isso pode ser difícil se você não tiver um computador poderoso, mas estiver executando Linux e Bochs, que são sistemas operacionais leves, por isso deve ser possível.

FluorescenteVerde5
fonte
-2

Sim , é possível, já que o seu computador é poderoso o suficiente para lidar com isso.

Na minha máquina (i7 4770S, 16 GB de RAM), eu consegui obter um nível de aceitação de VM de 4,5 (o último trava na metade do tempo).

Usei o VMware Player 12, porque o VirtualBox não gostava de emular o VM-x e era realmente mais lento. No momento, estou tentando fazer o W2K funcionar no XP, mas a VMware não pode instalar, o VirtualBox produz BSODs, então estou tentando usar o QEMU.

Veja esta captura de tela (uma das mais belas que já vi):

insira a descrição da imagem aqui

zdimension
fonte
Que novas informações essa resposta fornece?
Ramhound #