É possível converter máquinas virtuais em ambientes físicos?


78

É possível converter um arquivo .vdi em um .iso que pode ser gravado em um CD ou DVD e torná-lo como um instalador. Ou é possível converter máquinas virtuais em ambientes físicos?


1
Esta resposta sobre AskUbuntu.com provavelmente se aplica a uma série de ambientes em execução em máquinas host Linux: askubuntu.com/a/32506/31592
blong

Respostas:


64

Sim e não.

Você pode converter um VDI em uma imagem de disco com a ferramenta VBoxManage . Este comando clona uma imagem de disco virtual registrada para outro arquivo de imagem. Se você deseja converter seu disco virtual para outro formato, esta é a ferramenta oficial do VirtualBox a usar [*].

VBoxManage clonehd file.vdi output.img --format RAW
  • Se você estiver usando um VDI dinâmico e tiver uma versão mais antiga do VirtualBox, o clonehd poderá não funcionar corretamente. A ferramenta de comandos internos do VBoxManage inclui converttoraw , que pode converter um VDI dinâmico em uma imagem de disco bruto ( origem ) [+].

VBoxManage internalcommands converttoraw file.vdi output.img

Mas ... esse arquivo IMG de saída não é uma imagem ISO e o sistema operacional instalado não será configurado para executar a partir de um CD / DVD inicializável. Você pode "gravar" (gravar) o IMG em um disco rígido e ele pode inicializar em hardware simples (por exemplo, não em uma máquina virtual). Mas talvez não, porque o sistema operacional instalado nesse IMG espera ver o hardware virtual fornecido pelo VirtualBox e você o inicializa em hardware real que não está esperando.

Algumas versões do Windows não lidam bem com essa situação; algumas distribuições Linux fazem. Às vezes, é possível configurar um sistema operacional (antecipadamente ou depois) para migrá-lo de um ambiente para outro como este, mas etapas específicas dependem completamente do sistema operacional que está sendo migrado.


No Windows, pode ser necessário especificar o caminho completo para o programa:

"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...]

Adicione C: \ Arquivos de Programas \ Sun \ VirtualBox ao seu PATH para usar a versão curta.


[*] Estou assumindo que a opção "--format RAW" será convertida em uma imagem de disco padrão, como se você tivesse usado o comando dd em um disco rígido físico. Mas, francamente, não encontrei nenhuma documentação que faça backup disso, portanto, esteja ciente de que isso pode não estar correto.

[+] Acabei de testar os dois comandos no VirtualBox 3.1.2. Os dois arquivos de saída são idênticos de acordo com o md5sum , mas ainda não testei completamente os arquivos de saída.

Consulte também o tutorial "Tudo sobre VDIs" nos fóruns do VirtualBox.


3
E o tamanho do VDI? Isso importa? Digamos que o tamanho da VDI é de 20 GB e o tamanho do disco rígido é de 200 GB ... O que aconteceria?
Pwnna

Esse primeiro método "clonehd" parece muito lento. Mas o segundo funcionou.
Matt H

1
Observe também que, se você conseguir inicializar um sistema operacional Windows, precisará reativá-lo na maioria dos casos.
Kimmax

E se você fosse a sysprep /generalizeinstalação virtual primeiro? Isso certamente preparar a instalação para ser instalado em um novo hardware (ou hardware físico, neste caso)
Robula

1
@Pwnna Você está copiando um img de um disco rígido (não apenas uma partição, mas um mapa inteiro de partições). Eu fiz isso no passado e lembro de ter visto o que esta resposta descreve, o espaço não utilizado / não particionado no final: serverfault.com/questions/268889/...
sudo

21

Se o seu arquivo vdi contiver partições e você desejar extrair apenas uma delas, use o seguinte:

Primeiro, como o quack quixote disse anteriormente, converta o arquivo vdi em um arquivo de imagem bruto:

# VBoxManage clonehd file.vdi file.raw --format RAW

Em seguida, configure um dispositivo de loop para a imagem:

# loopdev=$(losetup --show -r -f file.raw)

Use o kpartx para criar dispositivos para cada partição no arquivo bruto:

# apt-get install kpartx
# kpartx -a $loopdev

Veja quais dispositivos temos agora. Neste exemplo, há apenas um dispositivo, pois há apenas uma partição na imagem bruta:

