Convertendo computadores Físicos em virtuais com o Hyper-V – P2V

Você passou pela situação de ter que converter um servidor e/ou estação que roda Windows 2003 ou XP em uma máquina virtual? Qual a solução, instalar o Windows na máquina virtual e migrar os sistemas legados? Não, até mesmo para quem não dispõe de soluções pagas, é possível converter computadores físicos em virtuais.

O primeiro passo é converter o disco físico em disco virtual. Para isso iremos utilizar o Disk2VHD. Execute o Disk2VHD e selecione as unidades do disco a ser convertido. No campo VHD File Name, selecione o arquivo vhd que será criado como imagem do disco físico. O Disk2VHD pode ser utilizado com o servidor ligado pois a cópia é feita via VSS, então não há problema de copiar arquivos abertos.

Clique em Create e aguarde a criação da imagem. O tempo irá depender do tamanho do disco e do espaço utilizado no mesmo.

Após a conversão do disco basta criar uma nova máquina virtual no Hyper-V, anexar o arquivo VHD criado como disco principal da VM, e iniciar a mesma. Caso o computador tenha o Windows XP ou Server 2003 instalado a seguinte Tela Azul deve aparecer: 0x0000007B. A descrição do erro segue na KB314082 da Microsoft, juntamente com a resolução, que em resumo explica que o sistema operacional não consegue realizar a inicialização pois não encontrou a controladora de disco. Realmente é este o problema que ocorre, pois este procedimento seria o mesmo que colocar um HD instalado em um computador com placa-mãe diferente. O sistema operacional não reconhece a controladora de disco nova e apresenta a Tela Azul.

Para corrigir o problema basta executar uma alteração no registro. Mas como fazer isso em um computador que não inicia? Para isso eu montei a imagem VHD em uma estação com o Windows 7. Para fazer isso siga este tutorial.

Com a imagem montada, e acessível pelo Windows Explorer, abra o Regedit.

O problema é como executar a alteração no registro sendo que a máquina virtual não inicializa. Para fazer isso anexei o disco no computador host e segui o seguinte tutorial:

Feita as adequações no script, e a alteração no registro, basta salvar as alterações do registro, desanexar o disco e iniciar a máquina virtual. O boot será normal, porém a máquina não vai reconhecer nenhum hardware a princípio. Após a inicialização completa, basta instalar o Integration Components e reiniciar novamente a máquina virtual.

Deixe um Comentário

17 Comentários.

  1. I was really consfued, and this answered all my questions.

  2. Fantástico muito obrigado!

  3. Marcelo, segui muito bem o tuto mas não estou tendo sucesso, estou conseguindo acessar o registro pelo VHD mas não sei o que deveo deletar para que não faça referencia ao driver antigo. Não compreendi oque devo ajustar ou deletar na CurrentControlSet para que não faça referencia ao driver antigo e peça o novo.

    Valeu!

    • É justamente esta parte que estou tentando deixa mais simples. O que fiz foi o seguinte: depois de montar o registro em outro computador, eu segui os passos da KB314082, porém neste link ele ensina a fazer na máquina local. Você vai utilizar a partir do Mergeide.reg. Só que como o registro está montado, você vai ter que adaptar cada linha a ser adicionada manualmente. Por ex:
      Chave a ser alterada:
      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\primary_ide_channel]
      “ClassGUID”=”{4D36E96A-E325-11CE-BFC1-08002BE10318}”
      “Service”=”atapi”
      E vamos supor que você montou a chave em:
      [HKEY_LOCAL_MACHINE\teste\]
      Além disso a chave [HKLM\SYSTEM\CurrentControlSet\] não deve existir, pois ela é criada somente quando o windows está em execução. O que deve existir é a HKLM\teste\ControlSet001\. Então é necessário adaptar mais este item.
      A nova chave seria:
      [HKEY_LOCAL_MACHINE\teste\ControlSet001\Control\CriticalDeviceDatabase\primary_ide_channel]
      “ClassGUID”=”{4D36E96A-E325-11CE-BFC1-08002BE10318}”
      “Service”=”atapi”
      Basicamente é isso. No meu caso foi um pouco trabalhoso, mas converti um servidor Windows Server 2003, para Hyper-V com sucesso e rodando a quase um ano sem nenhum problema. Para se ter ideia nem o pessoal que dá suporte no sistema do servidor descobriu que ele está virtualizado.

  4. Marcelo agora compreendi então para ficar mais claro apos a montagem do Hive, voce pode colar no post oque dever ser alterado a mão no registro e demontado o hyve para salvar e pronto, ok?

  5. Marcelo, consegui utiliznado a ferramenta Disk2VHD, tinha feito 2x nela, mas na terceira vi a opção Preparar para Virutal PC e pronto, ja foi corrigido o Boot, e os drivers de disco que davam a tela azul, praticamento o Disk2VHD fez o papel de corrigir a ControlSet. Muito obriago mesmo, seu post me ajudou muito.

  6. Com o Disk2VHD eu gerei um arquivo VHD mas na hora de inicializar ele no Hyper-V ele dá uma mensagem que não existe disco e pede ctrl+alt+del para reiniciar.
    Criei um disco virtual, carreguei o Hive, alterei as chaves ‘\SYSTEM\CurrentControlSet\’ para ‘\teste\ControlSet001\’ mas na hora de importar ele dá uma mensagem que o arquivo especificado não é um arquivo de registro.
    O que eu posso fazer?

    • Bruno,
      Na última versão do Disk2VHD existe uma opção Fix up HAL for Virtual PC. Basta marcar a mesma e criar a imagem. Não será necessário fazer qualquer alteração no registro, pois esta opção corrige o boot. Estou devendo um novo post com essa atualização, mas o tempo está curto. Até mais.

      • Marcelo, então basta marcar a opção “Fix up HAL for Virtual PC” na hora de montar o HD virtual que não precisa fazer nada disso?
        O HD já vem pronto para ser iniciado no hyper-v?

        • Ricardo, exatamente. Como na época que fiz o post não havia este recurso no Disk2VHD tive este trabalho todo para converter. Agora basta simplesmente marcar a opção. Outro detalhe é que não é necessário tirar o HD da máquina para fazer a imagem. Você pode simplesmente executar o programa na máquina física e mandar gravar a imagem em outra partição. Depois basta criar a máquina virtual no Hyper-V e apontar para a imagem criada. Não esqueça de instalar o VM additions que contém os drivers do Hyper-V.

  7. Prezados, criei um disco virtual a partir de um físico. Criei como vhdx, pois uso o hyper-v no windows 8. o virtual tem 160gb e contem uma instalação do windows 7 completa com tudo o que eu utilizo nela. Depois de montado, criei uma hyper-v pra esse disco virtual e anexei ele na VM. Acontece que quando tento iniciar, o gerenciador do hyper-v mostra que está iniciando, mas a máquina não inicia. fica na tela preta com o cursor piscando… alguém tem alguma idéia do que posso ter esquecido??

    Agradeço antecipadamente a todos.

  8. Bom dia Marcelo tudo bem ? Vc poderia tirar uma duvida minha?stou com o seguinte problema tenho uma VM do 2003 que roda em um servidor fisico 2012, porem quando reiniciamos o servidor fisico a VM do 2003 não liga automatico vc sabe me dizer o que poderia esta ocasionando isso?
    Desde ja agradeço, um forte abraço!!

Deixe um Comentário