Questa è una libera traduzione di come usare qemu apparsa su debian package of the day ad opera di Michael Williamson. Mi scuso per qualche eventuale inesattezza, ma confermo che i comandi funzionano tutti.
QEMU permette di emulare un sistema operativo in un computer ospite senza bisogno di una installazione sul nostro hard disk, cioè possiamo fare funzionare un computer virtuale nel nostro computer reale. Ciò lo rende perfetto per provare e verificare l'ultimo rilascio dei vari sistemi operativi , di distribuzione più vecchie, o semplicemente provare altre distro.
Così, diciamo che desiderate provare (senza bisogno di masterizzare) la iso di un LiveCD, che avete scaricato sul vostro sul vostro hard disk. Semplicissimo!
Apriamo la shell e scriviamo :
<pre>qemu - cdrom path/to/livecd.iso - boot d</pre>L'opzione -cdrom dice a QEMU il percorso per CD che desiderate utilizzare, mentre -boot detta da quale dispositivo fare il boot - in questo caso, desideriamo caricare il sistema dal CD, che è sempre il dispositivo d.
Potreste ottenere un messaggio circa kqemu – per ora potete ignorare questo avviso.
Alternativamente, potete desiderare caricare il sistema da un CD reale, bene, date semplicemente il percorso del vostro lettore CD in /dev. Per esempio, se il vostro lettore CD è /dev/hdc, basta:
<pre>qemu - cdrom /dev/hdc -boot d</pre>Naturalmente, non desideriamo usare sempre i CDs , ma potremmo desiderare realmente installare qualcosa! Perciò, prima di tutto creiamo un'immagine nel nostro hard disk. Ciò lo facciamo usando qemu-img, così come segue:
<pre>qemu-img create virtualharddrive.qcow 5G -f qcow</pre>Ciò genera un'immagine denominata virtualharddrive.qcow, che è grande 5 gigabytes. Se la desideraste di 5 megabyte, bisogna scrivere 5M , per dieci gigabytes, scrivere 10G e così via.
Per concludere, l'opzione di -f dice a qemu-img quale formato desiderate usare. Tra i formati disponibili qcow è la norma - funziona abbastanza bene e sul hard disk occupa soltanto lo spazio effettivamente impiegato. Se il nostro hard disk virtuale avesse una capienza di 5 gigabytes, ma contenuto soltanto 2 gigabytes dei dati, allora occuperebbe soltanto circa 2 gigabytes sul nostro hard disk reale.
Bene, ora installiamo l'immagine che abbiamo creato. Semplicemente scrivere:
<pre> qemu virtualharddrive.qcow -cdrom path/to/installcd.iso -boot d</pre>Quindi, seguire le istruzioni come con un'installazione ordinaria.
Ora, non tutte le distribuzioni vengono rilasciate su un solo CD - in alcuni casi, dobbiamo scambiare i CDs. Per realizzare questo, dobbiamo fare due cose. In primo luogo, facciamo comparire il monitor di QEMU aggiungendo l'opzione -monitor stdio, quindi concludiamo il nostro comando in questo modo:
<pre>qemu virtualharddrive.qcow -cdrom path/to/installcd.iso -boot d -monitor stdio</pre>Quando diamo questo comando, QEMU dovrebbe lasciarci introdurre i comandi. Per cambiare CDs, si scriva semplicemente nella shell il comando:
<pre>eject cdrom<br />change cdrom path/to/newcd.iso</pre>Voila! La macchina virtuale dovrebbe ora permetterci di cambiare CDs in modo da poter continuare l'installazione.
Naturalmente, possiamo cambiare i CDs in qualunque momento, ma non durante una installazione.
Una volta che l'installazione è completata, possiamo caricare il sistema direttamente dal nostro hard disk. Poiché QEMU fa questo per default, bisogna rimuove l'opzione -boot dal comando che sarà:
<pre>qemu virtualharddrive.qcow -cdrom path/to/installcd.iso -monitor stdio</pre>Se non abbiamo intenzione di usare il CD dopo l'installazione, possiamo eliminarlo e il comando sarà :
<pre>qemu virtualharddrive.qcow -monitor stdio</pre>Ciò dovrebbe lasciarci giocare con il nostro sistema recentemente installato e rallegrarci senza mettere il nostro proprio pc in pericolo. Se desiderate aggiungere qualcosa, ma non si desidera fare cambiamenti all'immagine scritta, si aggiunga l'opzione
-snapshot
Se, dopo aver usato questa opzione, decidiamo che realmente desideriamo conservare i cambiamenti fatti sul hard disk, basta semplicemente scrivere
commit
nel monitor di QEMU ed i cambiamenti saranno scritti.
Questi comandii funzionano normalmente con distribuzioni leggere,mentre con alcune si nota un rallentamento. Ciò è dovuto al fatto che QEMU, per default, usa soltanto 128MB di RAM. Bene, possiamo aumentare la ram disponibile usando l'opzione -m, seguita dalla quantità di RAM in megabyte che vogliamo. Per esempio, se desiderassimo assegnare 256MB a QEMU per il funzionamento del LiveCD, dobbiamo scrivere:
<pre>qemu -cdrom path/to/livecd.iso -boot d -m 256</pre>Questo dovrebbe accelerare le cose piacevolmente! Ma non si dia a QEMU troppa memoria, se desideriamo utilizzare altri programmi. Magari notiamo che Qemu gira ancora lento, allora è il caso d'installare l'acceleratore kqemu. L'installazione del kqemu dai repository è molto semplice.
<pre>apt-get install kqemu-source kqemu-common</pre>se si usa Etch il modulo del proprio kernel è già pronto
Se non si ha già module-assistant, bisogna installarlo:
<pre>apt-get install module-assistant</pre>Quindi (come root) dare nella shell
<pre>m-a prepare<br />m-a a-i kqemu</pre>Questo è tutto. D'ora in poi per usare kqemu, come root diamo il comando:
<pre>modprobe kqemu major=0</pre>Allora, come utente ordinario, QEMU userà automaticamente kqemu, che dovrebbe velocizzarlo. Se QEMU protesta che ancora non può usare il kqemu, dobbiamo dargli i permessi necessari scriviamo quanto segue come root:
<pre>chmod 666 /dev/kqemu</pre>A questo punto kqemu dovrebbe ora essere utilizzabile da QEMU.
Ci sarebbe un'opzione finale: -kernel-kqemu. Ciò, nella teoria, accelera l'emulazione ancora ulteriormente. Purtroppo, non è così semplice come sembra. In primo luogo, la versione di QEMU nei repositori di Debian ha un bug noto, come segnalato
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=402289
Secondariamente, anche se potesse, non tutti i sistemi operativi ospiti funzionerebbero con questo comando; per esempio, una distribuzione recente di GNU/Linux probabilmente funzionerebbe più velocemente con questa opzione (se funzionasse!), ma Windows 98 sicuramente crasha (e ti pareva!). QEMU è disponibile da Debian Sarge e da Ubuntu Warty.
Buona virtualuzzazione
Kalos



