Conversão de máquinas Windows em VMs

Sou usuário de Linux a muitos anos e nunca tive maiores dificuldades com migração de máquinas. Sempre tive uma certa tranquilidade em retirar um HD de uma máquina e colocar em outra. Alguns ajustes sempre se fazem necessário, mas nunca deixei de conseguir carregar o sistema operacional.

A exceção foi um servidor de um cliente, cujos administradores otimizaram o kernel, deixando somente os drivers necessários da controladora.

Infelizmente o Windows não oferece esta facilidade. Retirar um HD em uma máquina e conseguir ligar em outra não parece ser algo esperado. Não sei se é uma tentativa de proteção do fornecedor ou se é uma limitação do conceito. Pelo que li, um dos problemas é que o instalador só instala os drivers da controladora identificada (parecido com o caso do kernel otimizado que citei!).

Já faz algum tempo, um cliente pediu-me para criar uma cópia de segurança de uma máquina (com Windows) que controla um equipamento industrial. A máquina é essencial para a produção e não existe uma redundância (fornecedores não sabem/querem criar e o problema acabou comigo!).

Optei por criar uma máquina virtual (VM) a partir de uma cópia integral do disco. Para isto usei o Clonezilla e também o dd (vejam alguns exemplos em [1]). A princípio seria uma tarefa simples e imaginei que não encontraria maiores dificuldades (quanto engano!).

Gerar a imagem foi fácil. Criar uma VM foi fácil. Agora o Windows carregar, não tinha jeito. Acabava sempre com a “tela azul de morte!”:

Fonte: https://www.ibm.com/support/knowledgecenter/pt-br/SS3HLM_7.1.1.16/com.ibm.tivoli.tpm.osd.doc_7.1.1.16/support/rtrb_bsod7b.htm

Tentei as ferramentas de recuperação que o fornecedor do sistema operacional oferece. Tentei diferentes opções encontradas na internet. Recorri a técnicos de “windows” 😦 . Usei ferramentas recomendadas por estes. Nada parecia resolver meu problema.

Parecia que eu era o único ser humano na face da terra que precisava fazer uma conversão destas!

Então, esta semana, novamente um problema parecido. Precisei converter um Windows instalado em um Oracle VirtualBox para um servidor Linux KVM que eu estava instalando. Novamente a tela azul me encontrou. Novas tentativas e nada resolvia. Até que encontrei a luz [2]!

Além de encontrar uma solução para o problema que eu precisava, ainda descobri a existência de poderosas ferramentas com o libguestfs. E resumo, para minha conversão de VirtualBox para KVM:

  • converter disco .vdi para .raw e para .qcow2 (não vou entrar no mérito, pois existem vários tutoriais para isto disponíveis);
  • verificar a existência dos drivers da controladora no Windows e copiá-los para o disco/imagem;

$ virt-ls -a windows.qcow2 -l /WINDOWS/system32/drivers/{atapi.sys,intelide.sys,pciide.sys,pciidex.sys}
$ virt-copy-out -a windows.qcow2 "/WINDOWS/Driver Cache/i386/driver.cab" .
$ cabextract -F pciide.sys driver.cab
$ virt-copy-in -a windows.qcow2
pciide.sys /WINDOWS/system32/drivers/

  • baixar o regedit adequado (este foi o maior dificultador, pois as referências estavam desatualizadas; aqui [3] encontrei uma referência [4] para o arquivo que precisava) e aplicá-lo na imagem.

$ sed -i -e 's,CurrentControlSet,ControlSet001,' mergeide.reg
$ virt-win-reg --merge windows.qcow2 mergeide.reg

Este último procedimento é todo o “segredo” do processo. Ele é o responsável por deixar um driver genérico para a controladora de disco no Windows e permite que sistema operacional faça a correta carga.

Referências:

[1] O poder do comando dd – ferramentas mais versáteis do Linux – https://www.linuxdescomplicado.com.br/2016/11/alguns-exemplos-de-que-o-comando-dd-pode-ser-considerado-umas-das-ferramentas-mais-versateis-do-linux.html

[2] Converting a Windows Virtual Machine from VirtualBox to QEMU and KVM using libguestfs tools – http://0x0badc0de.blogspot.com/2013/05/converting-windows-virtual-machine-from.html

[3] Migrate from Virtualbox to KVM – http://slashsda.blogspot.com/2012/03/migrate-from-virtualbox-to-kvm.html

[4] Migrate_Windows: MergeIDE.zip – https://www.virtualbox.org/attachment/wiki/Migrate_Windows/MergeIDE.zip

No comments yet

Deixe um comentário