Swappa : Utenti / Qemu
Creative Commons License

 :: Qemu ::

Questa è una guida introduttiva e non esaustiva a Qemu. Ci sono altri argomenti relativi a Qemu che qui non sono trattati, se volete ampliatela oppure chiedete a me di aggiornarla.

Che cos'è?

Qemu è un emulatore / virtualizzatore. È in grado di emulare sistemi x86 completi, dal video alla scheda di rete. Il supporto alla virtualizzazione lo rende molto veloce. Inoltre è in grado di emulare sistemi diversi dall'x86, come per esempio i PowerPC, i MIPS, gli ARM.

A che cosa serve?

Per divertirsi!:) Ok, può anche essere utili per scopi lavorativi "seri", ma innanzitutto ci si può divertire. Emulando un sistema completo, è possibile installare in una macchina virtuale un sistema operativo diverso dal proprio, ed utilizzarlo in una finestra o a schermo intero, in tutta sicurezza. Non è veloce come potrebbe esserlo un sistema operativo installato in modo nativo su di una macchina, ma funziona bene.

Per farvi un esempio, a casa mia lo uso per emulare MSDos 6.1 con su Win 3.1, Windows 95, Windows 98 e altri sistemi operativi un po' più sconosciuti come AROS o Haiku.

Come funziona

In generale

Pensiamo al sistema emulato da Qemu come ad una macchina reale. Essa, per funzionare, ha bisogno di un sistema operativo, che si trovi su di un floppy o un disco fisso, e di RAM. Se voglio sentire del suono, mi occorre una scheda audio; se voglio usare una rete mi occorre una NIC. Qemu offre tutto questo.

Il punto principale è probabilmente la presenza di un'immagine di un disco fisso. Che cos'è un'immagine? È un file bello grosso che Qemu utilizza all'interno della macchina virtuale come disco fisso virtuale. In pratica, i files che la mia macchina legge e scrive vengono memorizzati all'interno di questo disco fisso virtuale, ovvero all'interno del mio grosso files. A casa mia ho installato per esempio la mia copia legale di Windows 98 (ebbene sì è originale, se volete ve la mostro anche, ho anche Windows 95 originale) in un file che è grosso 1.2 GB. Naturalmente Qemu offre degli attrezzi per creare ste immagini di dischi fissi.

Lo stesso discorso dell'immagine vale per i floppy. Per i CD il discorso cambia: posso sì usare un'immagine ISO presente sul mio disco fisso, oppure posso usare il lettore CD della mia macchina vera, dicendo opportunamente a Qemu di usare quello.

Installazione

Nota: non conosco di prima mano l'installazione su Windows, ma credo che si tratti semplicemente di installare l'eseguibile che si trova sul sito.

Per chi vuole compilarselo, si possono seguire le note di compilazione presenti nella documentazione di Qemu. Una nota importante è che NON compila con GCC > 3.x, quindi, per esempio, su di una Slackware 12 standard in cui è presente GCC 4.1.2 il programma non viene compilato. Per evitare di installarsi l'intero GCC 3.x, si possono cercare i pacchetti bell'e pronti ed il gioco è fatto:)

Utilizzo

L'utilizzo principale avviene tramite riga di comando. Esiste un frontend chiamato Qemu Launcher o qualcosa di simile, ma non lo conosco e francamente non serve più di tanto.

Nel modo più semplice, invoco Qemu così:

qemu nomefileimmagine.img

e Qemu partirà avviando nomefileimmagine.img come primo disco fisso. Se tutto va bene, appare una finestra che contiene la schermata del mio sistema operativo.


Windows 98 sotto Qemu sul mio desktop
Utilizzo sotto Windows

Il binario precompilato di Qemu cerca automaticamente i file del BIOS, necessari per emulare la macchina virtuale, in una directory. Ma non li troverà mai. Occorre quindi far partire il Qemu con la seguente opzione aggiuntiva:

qemu immagine.img -L "c:\program files\Qemu"

nell'ipotesi in cui si è installato Qemu nella cartella c:\program files\Qemu.

Il mouse

Cliccando dentro la finestra di Qemu, il mouse viene catturato da quella finestra. Significa che non posso più tirarlo fuori da lì. Il titolo della finestra stessa ci viene in aiuto, se vogliamo cliccare altrove: basta premere contemporaneamente Ctrl + Alt e il mouse si libera.

A schermo intero

Vogliamo vedere il nostro sistema operativo emulato a schermo intero? Ctrl + Alt + F per andare e venire dalla modalità a schermo intero.

Il CDROM
ISO

Se ho una ISO in un file chiamato cdrom.iso, posso avviare Qemu in questo modo:

qemu -hda discovirtuale.img -cdrom cdrom.iso -boot d -L "c:\program files\Qemu"