Commenti
Inviato da paolo il Mar, 31/07/2007 - 18:52.
Ottima guida
Ottima guida, precisa e ben formattata!
Voto: 10
Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network
Inviato da kalos il Mar, 31/07/2007 - 19:24.
Re: Ottima guida
Beh... il plauso va a Michael Williamson, la mia è una semplice traduzione (fuori dai possibili strafalcioni)
If you haven't tried Debian lately, this would be a good time.
deb lenny/sid
linux user 384443 http://counter.li.org/
linux nelle scuole, firma la petizione
Inviato da paolo il Mar, 31/07/2007 - 21:25.
Re: Ottima guida
Tempo fa iniziai una guida proprio su qemu, poi non ho mai trovato il tempo e la voglia per completarla:
http://www.debianitalia.org/modules/wfsection/article.php?page=1&articleid=97
Possiamo integrarle ?
Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network
Inviato da Henryx il Ven, 07/09/2007 - 14:01.
Aggiunte
Ottima guida. Vorrei pero` fare un'aggiunta: la gestione della rete. Con QEMU vi sono tre tipologie di rete:
- una rete utente, in cui l'indirizzo viene assegnato da QEMU tramite un DHCP interno;
- una rete socket, che permette la comunicazione tra due macchine QEMU;
- una rete bridge, che permette l'utilizzo della macchina virtuale all'interno di una rete fisica.
Per abilitare quest'ultima configurazione (personalmente, non mi sono dedicato alle altre due), bisogna eseguire i seguenti passi:
editare il file di configurazione /etc/network/interfaces in modo da abilitare il bridging di rete:
auto br0<br /> iface br0 inet static<br /> address 192.168.1.2<br /> netmask 255.255.255.0<br /> network 192.168.1.0<br /> gateway 192.168.1.1<br /> bridge_ports eth0<br /> bridge_stp off<br /> bridge_maxwait 5<br /> dns-nameservers 192.168.1.1<br /> dns-search mydomainUna volta abilitato il bridge (a tal proposito, e` necessario installare anche il pacchetto bridge-utils) deve essere modificato il file /etc/qemu-ifup in questa maniera:
#!/bin/sh<br />sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br />sudo /usr/sbin/brctl addif br0 $1Fatto questo, e` possibile avviare QEMU in modalita` bridge, mediante questo comando:
qemu virtualdrive.qcow \<br /> -net nic,vlan=0,macaddr=00:00:10:52:37:48,model=rtl8139 \<br /> -net tap,vlan=0,ifname=tap0La prima opzione (-net nic) indica il tipo di scheda (una Realtek 8139 in questo caso), la lan virtuale, e il macaddress associato alla scheda stessa. La seconda opzione (-net tap) indica la modalita` bridging, la lan virtuale, e il nome dell'interfaccia virtuale a cui connettersi. Ovviamente, dopo di cio` si potra` configurare la macchina virtuale in modo da avere un IP statico (o dinamico), a cui e` possibile accedervi da remoto da qualsiasi pc presente sulla LAN, e non solo dal pc su cui sta girando la macchina virtuale
Enrico
Inviato da gullliver il Dom, 09/03/2008 - 09:57.
ottima guida
guida molto utile
ciao
Inviato da legolas il Sab, 29/03/2008 - 12:48.
Re: Aggiunte
@Enrico
Giusto per capire,
perche' dalla macchina virtuale non riesco pero' a navigare?
Sulla macchina fisica sostituisco la mia classica definizione della rete con il bridge da te esposto. Dalla macchina virtuale invece modifico il qemu-ifup sempre come da te suggerito.
Fatto questo una volta avviata la macchina virtuale, riesco a navigare sulla mia rete, ma non riesco ad andare oltre il router. Ho aggiornato i dns e tutto quanto, ma nulla.
Forse sarebbe anche meglio spiegare come creare il device tap/tun.
Un'ultima cosa, perche' con questa configurazione di rete (in bridge) non mi riesco piu' a montare una condivisione nfs?