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


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

O motivo é que estou interessado em iniciar o desenvolvimento do SO, e descobri que todos os tutoriais e outras coisas são muito mais fáceis de serem seguidas em máquinas * nix. Eu tentei usar o Cygwin, mas acho que está adicionando outra camada de complexidade e não necessariamente tornando as coisas mais fáceis.


82


origem


A inicialização dupla é Linux e o Windows é relativamente fácil de fazer, e o resultado final é executado muito mais rapidamente. A única desvantagem real é que você tem que reiniciar para alternar os sistemas operacionais. - lyallcooper
@AUAnonymous: Eu sei disso, mas quero continuar executando o Windows. - Javier
É sempre uma opção se você não conseguir que as VMs funcionem ou se elas não funcionarem muito bem. - lyallcooper
Eu vou argumentar que esta questão é mal titulada. 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. Executar um verdadeiro software de virtualização "aninhado" em uma VM é um problema muito mais complicado. Por exemplo, esse recurso era apenas implementado no VMWare a partir do Fusion 4. - superbatfish
VirtualMachine-ception: D Você corre o risco de perder a noção de quantos níveis de profundidade de máquinas virtuais você é. Aquele momento em que você percebe que acabou de corromper seu disco rígido físico em vez de um dos virtuais aninhados que você deveria testar: - developerbmw


Respostas:


Longa história curta: sim.

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

Note que sua única limitação aqui é o seu hardware. Dependendo dos requisitos do seu desenvolvimento, você pode precisar de mais memória ou de um upgrade para um sistema operacional "host base" de 64 bits. Dito isto, se você escolher sabiamente suas distros Linux, qualquer sistema moderno deveria ser capaz de aninhar arbitrariamente assim.

Você verá um desempenho melhorado se ativar virtualização x86 suporte em seu computador (se sua placa-mãe e CPU o suportarem) e AFAIK, você pode "passar" por esse recurso para várias máquinas virtuais aninhadas. Se tiver-mos n máquinas virtuais aninhadas uma na outra, isso é suportado desde que o 1st ao n-1º O SO guest aninhado tem suporte para virtualização x86 (o host base também deve suportá-lo). Observe que ainda há alguns problemas de segurança para estar ciente de se você fizer isso, tome as devidas precauções.


63



Parece que realmente funciona. Afinal, se eu precisasse de velocidade, não estaria usando Bochs em primeiro lugar. Apesar de não ser o mais votado, sinto que sua resposta é mais completa e objetiva, então aceito. - Javier
É só eu, ou essa resposta não parece ser sobre correr múltiplo máquinas virtuais, não aninhado uns? - Thomas Padron-McCarthy
@Thomas Padron-McCarthy, eu estava falando sobre os aninhados. Eu modifiquei a resposta para ser mais explícito com relação a isso. - Breakthrough
Bochs não é o melhor caso de teste para essa questão geral, já que é um emulador, não uma VM. (Veja meu comentário sobre o OP.) - superbatfish


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

Eu chamo de 'Inception Computing', e isso pode ficar bastante confuso. No entanto, é um pouco mais barato do que usar o equipamento real.


40



Isso deve provar a viabilidade disso. vinf.net/2010/02/25/… - Mike Soule
@Mike: Seu link detalha a execução do ESXi no ESX, mas usei alguns dos links, como o TechHead, que é um dos principais sites que me colocaram na virtualização. Há muitas informações sobre como executar uma infraestrutura do vSphere no VMware Workstation também: google.co.uk/… - paradroid
Você sabe que o termo "início" não se refere ao conceito de "coisa dentro de uma coisa", certo? - ekillaby
@countfloortiles: É uma referência ao filme, claro. - paradroid
@paradroid você deveria ter chamado "CompCeption" ou "VirtuaCeption". - 9KSoft


Para quem lê esta pergunta, vê a resposta aceita, e acha que isso se aplicará ao VirtualBox também, por favor veja Comentário de @superbatfish na pergunta original. Ele faz uma boa observação sobre a diferença entre virtualização e emulação.