Questo va bene se avete installato Qemu nella cartella Program Files. Nella riga qui sopra, boot d specifica al sistema di fare il boot a partire da CD. Se ho la ISO di un sistema operativo, posso far partire l'installazione in questo modo. Oppure far partire dei LiveCD come Knoppix, per esempio:

qemu -cdrom cdrom.iso -boot d

Lettore CD del sistema ospite

Non è necessario creare le ISO per ogni CD che si vuole usare nel sistema emulato da Qemu: è possibile anche usare il lettore CD del sistema ospite.

In Linux, se il lettore CD è il dispositivo /dev/cdrom, allora posso avviare Qemu con

qemu -cdrom /dev/cdrom

assicurandoci ovviamente di avere i permessi adatti (non ne parlo qui, è fuori luogo).

Per Windows, si fa più o meno la stessa cosa:

qemu -cdrom d:

nell'ipotesi in cui il drive del lettore CD sia indicato come d:.

Creare immagini di dischi fissi

Siamo nel caso in cui ho una ISO di un qualche sistema operativo, e voglio installarlo in modo virtuale con Qemu. Mi occorre quindi un'immagine di un disco fisso.

Per crearne una, uso il comando qemu-img. Ad esempio:

qemu-img create nuovaimmagine.img 100M

crea un'immagine da 100 Megabyte.

qemu-img create nuovaimmagine.img 2G

crea invece un'immagine da 2 Gigabyte.

A questo punto, posso fare così:

qemu -hda nuovaimmagine.img -cdrom /dev/cdrom -boot d

e faccio partire un sistema con nuovaimmagine come disco fisso e /dev/cdrom come cd, bootando da cd.

Il boot

Ci sono diversi dispositivi per bootare:

La scheda audio

Qemu emula diverse schede audio: in particolare, è interessante la SoundBlaster 16, una sorta di scheda standard supportata un po' da tutti i sistemi operativi. Per far sì che Qemu presenti al sistema emulato una Sb16, si aggiunge la seguente opzione alla linea di comando:

qemu -hda nomeimmagine.img -soundhw sb16

Le altre schede disponibili sono: pcspk per il famoso beep del computer; adlib per la Adlib e es1370 per una Ensoniq AudiPCI ES1370. La Adlib in modo particolare era usata per la riproduzione di musica nei giochi DOS. Posso specificare anche più di una scheda.

pcspk PC speaker sb16 Creative Sound Blaster 16 adlib Yamaha YM3812 (OPL2) es1370 ENSONIQ AudioPCI ES1370

Importante: abilitae una scheda audio da Qemu NON vuol dire che il sistema operativo emulato la riconoscerà all'istante! Occorreranno ovviamente dei drivers, installati NEL sistema operativo emulato, che supportino la scheda audio offertagli da Qemu.

La rete

Qemu di suo fa partire una scheda di rete emulata, che viene riconosciuta istantaneamente dalla maggior parte dei sistemi operativi. Non c'è bisogno di specificare un'opzione aggiuntiva da riga di comando.

Se tutto funziona come dovrebbe, Qemu provvede anche a fornire un server DHCP virtuale dalla quale la scheda trarrà i suoi dati di configurazione.

L'indirizzo 10.0.2.2 è l'indirizzo del sistema ospite. Se abbiamo per esempio un server HTTP in funzione sul nostro computer, allora se punto il browser del mio sistema virtuale a 10.2.2.2, sarò connesso al mio server.

Ma non è finita qui: di default Qemu attiva il forwarding dei pacchetti IP. Ciò vuol dire che se si è connessi a Internet, si può navigare dal sistema virtuale:) Tutte le reti accessibili dal nostro computer lo sono anche dal sistema virtuale.


Doppioclic da Win98 sotto Qemu:)

La console

Premendo Ctrl + Alt + 2 si attiva la console. Per tornare alla finestra del sistema emulato si può premere Ctrl + Alt + 1.

A che serve? Serve per far fare alcune cose a Qemu.

Cambiare l'immagine di un dispositivo

Supponiamo di dover cambiare l'immagine che ho scelto di usare come hdb. Dalla console, faccio

change hdb altraimmagine.img

Teniamo a mente che il sistema operativo sottostante potrebbe non prendere bene il cambio di disco fisso al volo:) Forse è più utile con immagini di floppy o CD:)

Inviare combinazioni di tasti speciali

Come avrete intuito, Qemu intercetta tutte le combinazioni di tasti che iniziano con Ctrl + Alt. Se voglio inviare ad esempio un Ctrl + Alt + Canc al sistema virtuale, da console (si appre premendo Ctrl + Alt + 2) scrivo:

sendkey ctrl-alt-canc

Ad ogni modo...

... basta scrivere help nella console e salta fuori la lista dei comandi disponibili:)


Guide

(Printable View of http://www.swappa.it/wiki/Utenti/Qemu)