28 de março de 2009

Virtualização: VMware ou VirtualBox no Ubuntu 9.04 com kernel 2.6.29-11

Atualmente muito vem se falando de virtualização, não apenas em servidores, mas de aplicações desktop também. É muito mais tranquilo virtualizar um outro SO para rodar uma determinada aplicação que precisamos do que rodar em dual boot. Para isso, temos o VMware que é o mais utilizado em desktop, dentre outras ferramentas (VirtualBox, XEN, QEMU e etc).

Essa semana decidi baixar e instalar o Ubuntu 9.04. Qual não foi minha surpresa ao encontrar imensa dificuldade em instalar o VMware? Coisa tão tranquila no Ubuntu 8.04 (mas pelo que sei, também não instalava tão bem assim no 8.10).

Utilizei a versão VMware Server 2.0 (que é gratuita) para testar a instalação e virtualizar algumas aplicações do "Windoze" e uma outra distribuição Linux (BackTrack BETA 4). Para baixar o VMware: http://www.vmware.com/download/server/

Segui os seguintes passos, começando pela verificação de meu kernel:

# uname -a

Que retornou "Linux server 2.6.29-11"


Daí comecei a instalação dos headers do kernel:

# apt-get install linux-headers-2.6.29-11


Depois disso, foi necessário instalar o conjunto de compiladores básicos:

# apt-get install build-essential


No Ubuntu, precisei criar manualmente o link "/usr/src/linux" (coisa que muito provavelmente não precise fazer em outras distribuições), apontando para a pasta referente à versão instalada. Para isso, acessei a pasta "/usr/src" e rode o comando "sudo ln -sf linux-headers-2.6.*-* linux", como em:

# sudo ln -sf linux-headers-2.6.29-11-server linux


Nesse ponto, foi necessário instalar um conjunto de bibliotecas que o VMware precisa para a parte gráfica:

# apt-get install libx11-6 libxtst-dev libxt-dev libxrender-dev libxtst6 libxt6 libxrender1 libxi6 libdb3


Pronto, tudo o que preciso (nesse momento pelo menos) está instalado.

Baixei, depois de tudo isso, os seguintes arquivos:

- VMware-server-2.0.0-122956.i386.tar.gz
- vmware-update-2.6.27-5.5.7-2.tar.gz (http://www.insecure.wa/warehouse/vmware-update-2.6.27-5.5.7-2.tar.gz)


Nesse ponto foi onde comecei a instalação propriamente dita:

# tar -zxvf VMware-server-2.0.0-122956.i386.tar.gz
# cd vmware-server-distrib
# ./vmware-install.pl

Segui instalando normalmente, respondendo "yes" à todas as perguntas. E quando cheguei na seguinte mensagem:

Before running VMware Server for the first time, you need to configure it by invoking the following command: "/usr/bin/vmware-config.pl". Do you want this program to invoke the command for you now? [yes]


Digitei "no" para interromper a instalação.

Após isso, precisei fazer o seguinte:

# cd /usr/lib/vmware/modules/source
# tar -zxvf vmmon.tar
# vi source/vmmon-only/include/compat_kernel.h

E nesse ponto foi necessário realizar a alteração do arquivo que abri no vi. As alterações são as seguintes:

De:

#define __NR_compat_exit __NR_exit
static inline _syscall1(int, compat_exit, int, exit_code);

Para:

#define __NR_compat_exit __NR_exit
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
static inline _syscall1(int, compat_exit, int, exit_code);
#endif


Salvei o arquivo e saí do vi (:wq). E então executei os seguintes comandos para reconstruir o pacote:

# mv vmmon.tar vmmon.origin.tar
# tar cvf vmmon.tar vmmon-only


Então, retornei ao diretório onde estava meu arquivo vmware-update-2.6.27-5.5.7-2.tar.gz e executei os seguintes comandos:

# tar -zxvf vmware-update-2.6.27-5.5.7-2.tar.gz
# cd vmware-update-2.6.27-5.5.7-2
# ./runme.pl


Prossegui com a instalação normalmente, informando tudo o que foi solicitado (normalmente as opções default são as corretas) e então o script compila a biblioteca vmmom que alterei, já com as informações corretas.

Após terminada a instalação, não havendo nenhum erro, executei:

# vmware



E como o comando foi executando corretamente, entrei no navegador (já que achei estranho não haver o vmware-console, como nas versões anteriores). No navegador digitei https://localhost:8333/

O mesmo solicitou o nome do usuário e senha: usuário root e senha [senha-do-root].

Lembrando que o Ubuntu não define a senha de root por padrão, bastando digitar no terminal:

# passwd root

e então redefinir a senha de root.


Pronto! Agora consegui acesso ao gerenciador remoto de máquinas virtuais! Criei duas máquinas virtuais e qual não foi minha surpresa ao ver o seguinte erro no console remoto ao carregar minhas máquinas virtuais: "Failed to initialize monitor device".

Bem, depois disso tudo, consegui descobrir que o vmware-server-2.0 só possui console remoto (nesse ponto, sua versão anterior é mais tranquila, pois você trabalha com o console local, instalando o vmware-server-console), e que no kernel mais atual o vmware, na versão 2.0 tem problemas com o módulo vmmon do kernel. Foi um trabalho para chegar até aqui e ainda tenho que descobrir como resolver a questão do módulo vmmon!

Enquanto isso, decidi fazer um teste para não ficar órfão. Como já tinha usado o VirtualBox no Windoze antes, decidi testá-lo no Linux; o problema é que no windoze tive problemas na conexão de rede entre as máquinas virtuais. Porém, qual não foi minha surpresa em descobrir que no VirtualBox para Linux o modo bridge de rede é padrão?! Isso facilitou demais minha vida, sem contar que a instalação foi super tranquila.

Baixei a versão .deb para o Ubuntu 8.10 aqui: http://download.virtualbox.org/virtualbox/2.1.4/virtualbox-2.1_2.1.4-42893_Ubuntu_intrepid_i386.deb

Já no tamanho vemos a diferença: 32mb do VirtualBox contra mais de 500mb do VMware Server.

Depois de baixar, bastou dar dois cliques no pacote .deb e a instalação foi realizada, de forma simples e indolor!

Bem, no momento estou usando o VirtualBox, feliz da vida, mas ainda com um gosto amargo na boca, resquício da luta com o VMware. Mas aguardem, em breve resolvo o problema do módulo vmmon e posto aqui a solução!

Vamos à luta!