Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

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

Artigos relacionados

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.