# ls /dev/mapper/loop*
/dev/mapper/loop0p1

Agora monte-o para verificar se tudo funciona corretamente:

# mkdir /mnt/part1
# mount /dev/mapper/loop0p1 /mnt/part1
# ls /mnt/part1
# umount /mnt/part1

Use dd para copiar o conteúdo da partição para outra partição de destino:

# dd if=/dev/mapper/loop0p1 of=/dev/sda2 bs=1M

Após terminar, remova os mapeamentos do dispositivo novamente:

# kpartx -d file.raw

Isso é possível com o Windows?
Ehsan

13

A resposta é definitivamente sim, caso o seu sistema host e convidado seja Linux. É feito com os pacotes qemue TKLPatch. Você pode usar os arquivos VDI ou VMDK.

Consulte Mais informação:


3
+1 "definido" com a ressalva ".. contanto que seu hóspede seja linux" . e a solução (sua?) depende de algumas ferramentas TurnKey Linux. mas o procedimento parece bom. (bem-vindo ao Superusuário!)
quack quixote

5

Eu tentei a VBoxManage clonehd file.vdi output.img --format RAWpartir da resposta aceita, mas sem muito sucesso.

O que funcionou para mim com uma máquina virtual Windows 8.1 em um host Windows 7 é o seguinte:

  1. Crie uma máquina Windows 8.1 no VirtualBox, instale e use como faria normalmente com uma VM.
  2. Converta o disco rígido .vdi da Caixa Virtual em Windows VHD comVBoxManage clonehd source.vdi target.vhd --format vhd
  3. Monte o VHD na máquina Windows host como uma unidade (você pode montar um VHD no gerenciador de disco no Gerenciamento do Computador.
  4. Clone o VHD (montado como uma unidade) em outro novo disco rígido (um HD com laptop conectado por USB no meu caso) DriveImage XML ou uma ferramenta de clonagem de disco semelhante. Agora você basicamente clonou o .vdi do disco rígido virtual para bare metal.
  5. Instale o novo disco rígido em uma máquina. (no meu caso, trocar o disco rígido do laptop)
  6. Insira um USB / CD de instalação do Windows 8.1, inicialize a partir dele, escolha Opções avançadas e Reparo automático. O reparo automático tornará o novo disco rígido inicializável.
  7. Inicialize a partir do novo disco rígido com o Windows 8.1 clonado e execute o Windows Update. Isso fará o download dos drivers do hardware do seu computador que não eram conhecidos quando você executou o Windows no VirtualBox. Você precisará instalar os drivers ausentes manualmente, se houver.
  8. Desinstale o VirtualBox Guest Additions. Opcionalmente, instale o VirtualBox para que seu Windows 8.1 bare metal possa ser um host do VirtualBox.

1
No @sum: você pode tentar o BootICE para substituir o sexto passo e instalar o MBR correto.
fixer1234

Obrigado. O BootICE é mais confiável em alguns aspectos do que na instalação do Windows 8.1? A etapa 6 que descrevi possivelmente atrapalha o MBR?
Jan

1
Isso foi postado como resposta por um novo usuário (acredito superuser.com/users/523958/sum ). Ele seria excluído porque não se qualificava como resposta, então copiei a postagem e salvei como comentário para que não se perdesse. Eu não estou pessoalmente familiarizado com isso.
fixer1234

3

Eu faço esse processo de maneira muito rápida, com apenas duas linhas de comando no Linux:

#VBoxManage internalcomands converttoraw your_disk_virtual.vmdk your_disk_virtual.img

OU

#VBoxManage internalcomands converttoraw your_disk_virtual.vdi your_disk_virtual.img

# mv your_disk_virtual.img your_disk_virtual.iso

Artigo completo: http://www.previsioni.com.br/jailsonjan/?p=389


Nesse caso, o .img seria inicializável?
Pumphouse #

Eu acho que não. Eu já vi resposta semelhante do usuário 0-rep, que parecia uma maneira fácil, no entanto, acabou sendo inútil.
precisa saber é o seguinte

0

Use o seguinte comando para converter:

VBoxManage clonehd CactiEZ-disk1.vmdk output.iso --format VMDK

Aqui está a saída:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VMDK'. UUID: 7f297ac6-95eb-4814-9237-1acfd6be976c
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.