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

Rapidinha: Comando simples para adicionar uma impressora de rede no solaris


Recentemente tive que adicionar algumas impressoras de rede compartilhadas por um servidor windows no solaris, pesquisando um pouco descobri um simples comando que faz isso muito bem, basta seguir a sintaxe abaixo:


/usr/sbin/lpadmin -p Nome_impressora -s Servidor_Impressora


Onde:

Nome_impressora: é o nome da impressora do mesmo modo como ela aparece na rede.

Servidor_impressora: Servidor que compartilha as impressoras.

Obs: O servidor de impressoras nesse caso era windows 2000 server e para que o compartilhamento com o Solaris funcionasse foi preciso primeiro habilitar o suporte a Impressão Unix no Servidor, isso pelo adicionar remover componentes no painel de controle.







Urls amigáveis no apache


Vou fazer aqui um resumo rápido de como habilitar urls amigáveis no Apache.
Procurando em diversos documentos na internet, vi que tinha que fazer algumas coisas:
  • habilitar o .htaccess no apache
  • carregar o modulo mod_rewrite
  • criar a configuração no .htaccess

Para habilitar o .htaccess no servidor apache, procure no httpd.conf o seguinte trecho:

Options FollowSymLinks Indexes
AllowOverride None
Order allow,deny
Allow from all
Não se esqueça de reiniciar o apache, como estou usando CentOS eu fiz assim:
service httpd restart
Agora para carregar o módulo mod_rewrite verifique se a linha abaixo está descomentada:
LoadModule rewrite_module modules/mod_rewrite.so

Agora vamos para a pasta do site que fica em:
/var/www/html
Criei então o .htaccess no diretório root do meu site e coloquei o seguinte conteúdo:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^emails /pagina.php?idPagina=127 [nc]

Detalhe: o endereço acima é o que eu estava tentando reescrever, era somente um endereço um endereço, se pesquisar pela internet verá que a configuração do mod_rewrite era para reescrever todas as página de um site, e nesse caso fiz isso para atender um necessidade em específico.
Explicando o código acima:
Temos então o arquivo .htaccess dentro da pasta do site, assim qualquer requisição que chegar ao Apache, ele usará deste arquivo para definir o que fará caso determinadas cheguem até ele, no código temo que as instruções ficam dentro de uma diretiva indicando o modulo que será usado para interpretar a sequência. Percebe que em:
RewriteRule ^emails /pagina.php?idPagina=127 [nc]
Temos ao final o parâmetro:
[nc]
Esse parâmetro é fundamental, sem ele, a reescrita não funciona, pela regra em RewriteRule, temos que tudo do site atual que chegar e começar terminar com emails será redirecionado para o endereço :
/pagina.php?idPagina=127
Nesse caso o endereço acima é anexado a home do site, no caso www.meusite.com.br ficando então:
www.meusite.com.br/pagina.php?idPagina=127
Mas sempre aparecer o endereço :
Espero que essa dica seja útil.

Teclado travando no kde


Recentemente me deparei com um problema de um usuário:

Ao usar por um determinado tempo seu sistema, o teclado simplesmente travava no KDE, foi então que nessas andanças pelo Google encontrei a solução para esse problema que é acessar a pasta de configurações do KDE que fica no seu diretório home, fica assim então:

~/.kde/share/config/

Edite o seguinte arquivo:

kaccessrc

Apague todo o conteúdo dele.
No meu caso o teclado simplesmente parou de travar depois dessa alteração.

Mas atenção, isso foi para o meu caso em específico, talvez o problema que você esteja enfrentando esteja relacionado a outro fator e não especificamente ao KDE.




Problemas com upload no PHP e Apache


Tive um problema ao fazer upload de um arquivo, uma extensão que eu precisava instalar no Joomla, mas chegava ao ponto em que eu ficava em uma tela em branco e no final o arquivo não havia sido mandado para o servidor.
Dando uma olhada no errors.log do Apache descobri que a conexão estava caindo por que o tempo do upload estava sendo muito grande.
Foi então que juntei as coisas, minha conexão com a internet é muito lenta, ao tentar enviar o arquivo pelo Joomla, que usa um script em php para envio de arquivos, o tempo que o php no servidor estava configurado só permitia que um script pudesses ficar rodando por uns 30 segundos, o arquivo que eu tentava enviar demorava bem mais do que isso, devido a minha conexão ser lenta.
Foi então que fui até o arquivo php.ini, no caso do meu servidor, ele estava armazenado no diretório /etc, e alterei o seguinte valor:
max_execution_time = 30
Para
max_execution_time = 240
E reiniciei o Apache.
Essa variável controla o tempo em que cada script php pode ocupar ciclos do processador, e no caso, o script de upload ficava mais do que 30 segundos ativo, assim não era possível enviar nada, então coloquei o valor em 240 segundos, tempo mais do que suficiente para que eu pudesse enviar o arquivo. Acabou funcionando.
Mas não exagere no valor para depois não acabar prejudicando a performance do seu servidor.
Espero que a dica seja útil a alguém.
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.