Original em formato texto com marcações para txt2tags, conversão em HTML e atualização do site via script.
Não esqueça do manual
, depois de instalar qemu, execute; man qemu
qemu roda outro sistema operacional dentro do Linux, entre eles pode rodar windows, roda bem mais lento que o normal, em maquinas com poucos recursos pode tornar inviável, programas que requer muito processamento também pode ficar muito lento.
Na net tem um modulo para acelerar qemu, procure por "Accelerator Module" ou "qemu acelerator", neste tutorial não inclui este patch.
Alternar entre QEMU e o sistema operacional.
Digite: CRTL+ALT e clique com mouse no outro SO, observe que o mouse fica preso dentro da janela do qemu, para acessar o Linux, clique fora da janela depois do CTRL+ALT, ou CTRL+ALT+X, quando falhar um tente o outro, voltar é o mesmo processo, depois do CTRL+ALT clique dentro da janela do qemu.
Durante a instalação do win98, enquanto operar no prompt do DOS com boot pelo CD, evite clique do mouse na janela do qemu, some o mouse e fica a impressão que travou, para sair do qemu no prompt do DOS, tente mais de uma vez as combinações de teclas com cliques de mouse fora da janela do qemu.
Alternar tela cheia e tela normal: CRTL+ALT+F, na minha instalação quando executo na maquina local, tela cheia não ocupa toda area do monitor, conectado remotamente via ssh -X ocupa toda area do monitor.
Muito interessante abrir mais um sessão local, ou remotamente via ssh, configure o ssh para exportar o X, depois faça a conexão via ssh com opção -X e execute a linha de comando como no exemplo abaixo.
qemu win98se.img -boot c -full-screen
Na maquina remota, de origem da conexão ssh, abre o desktop do win98 ocupando toda a tela, não fica nada do Linux visível, CRTL+ALT+F alterna entre o Linux local e Win98 remoto, nesta maquina remota não tem nada de configurações do qemu, somente usando ssh a partir de um konsole.
Usando esta imagem simultaneamente na maquina local e remota, ou seja rodando qemu 2 vezes (2 usuários), cada usuário pode executar tarefas indenpendentes, um não interfere no outro, não sei quais a consequencias disto. Em poucos minutos de testes, fechando a janela do qemu sem fechar o windows, executou scandisk, recuperou registro do windows, entrou em modo de segurança.
Algumas observações sobre o hardware detectado pelo windows.
Rede
Placa de rede, sempre configura uma Realtek RTL 8029, independente de qual seja a placa de rede real na maquina.
No manual (man qemu) tem explicação em (Network options:) algo como configurar a rede no Linux e passar paramentros na linha de comando do qemu quando chama a imagem do SO, em meus testes falhou, vou traduzir esta parte do manual e tentar outro dia.
Placa de vídeo, sempre configura uma Cirrus Logic 5446 PCI, independente de qual seja a placa de vídeo real na maquina.
Resolução de vídeo, permite varias opções 800x600, 1024x768 e etc...
Alguns exemplos de linhas de comando com descrição dos parametros utilizados;
qemu win98se.img -boot c -full-screen
c
= boot pela unidade C:, utilize somente com sistemas windows.
-full-screen
= qemu iniciar o sistema virtual em tela cheia
qemu-img create kurumin6.img 2G
kurumin6.img
= nome da imagem - disco virtual, independe do sistema virtual, use qualquer-nome.img
2G
= tamanho do disco virtual a ser criado, independe do sistema virtual mas tenha o cuidado de não criar um disco virtual menor que o requerido pelo sistema, também precisa ter este espaço livre em HD físico, será criado um arquivo do tamanho da imagem.
qemu -m 512 kurumin6.img -cdrom /home/zago/kurumin-6.0.iso -boot d
-m 512
= quantidade de memória RAM reservada para o sistema virtual, depende da memória física da maquina real, tente usar valor intermediario entre o mínimo requerido pelo sistema virtual e de forma que não comprometa a maquina real, por default (sem este parametro) o qemu utiliza 128MB.
/home/zago/kurumin-6.0.iso
= local da imagem .ISO no HD da maquina que executa qemu, pode ser qualquer diretório, vale também para sistemas Windows quando tem a ISO do CD no HD local.
qemu win98se.img -cdrom /dev/cdrom -boot d
/dev/cdrom
= local do CD de boot de instalação do sistema virtual, independe do sistema virtual.
Pacote qemu instalado sem configuração adicional, comandos executados no konsole, instalar qemu via smart.
su - smart install qemu -y exit
Instalar win98, pode seguir os mesmos passos do tutorial para SUSE para rodar win98 sob qemu, funciona exatamente igual no Kubuntu, depois de instalado, para rodar win98 em tela cheia e com 128 MB.
qemu -m 128 win98se.img -boot c -full-screen
Ambiente,
Open SUSE 10.1 x86_64 RC1 Micro; MOBO: MSI modelo MS-6471 ver: 1 CPU: AMD Athlon 64 - 3000+ - 1GB RAM HD de 120GB - Sem CDROM.
Pacote qemu instalado sem configuração adicional, comandos executados no konsole, instalar qemu via smart.
su - smart install qemu -y exit
Rodar Live CD no qemu, neste exemplo, em uma instalação do Open SUSE 10.1 com qemu instalado, com a imagem ISO do Kurumin em /home/zago/kurumin-6.0.iso
no konsole execute os comandos;
qemu-img create kurumin6.img 2G qemu -m 512 kurumin6.img -cdrom /home/zago/kurumin-6.0.iso -boot d
Observe o parametro (-m 512), isto reserva 512M de RAM para o qemu, neste caso será utilizada pelo Kurumin, por default reserva somente 128MB que é muito pouco para carregar o Kurumin como Live CD.
Algumas observações;
No boot do Kurumin, na tela do qemu tudo se passa como se faz em boot pelo CDROM, detecta a CPU como sendo PII 2000Mhz, pela lentidão o desempenho parece mesmo com PII.
Kurumin detectou HD e CDROM como; QEMU HARD DISK, QEMU CDROM, não tem avisos nem mensagens de erro, carregou a interface gráfica da mesma forma que o boot pelo CDROM.
Achei muito interessante para conhecer Live CD antes de queimar o CD, basta fazer o download e rodar a partir da imagem ISO, se gostou grava para usar, se não gostou basta apagar a ISO.
Estou usando uma conexão via ssh -X, dentro da janela do qemu até o ALT+F2 para executar programas funcionou, no konsole o fdisk -l exibe o HD como sendo /dev/hda de 2.147 MB, mas o HD fisico tem outro tamanho, veja esta imagem .
http://www.zago.eti.br/figuras/qemu-livecd.jpg
Rede
Kurumin dentro do qemu navega e acessa outras maquinas via ssh, o mais interessante, não executei configuração alguma de rede para qemu, a maquina que roda qemu está configurada como estação da rede com acesso à internet, sem firewall local, com qemu instalado e sem configuração extra do qemu, no Kurumin não configurei nada.
Tentei acessar internet e navegou..., tentei conectar via ssh com outras maquinas da rede, inclusive com a própria maquina que roda o qemu, com todas completou a conexão, embora o ping não responde, mas é assim mesmo, neste ambiente não funciona o ping, use ssh no konsole para conectar com outras maquinas que funciona sem configuração adicional.
ssh user@ip, ssh zago@192.168.1.53
completou a conexão, console remoto dentro do Konsole virtual do Kurumin.
Na configuração de rede do Kurumin exibe estes dados de eth0.
Endereço IP 10.0.2.15 Mascara de subrede 255.255.255.0 Endereço de broadcast 10.0.2.255 Gateway padrão 10.0.2.2 endereço de HW
Tentativa de carregar Kurumin com memória default, 128 MB, sem o parametro (-m 512).
qemu-img create kurumin6.img 2G qemu kurumin6.img -cdrom /home/zago/kurumin-6.0.iso -boot d
Emite um aviso explicando sobre os recursos da maquina (SEU MICRO NÃO ATENDE OS REQUISITOS MINIMOS, Existem apenas kb.....), sugere modo texto, upgrade de memória e outras dicas,
Enter em aceitar.
Demorou um pouco, exibe a tela com os ícones de ferramentas de configuração do boot, no ícone das chaves sai para tela com fundo cinza, demorou muito e não esperei, nem sei se consegue carregar kurumin com 128MB.
Outra tentativa, agora em modo single, na primeira tela do Kurumin, digite linux single
, tentei carregar o kurumin em modo texto, exibe a mensagem de poucos recursos, memória encontrada 124820kB, no final tenta carregar a interface gráfica e sai para tela cinza depois de piscar por algum tempo o ícone das chaves.
Ambiente, Open SUSE 10.1 x86_64 RC1- ambiente KDE com smart instalado e configurado.
Micro;
MOBO: MSI modelo MS-6471 ver: 1 CPU: AMD Athlon 64 - 3000+ - 1GB RAM
Comandos para criar imagem de instalação do win98 no home do usuário, instalação a partir da imagem ISO do CD do Win98se, neste exemplo a ISO está em /home/zago/win98se.iso e resevando 256MB para rodar win98, tem outro exemplo depois deste, com instalação a partir do CD do win98.
cd ~ qemu-img create win98.img 2G qemu -m 256 win98.img -cdrom /home/zago/win98se.iso -boot d
Observe na janela do qemu, faz boot pelo CD-ROM do Win98 com as opções de inicar pelo disco ou CD-ROM, com as setas de direção, selecione;
2 Inicializar do CD-ROM 2 Iniciar o computador com suporte a CD-ROM # criar a partição fdisk ou d: cd \win98 fdisk
Depois de criar a partição, precisa reiniciar o DOS, não sei como fazer isto, então fechei a janela do qemu com CTRL+ALT, ou CTRL+ALT+X para voltar ao Linux e dar um clique no x da janela do qemu.
De volta ao konsole
qemu -m 256 win98.img -cdrom /home/zago/win98se.iso -boot d #no prompt do DOS execute; d: cd \win98 format c: # copiar os arquivos de instalação para instalar e não precisar mais do CD no futuro \tools\oldmsdos\xcopy \win98 c:\win98 /s c: cd \win98 instalar
Reinicia duas vezes como se faz em instalação normal em HD de verdade, selecione (1 Inicializar do disco rígido)
Veja como criar script no tópico Instalar a partir do CD, para executar win no próximo boot, execute.
qemu -m 256 win98.img -boot c
Com CD de instalação original do Win98SE.
Instalar Win98SE em partição virtual de 2G dentro do diretório /home/win98, os comandos abaixo cria o diretório, cria a imagem virtual e executa o boot pelo CD de instalação do WIN98, durante a instalação mantenha o CD original do win98se na unidade de CDROM.
su - mkdir /home/win98 cd /home/win98 # ajuste a permissão do diretório para o usuário ou pule esta parte e crie a imagem # em local acessível pelo usuário. exit qemu-img create win98se.img 2G qemu win98se.img -cdrom /dev/cdrom -boot d
Dentro da janela do qemu tudo acontece igual na instalação normal do Win98 em HD, os comandos tem os mesmos resultados quando aplicados em HD fisico normal, mas neste caso não afeta partições do HD, tudo é feito no arquivo win98se.img, tudo virtual, até a partição criada com fdisk do DOS.
Siga os mesmos passos de uma instalação normal do win98, no boot selecione boot pelo CD e boot com suporte a CDROM, no prompt do DOS mude para d:\win98.
d: cd \win98 fdisk
Execute fdisk para criar a partição, não se preocupe, fdisk detecta somente a pertição virtual, depois de criar a partição precisa reiniciar o DOS, sumiu o mouse e não descobri como reiniciar via prompt do DOS, tente voltar para o desktop do Linux com CTRL+ALT, ou CTRL+ALT+X e dar um clique no x da janela do qemu.
De volta ao konsole
qemu win98se.img -cdrom /dev/cdrom -boot d #no prompt do DOS execute; d: cd \win98 format c: # copiar os arquivos de instalação para instalar e não precisar mais do CD no futuro \tools\oldmsdos\xcopy \win98 c:\win98 /s c: cd \win98 instalar
Reinicia duas vezes como se faz em instalação normal em HD de verdade, selecione (1 Inicializar do disco rígido)
Prontinho, instalação completada, hardware configurado, no próximo boot, para executar win98.
qemu win98se.img -boot c
Iniciar com tela cheia -full-screen
qemu win98se.img -boot c -full-screen
Ou crie um script e atalho para ele no desktop, exemplo para criar win98.sh, em /home/zago e liberar acesso ao user zago para carregar a imagem que está em /home/win98.
Conteúdo do arquivo win98.sh
#!/bin/bash cd /home/win98 /usr/bin/qemu win98se.img -boot c
chmod 755 win98.sh chown -R zago /home/win98
Agora pode chamar a partir do script ou crie o atalho no desktop do usuário, para executar basta clicar no atalho...
Configura a rede automaticamente com estes valores, obtidos com ipconfig.
Endereço IP 10.0.2.15 Mascara de sub-rede 255.255.255.0 Gateway padrão 10.0.2.2
Pelo que notei é padrão esta configuração, nesta maquina o Linux esta com IP 192.168.1.205, atribuiu os valores acima para windows virtual.
Acessar internet.
A maquina que roda qemu é uma estação da rede, configurada para navegar através de NAT de outra maquina, tal como no Kurumin, não precisou fazer nada, um clique no ícone do I.E e selecionar para navegar pela rede LAN, prontinho, acessando internet sem configuração nada no windows.
Detalhe, nos logs do servidor apache fica registrado o IP da instalação Linux, neste teste estava com IP 192.168.1.205, portanto tem NAT para o sistema que roda no qemu.
Servidor Samba e compartilhamento windows.
Não acessou servidor Samba, em ambiente de rede não lista o compartilhamento de outras maquinas.
Samba - acessar servidor samba em outra maquina. (Falhou, não encontrei registros nos logs do samba).
Samba - acessar servidor samba na própria maquina que roda o qemu. (ainda não testei, mas pretendo usar como ambiente de testes)
De: Ederson Luiz Honorato <ederson.luiz.santos@itelefonica.com.br> Para: zagolinux@uol.com.br Assunto: Acesso à rede virtual no QEMU 0.8.x - pro FAQ Data: Sat, 02 Sep 2006 20:12:52 -0300 Como configurar o acesso à Redes nos terminais virtuais do QEMU INTRODUÇÃO ========== Devido ao fato do desenvolvimento do QEMU ser constante e da busca por um virtualizador eficiente, os desenvolvedores vem modificando sensivelmente o QEMU. Apesar de ser algo muito bom, isso pode trazer alguns constrangimentos ao usuário final, já que o QEMU conta com pouca documentação na internet e menos ainda em lingua portuguesa. Houve uma grande mudança na sintaxe de algumas opções para emulação de placas de som e rede. Nas versões mais antigas o QEMU emulava uma SoundBlaster 16 e emulava uma placa de rede Realtek ISA. Agora o QEMU conta com emulação de uma placa de som Ensonic e do speaker, além da SB16 e emula uma placa de rede Realtek ISA ou PCI. Para ver a lista de placas de som emuladas pelo QEMU digite: ederson@linux:~$ qemu -soundhw ? Valid sound card names (comma separated): pcspk PC speaker sb16 Creative Sound Blaster 16 es1370 ENSONIQ AudioPCI ES1370 -soundhw all will enable all of the above CONEXÕES DE REDE VIRTUAL ======================== Conexão entre GUEST e HOST -------------------------- Houve um grande avanço nas opções da rede virtual do QEMU, podendo conectar varias máquinas virtuais entre sí, conectar a máquina virtual ao host ou utilizar a rede virtual somente como NAT para que o guest virtual tenha acesso à internet. Essas mudanças apesar de necessárias me deram um pouco de dor de cabeça na ora de configurar a maquina virtual com o QEMU da versão 0.8.x. A conexão entre o guest e o host me forçou a fazer algumas mudanças no script /etc/qemu-ifup que levanta a rede virtual. O comando para rodar o QEMU com conexão de rede com a máquina real é o seguinte: $ qemu -hda disco_virtual.img -soundhw all -m 32 -net nic -net tap -boot c -localtime Onde: -hda é a primeira unidade de disco virtual -soundhw all emula todas as placas de som suportadas (para emular somente uma SoundBlaster 16 troque o "all" por "sb16") -m quantidade de memória para a máquina virtual -net nic cria uma interface de rede na máquina virtual e conecta ela na rede virtual VLAN -net tap conecta a interface TAP do host (máquina real) à rede virtual VLAN e roda o script /etc/qemu-ifup para configurá-la -boot c unidade de disco em que o sistema irá iniciar -localtime usa a hora do host como referência Inicialmente usando a opção "-net nic -net tap" eu recebi o seguinte erro: warning: could not open /dev/net/tun: no virtual network emulation Could not initialize device 'tap' para resolver o problema criei um novo qemu-ifup com o conteúdo abaixo: #!/bin/sh sudo mkdir /dev/net sudo mknod /dev/net/tun c 10 200 sudo chmod 0766 /dev/net/tun chgrp users /dev/net/tun chmod g+w /dev/net/tun sudo modprobe tun sleep 1 sudo /sbin/ifconfig $1 172.20.0.1 Antes de criar um novo qemu-ifup, você deve mover o arquivo /etc/qemu-ifup com o seguinte comando: # mv /etc/qemu-ifup /etc/qemu-ifup.old Isso serve para você poder recuperar o arquivo original caso ocorra algum problema. Após fazer essas modificações já é possivel iniciar o QEMU com o comando: $ qemu -hda disco_virtual.img -soundhw all -m 32 -net nic -net tap -boot c -localtime Se não recebeu nenhum aviso de erro tudo ocorreu bem. Para verificar se a interface tap foi realmente carregada abra um terminal e digite: ederson@linux:~$ ifconfig eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:0A:E6:5B:D3:72 inet end.: 192.168.0.1 Bcast:192.168.0.255 Masc:255.255.255.0 endereço inet6: fe80::20a:e6ff:fe5b:d372/64 Escopo:Link UP BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) IRQ:5 Endereço de E/S:0xef00 lo Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:135 errors:0 dropped:0 overruns:0 frame:0 TX packets:135 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:9052 (8.8 KiB) TX bytes:9052 (8.8 KiB) tap0 Encapsulamento do Link: Ethernet Endereço de HW EE:13:44:2F:53:E6 inet end.: 172.20.0.1 Bcast:172.20.255.255 Masc:255.255.0.0 endereço inet6: fe80::ec13:44ff:fe2f:53e6/64 Escopo:Link UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:500 RX bytes:0 (0.0 b) TX bytes:308 (308.0 b) No meu caso a interface tap0 foi levantada com sucesso e o IP 172.20.0.1 anteriormente definido em /etc/qemu-ifup, foi configurado adequadamente. Agora basta configurar a rede da máquina virtual com o IP 172.20.0.2 (ou qualquer um nessa faixa) e máscara de rede de 255.255.0.0. Nesse tipo de configuração fica barrado o acesso à internet à não ser que o host faça o compartilhamento de conexão com á internet. Conexão entre GUESTS -------------------- Para fazer a conexão entre várias máquinas virtuais é necessário que uma delas faça o listering da VLAN em alguma porta. É necessário também que cada uma das máquinas virtuais tenha um MAC address diferente e que façam a conexão com a máquina listering. Abaixo segue um exemplo de como rodar duas máquinas virtuais conectadas entre sí: $ qemu -hda disco_virtual.img -soundhw sb16 -m 128 -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234 -boot c -localtime & $ qemu -hda segundo_disco_virtual.img -soundhw es1370 -m 128 -net nic,macaddr=52:54:00:12:34:57 -net socket,connect=127.0.0.1:1234 -boot c -localtime Onde: -net nic,macaddr=52:54:00:12:34:56 indica o endereço MAC da placa de rede virtual. Pode ser substituido por qualquer um. -net socket,listen=:1234 faz a listering na porta 1234 -net socket,connect=127.0.0.1:1234 conecta a máquina virtual à porta 1234 com loopback 127.0.0.1 Deve-se tomar muita atenção, por conta do tamanho da linha de comando. É indicado que você use um script para chamar várias máquinas virtuais. O exemplo acima funciona perfeitamente, pois já testei inúmeras vezes inclusive usando uma máquina virtual como servidor e outra como cliente. OUTROS EXEMPLOS DE SCRIPTS ========================== Um exemplo de script para inicialização do QEMU é: #!/bin/bash sudo modprobe kqemu sudo /etc/init.d/samba start sudo qemu -hda Win2k.img -boot c -hdd /dev/hda2 -localtime -soundhw es1370 -net nic -net tap -parallel /dev/lp0 qemu-ifup Alternativo --------------------- Um bom qemu-ifup alternativo seria: #!/bin/sh # IP do Host: 10.0.0.200 (real) # IP do Guest: 10.0.0.50 (virtual) # Configura o dispositivo tun0 (UML e as novas versões do Qemu usam o tap0 agora!) sudo /sbin/ifconfig $1 10.0.0.200 # Ativa o ip forwarding sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' # Configura as rotas para o IP da máquina virtual sudo route add -host 10.0.0.50 dev $1 # Ativa o ARP proxy para "spoof" arp address sudo bash -c 'echo 1 > /proc/sys/net/ipv4/conf/$1/proxy_arp' # set "spoofed" arp address sudo arp -Ds 10.0.0.50 eth0 pub Configurando o kqemu -------------------- Você realmente DEVE fazê-lo! Vale o trabalho adicional! # carrega o acelerador do qemu sudo modprobe kqemu # crie o dispositivo de kqemu export device="/dev/kqemu" sudo rm -f $device sudo mknod --mode=0666 $device c 250 0 # Alternativamente (se você está usando udev) crie uma regra para o udev e um symlink para ativar ele: sudo echo 'KERNEL=="kqemu", NAME="%k", MODE="0666"' > /etc/udev/kqemu.rules sudo ln -s /etc/udev/kqemu.rules /etc/udev/rules.d/010_kqemu.rules # Agora tudo você tem que fazer é carregar o kqemu com o argumento apropriado: sudo modprobe kqemu major=0 # Isto criará o /dev/kqemu automaticamente e o udev controlará as permissões. Espero que essa pequena contribuição ajude ao usuários de novas versões do QEMU.
Seleção de tutoriais que foram indicados na Linux-BR ou indicados diretamente, ainda não testei nenhum deles, estou seguindo o manual do qemu com minhas tentativas de erro e acerto, não esqueça do Google...