Virtualização: Clonar um linux físico para uma máquina virtual


Recentemente me deparei com a seguinte situação:
Clonar uma máquina física linux para uma máquina virtual, no início a tarefa não foi simples, testei alguns procedimentos na internet e não dava resultado, tentei também o Vmware Converter da Vmware mas sem sucesso também, pois ele não permitia clonar para o vmware server, que ero o que eu tinha.

Ambiente

Os procedimentos realizados aqui foram realizados no seguinte ambiente:
Sistemas operacionais
Foram virtualizados dois sistemas operacionais:
Mandriva 2008.1
Mandrake 8.2
Tanto o Mandrake quanto Mandriva estavam instalados em maquinas Dell, maquinas com hardware recente.
Importante: Antes de se clonar uma máquina física Linux, como o mandriva, é necessário ter o kernel-devel instalado ou similar, pois depois de quase concluído o processo de clonagem, será necessário os fontes do kernel, pois será necessário refazer o initrd.
Serão apresentados dois procedimentos abaixo para clonagem de máquinas físicas Linux.

Primeiro passo

Gere uma imagem do sistema a ser clonado, nesse caso foi utilizado o Clonezilla.
Coloque o CD do Clonezilla na maquina a ser clonada. Ao iniciar pelo CD seleciona, faça como as imagens abaixo:
OBS: O procedimento abaixo fiz no vmware para ficar fácil de tirar screenshots, mas ele deve ser feito na máquina que se pretende clonar.
Clonezilla live
clip_image002
Seleção da linguagem do teclado:
clip_image004
clip_image006
clip_image008
clip_image010
clip_image012
Iniciar o processo de clonagem:
clip_image014
Aqui vamos selecionar para clonar um disco para uma imagem:
clip_image016
Agora aqui vamos escolher como salvar a imagem, que será em um compartilhamento, apesar de estar samba, pode ser o compartilhamento de rede de qualquer máquina Windows:
clip_image018
Selecione e aperte enter para iniciar a interface de rede, na tela seguinte escolha como o sistema irá obter o endereço IP, nesse caso por dhcp ou você poderá indicar um ip manualmente:
clip_image020
Na tela abaixo coloque o ip da maquina que possui o compartilhamento, na imagem abaixo está o ip do storage onde a imagem será armazenada:
OBS: Usei aqui um storage de rede, um hd conectado a rede apenas.
clip_image022
Nesta tela há a opção de se colocar o domínio, mas deixe em branco:
clip_image024
Abaixo o usuário com permissão para acessar o compartilhamento, nesse caso isso é desnecessário para acessar o storage, deixe como estar:
clip_image026
Nesta tela colocaremos o nome do compartilhamento, como ele aparece na rede, no meu caso foi /NetHDD:
clip_image028
Nesta tela o sistema pede que depois do enter seja digitada a senha do compartilhamento, como tudo está no storage, isso não será necessário, apenas aperte enter quando ele peir a senha:
clip_image030
Na tela abaixo deixe selecionado como está, pois iremos salvar a imagem do disco no HD:
clip_image032
Na próxima tela desmarque todas as opções, a não ser que esteja copiando também uma partição ntfs:
clip_image034
Na tela abaixo selecione o modo de compressão, faça como desejar, isso vai depender de quanto espaço em disco possui o storage, uma compressão maior exigirá mais tempo:
clip_image036
Aqui é definido o nome da imagem a ser salva:
clip_image038
Aqui o disco a ser salvo, se houvesse mais de um disco, mais opções apareceriam:
clip_image040
Nesta tela deixe marcada apenas a primeira opção:
clip_image042
Agora aguarde até que a imagem esteja pronta:
clip_image044
Restaurando a imagem no vmware

Agora o procedimento será feito no vmware, então o que deve ser feito:
  1. Crie a máquina virtual referente ao sistema que você clonou, se tiver clonando o RedHat, crie máquina virtual para o RedHat, se for Mandrake, crie uma máquina virtual para o Mandrake. Lembre-se que ao criar o disco no vmware ele precisa ser igual ou maior do que o disco da máquina física clonada, no vmware não será necessário alocar imediatamente o tamanho do disco, pois dependendo do tamanho isso pode demorar horas.
  2. Inicie a máquina virtual pelo CD do CloneZilla, como foi mostrado no início desse tutorial.
  3. Selecione o layout do teclado e vá seguindo as telas até chegar na seguinte tela:
