sábado, 29 de março de 2008

KVM: pisando no acelerador com o qemu

Instalar o kvm (Kernel-based Virtual Machine - http://kvm.qumranet.com/kvmwiki) num passo a passo:

1- Verificar compatibilidade do processador:
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
Se não retornar nada, sinto muito, mas ainda recomendo o kqemu do primeiro post.

2- instalar o módulo no kernel:
m-a prepare
m-a a-i kvm
3- verificar os módulos (pra intel e amd):
modinfo kvm-intel kvm-amd
4- carregar o módulo conforme o seu processador e checar se carregou:
modprobe kvm-amd
lsmod| grep kvm
5- depara-se com a mensagem (se não der, vá direto para o 9):
FATAL: Error inserting kvm_amd (/lib/modules/2.6.22-3-amd64/misc/kvm-amd.ko): Unknown symbol in module, or unknown parameter (see dmesg)
6- remova todo mundo
apt-get remove --purge kvm kvm-modules-2.6.22-3-amd64 kvm-source
7- Altere no /etc/apt/preferences para usar o pacote unstable:
Package: kvm*
Pin: release a=unstable
Pin-Priority: 1000
e baixe o kvm "unstable":
apt-get install -t unstable kvm-source
8- Limpa tudo:
m-a clean kvm
m-a purge --force kvm
volte para o passo 2 e repita tudo...

9- E vc chegou aqui, ótimo.

verifique as permissões do /dev/kvm:
crw-rw---- 1 root kvm 10, 232 2008-03-15 01:11 /dev/kvm
Adicione-se no grupo "kvm" com o vigr...
Copie o arquivo /etc/qemu-ifup para /etc/kvm/kvm-ifup (se vc quiser que a rede funcione)
E inicia tudo usando o kvm:
kvm -hda windowsXP.qemu -net nic -net tap,ifname=tap0 -localtime -boot c -m 256
10- Pra iniciar tudo, criei um shell-cript. Provevelmente existam maneira melhor, mas ainda não pensei em nenhuma:
#!/bin/sh

# procura uma interface que não existe

#QEMU="qemu-system-x86_64"
QEMU="kvm"

i=0
while [ `ifconfig tap$i 2> /dev/null | cut -d " " -f 1` ]; do
i=$(($i+1))
done
IFNAME='tap'$i

# carrega o módulo tun, se não estiver carregado
if [ -z `lsmod | grep kvm-amd | cut -d " " -f 1 ` ]
then
sudo modprobe kvm-amd
fi

# carrega o módulo tun, se não estiver carregado
if [ -z `lsmod | grep tun | cut -d " " -f 1 ` ]
then
sudo modprobe tun
fi
# cria e inicia a interface de rede
sudo tunctl -t $IFNAME -u $USER

# carrega o módulo kqemu, se não estiver carregado
if [ -z `lsmod | grep kqemu | cut -d " " -f 1 ` ]
then
sudo modprobe kqemu
fi

# inicia o qemu
exec $QEMU -hda windowsXP.qemu -net nic -net tap,ifname=$IFNAME -localtime -boot c -m 256 #-cdrom /tmp/VS2008ExpressENUX1397868.iso -win2k-hack

# remove a interface de rede
sudo tunctl -d $IFNAME
Fico devendo uns testes com kvm x kqemu.
E ainda devo um teste com o vmware...

Nenhum comentário: