terça-feira, julho 18, 2006

Emulando PCs

Trabalho no desenvolvimento de uma distribuição Linux personalizada no CEPEDI. No entanto, preciso testar o programa de instalação de várias formas. Já pensou, sempre que mudar alguma coisa no instalador, ter que regravar o CD-RW e dar boot em um PC? Por isso uso o QEMU, um emulador de PC pra Linux.

Alguns já usaram o VMware (eu nunca). Mas o VMware é um software pra Windows (não sei se possui versão pra outros SOs) e custa uma graninha. O QEMU é gratuito por ser OpenSource e sua utilização é muito fácil.

O site oficial é http://fabrice.bellard.free.fr/qemu/, mas se você usa Debian:

# apt-get install qemu

Recomendo instalar também o kqemu, ou QEMU Accelerator. É um módulo do kernel que acelera o desempenho do QEMU. Ele tenta rodar a maioria dos códigos dos aplicativos do sistema do PC emulado diretamente no seu processador. Não existe pacote no repositório Debian oficial, você vai ter que compilar na mão.

Após instalado o QEMU, sua utilização é fácil. Você pode até criar uma imagem de disco (um HD em um arquivo):

# qemu-img create meu_hd.img 1024M

Esse comando cria um arquivo de 1 GB pra servir de imagem. Feito isso, coloque um CD de qualquer SO no seu drive de CD e execute o comando:

# qemu -hda meu_hd.img -cdrom /dev/cdrom -boot d

Ele vai emular um PC cujo HD é seu arquivo de imagem, o CD-ROM é seu drive e vai dar boot pelo CD. Alguns argumentos mais comuns:

-hda O /dev/hda do seu PC virtual
-hda, -hdc e -hdd Similar ao -hda
-cdrom Seu drive de CD-ROM
-floppy Seu drive de disquete
-boot [a|c|d] Boot pelo disquete (a), HD (c) ou CD-ROM (d)
-m tamanho Memória RAM do PC virtual
-k pt-br Teclado ABNT2

No site do QEMU, a documentação completa mostra outros argumentos de linha de comando.

Eu usei o QEMU em casa pra emular o Windows 98 e testar o WinPolicy. Funcionou bem:

4 comentários:

Jhenny disse...

Valeu Just!
Aproveitando o momento: "Olha o Merchandising!" :)

Anônimo disse...

o veio, caso esteje usando o gnome ou outra não KDE, existe algo similar ao Kqemu?

Unknown disse...

Acho que você entendeu Kqemu como um QEMU pra KDE. Kqemu é um módulo do kernel, apenas. O QEMU não usa GTK+ nem Qt, ele usa SDL.

Anônimo disse...

Oi Just!
Você tentou (e conseguiu) brincar com o QEMU na parte de comunicação entre os 2 sistemas (o "mãe" e o emulado?). Tentei da forma que a documentação explicava, via samba, mas não tive sucesso. Também não consegui fazer a USB funfar (com um scanner usb).
Abraços!
Carlão