VirtualBox: inicializando o disco clonado

3

Estou tentando inicializar uma instalação existente do Windows XP no Linux. Foi um pedaço de bolo no VMWare Fusion, mas eu tenho puxado o cabelo para fazer a mesma coisa no Ubuntu 10.10.

Primeiro eu tentei o VMWare Server. (A máquina virtual é um serviço de rede.) Depois de muito esforço, o Windows parece inicializar, mas não há interação com o console, portanto não consigo inserir a chave de licença do Windows e o próprio VMWare parece travar com frequência. É oficialmente no final do suporte, então eu acho que não é uma boa idéia na área de trabalho recente do Ubuntu.

O VirtualBox é instalado com muita facilidade e eu posso inicializar o arquivo .vmdk que eu estava usando no VMWare. Infelizmente, o processo demorou muito e eu preciso usar uma nova imagem de máquina. Eu usei esses comandos para clonar o disco novamente:

sudo dd if=/dev/sdf2 of=powerhouse.dd
VBoxManage convertfromraw powerhouse.dd powerhouse.vdi

Mas continuo recebendo esta mensagem e nenhum sistema operacional:

A disk read error occurred
Press Ctrl+Alt+Del to restart

Meu palpite é que estou tentando inicializar uma imagem não particionada. Posso adicionar um mapa de partição ao VDI existente ou qual é o processo correto para fazer isso? (E não são imagens não particionadas apenas um aborrecimento obsoleto neste dia e idade?)

    
por Potatoswatter 25.01.2011 / 21:17

2 respostas

2

Esse pode ser um processo complicado para se acertar exatamente. Há instruções na página VirtualBox.org que descrevem um processo geral para fazer isso junto com algumas armadilhas: link - especificamente chama que simplesmente usando dd para a imagem de uma partição não vai funcionar (como você descobriu).

A versão abreviada - obtenha o número de bytes para o dispositivo que você usará e canalize o dispositivo para o VBoxManage para criar a unidade:

# fdisk -l /dev/sdf
Disk /dev/sdf: 1500.3 GB, 1500301910016 bytes
# cat /dev/sdf | VBoxManage convertfromraw stdin OutPutFile.vdi 1500301910016

Se você tiver outros dados no dispositivo que realmente não deseja trazer, precisará de um utilitário de clonagem mais sofisticado, como Clonezilla que pode ter apenas uma única partição (e as informações relevantes do carregador de inicialização) e "cloná-lo" para uma nova unidade. Nesse cenário, você pegaria a imagem e, em seguida, acionaria uma nova máquina virtual (inicializando o Clonezilla Live ISO, talvez) com um disco rígido virtual vazio em que você gravaria a imagem clonada.

    
por 25.01.2011 / 22:11
0

Você precisa prefixar a partição copiada com um MBR e a quantidade adequada de espaço antes da partição. Para muitos discos, este será um total de 63 (0x3F) x 512K blocos, mas para unidades mais novas pode ser diferente.

Eu tive sucesso com uma abordagem como essa:

  • Crie uma nova imagem MBR personalizada contendo apenas a partição única:     $ sudo dd if = / dev / sdf count = 63 | xxd > new-mbr.img.xxd     $ vim new-mbr.img.xxd

  • Construa a imagem:

    $ { xxd -r new-mbr.img.xxd; dd if=/dev/sdf2; } \
      | VBoxManage convertfromraw stdin newdrive.vdi \
                                        $(( $partition_bytes + 63 * 512 ));
    

Como você precisa entender o formato binário de um MBR para fazer isso, pode ser mais fácil para manter apenas o MBR existente e, em seguida, corrigi-lo com [sc]?fdisk executando um CD live / rescue na VM antes de inicializar o arquivo .vdi resultante.

Obter o tamanho da partição ( $partition_bytes ) também pode ser complicado, acho que descobri isso lendo o valor como está no MBR e multiplicando por tamanho de bloco (512). Acho que sfdisk --dump também lhe dará esse valor.

De qualquer forma, isso realmente funcionou, depois que eu tirei um par de leões e um artefato alienígena explosivo do meu chapéu.

    
por 05.03.2011 / 02:05