Especificamente, "VM assistida por hardware" não estará disponível no sistema operacional convidado de "nível superior" (ou seja, no momento da redação deste artigo, O VirtualBox não fornece VM de hardware em sistemas operacionais convidados). Com o VirtualBox, isso significa que você só pode criar sistemas operacionais "aninhados" de 32 bits, mesmo que o convidado de nível superior seja de 64 bits e seu host "real" tenha VM de hardware.

Pode não ser um showstopper para você, mas é digno de nota. Eu precisava disso para rodar o Vagrant em um convidado do Ubuntu dentro do Windows, para o teste do livro de receitas do Chef.


30



Então você conseguiu rodar o Vagrant no Ubuntu dentro do Windows? - wisbucky
@wisbucky Sim, eu poderia executá-lo no modo de 32 bits, mas não no modo 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. - Toby J
A não ser que eu esteja enganado, você pode agora rodar caixas Vagrant de 64-bit dentro da VM Ubuntu usando o provedor Docker para o Vagrant, já que os contêineres não dependem da virtualização de hardware: vagrantup.com/docs/docker. A caixa do Vagrant que você está usando terá que suportar isso, no entanto. - Brendan
@Brendan, a menos que você tenha que rodar programas específicos de 64 bits, então usar o contêiner docker em comparação com a caixa virtual de 32 bits, é o mesmo ou é o desempenho? - serup


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

  • CPUs da AMD devem funcionar bem, os hóspedes com Xen e Hyper-V são conhecidos por funcionar,
  • Os processadores Intel precisam do código-fonte mais recente do KVM Git e apenas os convidados com o KVM trabalham

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

EDIT: KVM será executado em um host Linux apenas. Eu não recebi nenhuma informação confiável sobre o software de virtualização do Windows sobre o suporte de VM aninhado adequado. Por 'bom', quero dizer que o hypervisor expõe as 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 hypervisor somente de software. Isso significa que sempre será lento e irrelevante se o hypervisor no host expuser as extensões de virtualização ao guest (como o KVM). A maioria dos softwares de virtualização (KVM, VirtualBox, VMWare), no entanto, pode fazer uso dessas extensões e terá um desempenho muito melhor se elas estiverem disponíveis.


11



Para sua segunda edição: Então, se eu vou rodar o Bochs (e eu não ligo muito se for lento), eu preciso me preocupar com o KVM? - Javier
Se você estiver rodando o Bochs dentro da máquina virtual, ele será tão lento quanto se você o rodasse em hardware (supondo que seu hardware tenha extensões de virtualização, ou seja, AMD-v ou VT-x e elas estejam habilitadas no BIOS; ainda mais lento, assim como tudo na VM). - Ambroz Bizjak
Em relação à virtualização do Windows ... parece ser possível, mas (a partir de junho de 2016) funciona apenas com o HyperV-on-HyperV, com o sistema operacional Windows Insider e com o hardware da Intel. A partir de msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/… - Mark


É possível, mas não muito viável, especialmente para o desenvolvimento. Você provavelmente deve procurar executar o Linux como seu SO nativo ou obter uma segunda caixa para hospedar as VMs.


3



Eu entendo que é provável que seja complicado, mas o que exatamente você quer dizer com "não é muito viável"? - Javier
Eu apostaria que @peelman significa: "É muito lento para propósitos práticos". Eu não tentei isso sozinho. - CarlF
@carlf precisamente. - peelman


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

Em cartões de rede de máquinas VirtualBox você tem que definir permitir tudo em modo promíscuo e várias outras opções e você pode ter os dentro vm por ex. Xenserver dentro de vm, e. VirtualBox.


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 (ele não conseguia lidar com 64 bits na terceira camada) na terceira camada. Foi muito 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 você está executando Linux e Bochs, que são sistemas operacionais leves, então deve ser possível.


1





sim, é possível, dado que o seu computador é poderoso o suficiente para lidar com isso.

Na minha máquina (i7 4770S, 16GB de RAM) eu consegui um nível de VM-ception-ness de 4.5 (o último falha na metade do tempo).

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

Veja esta imagem (uma das imagens mais bonitas que já vi):

enter image description here


-2



Que novas informações essa resposta fornece? - Ramhound