http://ratosdelaboratorio.blogspot.com/2008/03/kvm-pisando-no-acelerador-com-o-qemu.html
-------------------------------------------------------------------------------------------------
Objetivo: instalar qemu no Debian (provavelmente funcione no Ubuntu também), com kqemu, configurando rede, adicionando TS e usando com Seamless. O seamless permite usar o TS do Windows XP e rodar uma aplicação remotamente sem as janelas e a barra de tarefas do Windows.
Um screenshot usando o qemu, o IE7 (como uma janela, mas remotamente dentro da máquina virtual), da linha de comando no Linux e no windows. O site do br-linux só pra mostrar a rede funcionando...
Dica: vc pode usar o aptitude no lugar do apt-get...
1- Atualizar a base do apt
apt-get update2- Instalar o qemu
apt-get install qemu3- Instalar o kqemu
Segundo o guia do hardware, o kqemu é "um módulo de Kernel que transforma o Qemu for Linux num virtualizador similar ao VMware. Ele passa a repassar as chamadas ao invés de interpretar cada uma, como fazia até então. Mais do que isso, o desempenho também fica de 4 a 5 vezes melhor"
Instalar ele no Debian é barbada:
m-a prepare3.1- Configurar Kqemu (permissões)
m-a a-i kqemu
Para permitir que o kqemu seja usado por qualquer usuário, o arquivo /dev/kqemu deve ter permissão de escrita para todos. Isso pode ser feito automaticamente, criando um arquivo em /etc/udev/rules.d:
vi /etc/udev/rules.d/60-kqemu.rulescom o conteúdo:
KERNEL=="kqemu", NAME="%k", MODE="0666"Para verificar se está tudo ok, carrega-se o módulo kqemu (como root):
modprobe kqemue verifica-se as permissões do arquivo criado:
ls -l /dev/kqemua resposta deve ser como essa:
crw-rw-rw- 1 root root 10, 61 2007-12-16 22:58 /dev/kqemu4- Rede
Para configurar uma interface de rede, vou apresentar uma forma de fazer, um pouco trabalhosa, mas que gostei dos resultados.
Crie (ou edite) o arquivo qemu-ifup, em /etc:
vi /etc/qemu-ifupComente a(s) linha(s) que está(ão) lá e acrescente:
#a interface que conecta com a internetDepois de tudo isso, é preciso adicionar os comando para executar com o sudo. Como root:
IFNAME_INTERNET='eth1'
#coloca um ip na nova interface
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
#libera nat no firewall
sudo /sbin/iptables -t nat -A POSTROUTING -o $IFNAME_INTERNET -j MASQUERADE
#libera ip_forward
sudo /bin/sh -c "/bin/echo 1 > /proc/sys/net/ipv4/ip_forward"
visudoAdicionando algo como:
rodolfo ALL = /sbin/iptables, /bin/sh -c /bin/echo 1 > /proc/sys/net/ipv4/ip_forward, /sbin/ifconfigTudo numa linha só, trocando "rodolfo" pelo nome do usuário que vc está usando.
4.1- Tun
Vamos instalar um pacote, para auxiliar criar nossas interfaces de rede:
apt-get install uml-utilitiesE ajustamos para o módulo "tun" ter permissões corretas:
vi /etc/udev/rules.d/60-tun.rulesCom o conteúdo:
KERNEL=="tun", MODE="0666"Carregue o módulo e seguimos adiante:
modprobe tun5 - O kqemu
5.1 - o kqemu só funciona se o sistema emulado for o mesmo que o sistema da sua máquina (x86-64, no meu caso).
Assim, o emulador que deve ser executado é o da sua arquitetura. No meu caso, é "qemu-system-x86_64". Para ter certeza, exeute:
qemu-system-x86_64 | grep kqemuele deve mostrar as opções:
-kernel-kqemu enable KQEMU full virtualization (default is user mode only)5.2- verificar instalação e suporte ao kqemu
-no-kqemu disable KQEMU kernel module usage
Vamos pegar uma imagem qualquer em http://fabrice.bellard.free.fr/qemu/download.html para testar o qemu. Eu peguei o NetBSD...
bunzip2 small.ffs.bz2Para verificar se o kqemu está habilitado, clique na janela do qemu (o mouse ficará lá dentro, e o texto da barra de titulo vai mudar). Pressione, então:
qemu-system-x86_64 -kernel-kqemu small.ffs
ctrl+alt+2Isso levará para a console do qemu. Digite:
info kqemuA resposta deverá ser:
kqemu support: enabled for user and kernel codeAqui vc pode usar o comando "help" para obter diversas informações da máquina virtual e do qemu.
Se o que aparecer for:
kqemu support: disabledVerifique se o módulo está carregado e com as permissões corretas.
6 - Criar a imagem, bootar e instalar
6.1 - criando a imagem para o windows XP
qemu-img create windowsXP.qcow2 4G
"create" é o que vamos fazer
"4G" é o tamanho
"windowsXP.qcow2" é o nome do arquivo. A extensão é só pra bonito.
Você pode usar "-f qcow2", que indica o formato para qcow2 (que expande a imagem à medida que a máquina virtual cresce)
outras opções: "man qemu-img" no seu terminal
6.2- o boot
Como root, carregamos os módulos:
modprobe kqemuCriamos uma interface de rede para o usuário:
modprobe tun
tunctl -t tap0 -u rodolfo"-t tap0" indica qual interface estamos criando. Ela não pode existir ainda
"-u rodolfo" indica o dono da interface, tornando-a persistente
E iniciamos com o CD-Rom
qemu -hda windowsXP.qemu -cdrom winxp.iso -net nic -net tap,ifname=tap0 -localtime -m 256 -boot d"-hda windowsXP.qcow2" indica que o hd será o arquivo que criamos
"-cdrom winxp.iso" é a imagem do cd com o XP
"-net nic -net tap,ifname=tap0" configura a interface de rede. É apenas uma forma, entre diversas existentes
"-localtime" coloca o horário na máquina virtual sincronizado com o real/bin/sh -c echo 1 > /proc/sys/net/ipv4/ip_forward
"-m 256" deixa 256MB de memória para a máquina virtual
"-boot d" executa o boot pelo CD.
E seguimos pela instalação do windows... como se fosse numa máquina "normal"... Demora, então seja paciente...
7 - iniciar pela primeira vez
7.1 - configurar a rede
Para configurar a rede, existem vários tutoriais na net. É um windows comum, mas não configuramos o qemu para fornecer um IP automaticamente.
No exemplo que estou criando, usei, no Windows:
IP: 172.20.0.2
Máscara: 255.255.0.0
Gateway: 172.20.0.1 (é o IP da interface criada no Linux!)
DNS: 172.20.0.1 e 192.168.0.1 (esse último é o DNS da minha rede).
7.2 - inicar o TS
Habilite o serviço de Terminal Service no XP. É uma sujestão, pois eu acho mais cômodo usá-lo no lugar do próprio QEMU.
Para configurar:
Meu computador -> Propriedades -> Remoto
Inicie o serviço
Teste a conexão usando o rdesktop:
rdesktop 172.20.0.28- Otimizar o Windows:
Para rodar o windows depois de instalado, use o comando:
qemu -hda windowsXP.qemu -net nic -net tap,ifname=tap0 -localtime -m 256É o mesmo comando usado no item 6, mas sem as informações do cdrom...
Você pode simplismente copiar o arquivo "windowsXP.qemu" e usar uma das imagens para fazer testes. Se tudo der errado, é só copiar o arquivo de volta e temos um Windows XP recém instalado para brincar.
Se quiser, pode testar algumas otimizações:
http://naganimes.wordpress.com/2008/01/31/100-dicas-windows-xp-sp2-2000-a-2003/
http://www.forumpcs.com.br/viewtopic.php?t=89566
http://undergeek.wordpress.com/2008/01/20/otimizando-o-windows-xp/
Eu usei algumas e obtive uma economia significativa de memória...
9- SeamlessRDP
9.1- Instale o SeamlessRDP (isso no Windows, dentro da máquina virtual)
Baixe-o daqui http://www.cendio.com/seamlessrdp e simplesmente extraia o conteúdo na raiz (c:/) do seu windows virtual.
9.2- Conectando e executando:
Para rodar o bloco de notas, por exemplo:
rdesktop -A -N -b -p - -s "C:\seamlessrdp\seamlessrdpshell.exe notepad" 172.20.0.2Eu uso executando o "cmd" e chamando diversas aplicações a partir dele. Eu uso, basicamente, o IE, para testar bugs que só ele consegue...
Dicas:
- É possível usar o arquivo /etc/modules para carregar automaticamente os módulos tun e kqemu.
- Você pode criar um script para criar a interface de rede toda vez que o computador for iniciado (como os secripts em /etc/init.d e nos "rcN°.d")
Um comentário:
Cara muito bom mesmo. \o/
Tu ajudou muito.
Postar um comentário