clip_image046
Neste ponto então vamos restaurar a imagem para o disco, na tela abaixo, nesse caso não foi selecionada nenhum opção, a não ser que você tenha clonado alguma partição ntfs:
clip_image047
Selecione a imagem que queira restaurar:
clip_image049
Escolha o disco onde irá restaurar:
clip_image051
Aguarde a finalização do processo:
clip_image053
clip_image055
Ajustes finais

Alguns pontos devem ser destacados.
Como estamos migrando o sistema de uma máquina física para uma virtual, os drivers do sistema, principalmente os de disco irão mudar. Realizei a migração em dois sistemas, o Mandriva 2008.1 e o Mandrake 8.2. O processo de adequação deles foi diferente devido as características de cada sistema, fique atendo aos procedimentos seguidos, que são válidos para outras distribuições também, algum dos dois métodos utilizados a seguir irá funcionar, dependendo da distribuição usada.
Para o Mandriva

Quando tentei iniciar o mandriva na maquina virtual estava ocorrendo um erro devido aos drivers que iniciavam com o sistema, então foi necessário refazer o o initrd, esse arquivo é responsável por pré-carregar alguns módulos necessários a inicialização do kernel. Os passos seguidos então foram:
1. Iniciar a maquina virtual com o CD do systemrescue.
2. Montar a partição do mandriva e recriar o o initrd com os novos drivers.
Detalhando o passo 2:
Monte a partição onde está o sistema raiz com o /boot:
Ex: mount /dev/sda5 /mnt/gentoo
Montar agora as partições dos sistema do livecd na partição recém-montada:
Ex: mount --bind /dev /mnt/gentoo/dev
mount --bind /proc /mnt/gentoo/proc
Agora iremos fazer um chroot no sistema, assim assumiremos aquela partição como se o sistema estivesse montado:
chroot /mnt/gentoo /bin/bash
Neste ponto agora é preciso saber qual é a versão do kernel instalado e utilizado.
Como ressaltado logo no início, é necessário ter o kernel-devel instalado.
Dando um:
ls /lib/modules
Detalhe: Antes de gerar o novo initrd você tem a opção de apagar o que existe no /boot ou apenas renomea-lo para que a nova versão não o sobreescreva, ou mesmo editar o menu.lst no :
/boot/grub/menu.lst
No mandriva você saberá se a versão do kernel-devel do kernel em uso está instalado, então basta depois fazer o seguinte comando:
mkinitrd /boot/initrd-versaodokernel versaodokernel
No meu caso foi feito assim:
mkinitrd –f –v /boot/initrd-2.6.24.img 2.6.24
No /lib/modules havia uma pasta chamada:
2.6.24
Que eram justamente os módulos do kernel instalado.
Feito isso o novo initrd será gerado.
Agora será necessário reinstalar o grub com o comando:
grub-install /dev/sda
Agora simplesmente reinicie a maquina virtual, ela deverá iniciar sem problemas.
No Mandrake

No Mandrake o processo foi um pouco diferente, pois não bastava simplesmente gerar um novo initrd, havia também o arquivo vmlinuz, e esse eu não encontrei uma solução para refaze-lo.
O que foi feito então foi criar uma instalação limpa do Mandrake em uma máquina virtual, depois disso foram copiados os seguintes arquivos:
initrd.img
vmlinuz
Todos estão na pasta /boot.
Copie eles para a rede ou para um pendrive e siga o procedimento abaixo.
No Mandrake faça o mesmo procedimento que foi feito para o mandriva para poder fazer chroot no sistema, não se esqueça de fazer chroot na partição certa.
Coloque o pendrive com os arquivos initrd.img e vmlinuz e o monte no sistema, é melhor monta-lo antes de fazer chroot no sistema e copia-lo em seguida para a pasta do sistema:
Ex: Montando o pendrive.
/dev/sdb1 /mnt/pendrive
cp /mnt/pendrive/arquvis_copiados /mnt/gentoo/root
A pasta arquvis_copiados possuem os dois arquivos initrd.img e vmlinuz
Depois do chroot copie eles para a pasta /boot.
Agora vamos editar o lilo.conf:
vi /etc/lilo.conf
O que temos que mudar no arquivo então é a partição do qual o lilo vai buscar os arquivos. Onde no arquivo tiver:
hdb (O disco do sistema)
Troque por:
sda
Já que no vmware a identificação do disco muda.
E nas outras linhas verá que há a indicação dos arquivos que são usado na inicialização, como o initrd.img e o vmlinuz, certifique-se que a linha que aparecerá no gerenciador de inicialização está correta inclusive com o nome dos arquivos que foram copiados.
Veja como estava o lilo.conf antes da edição:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
vga=normal
default=2.4.31_dell
keytable=/boot/br-abnt2.klt
lba32
prompt
nowarn
timeout=30
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz_dell
label=2.4.31_dell
root=/dev/hda1
read-only
image=/boot/vmlinuz-2.4.31mat03
label=2.4.31mat03
root=/dev/hda1
read-only
image=/boot/vmlinuz-2.4.18-6mdk
label=2.4.18-6mdk
root=/dev/hda1
initrd=/boot/initrd-2.4.18-6mdk.img
append="devfs=mount"
read-only
image=/boot/vmlinuz-2.4.18-6mdk
label=failsafe
root=/dev/hda1
initrd=/boot/initrd-2.4.18-6mdk.img
append="failsafe devfs=nomount"
read-only
other=/dev/fd0
label=floppy
unsafe

Veja como ficou depois:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
vga=normal
#default=2.4.31_dell
default=2.4.18-6mdk
keytable=/boot/br-abnt2.klt
lba32
prompt
nowarn
timeout=30
message=/boot/message
menu-scheme=wb:bw:wb:bw
#image=/boot/vmlinuz_dell
# label=2.4.31_dell
# root=/dev/sda7
# read-only
#image=/boot/vmlinuz-2.4.31mat03
# label=2.4.31mat03
# root=/dev/sda7
# read-only
image=/boot/vmlinuz-2.4.18-6mdk
label=2.4.18-6mdk
root=/dev/sda7
initrd=/boot/initrd-2.4.18-6mdk.img
append="devfs=mount"
read-only
image=/boot/vmlinuz-2.4.18-6mdk
label=failsafe
root=/dev/sda7
initrd=/boot/initrd-2.4.18-6mdk.img
append="failsafe devfs=nomount"
read-only
other=/dev/fd0
label=floppy
unsafe
Repare que não alterei todas as linhas mas em cada grupo de palavras depois do parâmetro “image= “foi alterado o root=/dev/hda1 para root=/dev/sda7 pois nesse caso os arquivos estavam nessa partição.
Repare que há parâmetros também para os arquivos initrd e vmlinuz com seus respectivos caminhos, certifique-se que eles estão corretos.
Depois e alterado e salvo, apenas digite o seguinte comando para salvar o novo lilo na MBR:
lilo
Depois disso reinicie o sistema, e tudo irá correr bem.
Ajustes (Mandrake e Mandriva)

Depois que os sistemas estiverem iniciados, algumas coisas podem não funcionar corretamente, no Mandriva foi necessário comentar algumas linhas de drivers, como da placa de som e de rede em um arquivo, o modprobe.conf no /etc/modprobe.conf.
Verifique alguns módulos que estão carregando, talvez seja necessário comentar as linhas que carregam o módulo de som e da placa de rede.
Tanto no Mandriva quanto no Mandrake rode o draknet para reconfigurar a placa de rede.
Pronto, esses são os ajustes a serem feitos na maquina virtual.

Espero que o artigo seja de ajuda a alguém, dúvidas ou sugestões, por favor não deixem de comentar.
Minhas fontes de pesquisa:
How to forge
Blog do Jeferson

Comentários

Postar um comentário

Postagens mais visitadas deste blog

Recuperando partições deletadas

Adicionando mapas do Google Maps em artigos no Joomla

Fazendo backup de todo o seu hd, iclusive do Sistema Operacional