QEMU/KVM: differenze tra le versioni

m
nessun oggetto della modifica
mNessun oggetto della modifica
Riga 1: Riga 1:
{{Versioni_compatibili|Squeeze|Wheezy|Sid}}
{{Versioni_compatibili|Squeeze|Wheezy|Sid}}
= Introduzione =
= Introduzione =


'''QEMU''' è uno strumento a codice aperto per emulare e virtualizzare diversi sistemi e architetture.<br />
'''QEMU''' è uno strumento a codice aperto per emulare e virtualizzare diversi sistemi e architetture.<br />
'''KVM''' (Kernel Virtual Machine) è un modulo del kernel linux che permette a programmi in spazio utente di sfruttare il supporto hardware alla virtualizzazione presente in quasi tutti i moderni processori.<br />
'''KVM''' (Kernel Virtual Machine) è un modulo del kernel Linux che permette a programmi in spazio utente di sfruttare il supporto hardware alla virtualizzazione presente in quasi tutti i moderni processori.<br />
QEMU è progettato per funzionare anche senza appoggiarsi al modulo KVM, tuttavia è evidente come l'utilizzo dello stesso sia consigliato ogni volta che è possibile visti i vantaggi prestazionali che esso garantisce. In generale l'utilizzo di KVM è possibile quando l'architettura (x86 o x64) del sistema host è uguale a quella del sistema guest.
QEMU è progettato per funzionare anche senza appoggiarsi al modulo KVM, tuttavia è evidente come l'utilizzo dello stesso sia consigliato ogni volta che è possibile visti i vantaggi prestazionali che esso garantisce. In generale l'utilizzo di KVM è possibile quando l'architettura (x86 o x64) del sistema host è uguale a quella del sistema guest.


Riga 32: Riga 31:
* '''-enable-kvm''' abilità l'utilizzo di KVM.
* '''-enable-kvm''' abilità l'utilizzo di KVM.
* '''-net nic,vlan=0,macaddr=XX:XX:XX:XX:XX:XX''' e '''-net user,vlan=0''' sono parametri che permettono di configurare un semplice dispositivo di rete virtuale; il parametro macaddr è arbitrario, basta che sia di formato corretto (sei coppie di cifre esadecimali).
* '''-net nic,vlan=0,macaddr=XX:XX:XX:XX:XX:XX''' e '''-net user,vlan=0''' sono parametri che permettono di configurare un semplice dispositivo di rete virtuale; il parametro macaddr è arbitrario, basta che sia di formato corretto (sei coppie di cifre esadecimali).
* '''-usb''' attiva il controller usb.
* '''-usb''' attiva il controller USB.
* '''-usbdevice tablet''' permette di evitare la seccatura di dover catturare/rilasciare il puntatore del mouse ogni volta che si seleziona/deseleziona la macchina virtuale. La combinazione di tasti predefinita per rilasciare il mouse è CTRL+ALT.
* '''-usbdevice tablet''' permette di evitare la seccatura di dover catturare/rilasciare il puntatore del mouse ogni volta che si seleziona/deseleziona la macchina virtuale. La combinazione di tasti predefinita per rilasciare il mouse è CTRL+ALT.
* '''-monitor stdio''' permette di usare il terminale stesso come console, invece di quella seriale; in pratica una volta premuto invio oltre ad aprirsi la finestra con l'output grafico della macchina virtuale nel terminale in cui si è digitato il comando di avvio della macchina virtuale comparirà il prompt ''(qemu)'', attraverso cui gestire la macchina stessa. Digitare ''help'' in tale prompt per avere un elenco dei comandi disponibili.
* '''-monitor stdio''' permette di usare il terminale stesso come console, invece di quella seriale; in pratica una volta premuto invio oltre ad aprirsi la finestra con l'output grafico della macchina virtuale nel terminale in cui si è digitato il comando di avvio della macchina virtuale comparirà il prompt ''(qemu)'', attraverso cui gestire la macchina stessa. Digitare ''help'' in tale prompt per avere un elenco dei comandi disponibili.
Qualora si volesse avviare un installazione su una certa macchina da remoto, sarebbe sufficiente aggiungere alla precedente riga di comando l'opzione '''-vnc host:XY''', dove host è l'IP o l'alias della macchina su cui effettuare l'installazione e XY il numero da aggiungere al valore base della porta, cioè 5900; ad esempio '''-vnc :10''' permette la connessione remota da qualunque IP attraverso la porta 5910.<br />
Qualora si volesse avviare un installazione su una certa macchina da remoto, sarebbe sufficiente aggiungere alla precedente riga di comando l'opzione '''-vnc host:XY''', dove host è l'IP o l'alias della macchina su cui effettuare l'installazione e XY il numero da aggiungere al valore base della porta, cioè 5900; ad esempio '''-vnc :10''' permette la connessione remota da qualunque IP attraverso la porta 5910.<br />
In sintesi l'opzione '''-vnc''' non permette la creazione di una finestra sdl come di norma, ma reindirizza il flusso video ad un'istanza di VNC; è quindi necessario l'uso di un client VNC, come vinagre, per connettersi alla macchina su cui è stata avviata la macchina virtuale e vedere l'output grafico della stessa.<br />
In sintesi l'opzione '''-vnc''' non permette la creazione di una finestra sdl come di norma, ma reindirizza il flusso video ad un'istanza di VNC; è quindi necessario l'uso di un client VNC, come ''vinagre'', per connettersi alla macchina su cui è stata avviata la macchina virtuale e vedere l'output grafico della stessa.<br />
Una volta installato il sistema operativo questo può essere spento come di norma utilizzando la sua funzione di spegnimento interna oppure dando l'apposito comando dal prompt di qemu. Per riavviare la macchina è sufficiente ridare il comando iniziale, avendo cura di omettere l'opzione ''-cdrom immagine_SO.iso'' per evitare di far ripartire la procedura d'installazione del sistema operativo.
Una volta installato il sistema operativo questo può essere spento come di norma utilizzando la sua funzione di spegnimento interna oppure dando l'apposito comando dal prompt di qemu. Per riavviare la macchina è sufficiente ridare il comando iniziale, avendo cura di omettere l'opzione ''-cdrom immagine_SO.iso'' per evitare di far ripartire la procedura d'installazione del sistema operativo.


== AQEMU ==
== AQEMU ==


È un interfaccia grafica basata sulle librerie grafiche Qt, è piuttosto intuitiva, completa e ben fatta oltre che essere disponibile da repository. Per installarla:
È un interfaccia grafica basata sulle librerie grafiche Qt, è piuttosto intuitiva, completa e ben fatta oltre che essere disponibile da [[repository]]. Per installarla:
<pre># aptitude install aqemu</pre>
<pre># aptitude install aqemu</pre>


Riga 50: Riga 49:
= Note =
= Note =


* Per rendere disponibili i vari host USB (pendrive ecc.) al sistema guest è necessario avviare qemu come root, in caso contrario anche dichiarando opportunamente i dispositivi desiderati questi risulteranno comunque indisponibili.
* Per rendere disponibili i vari host USB (pendrive ecc.) al sistema guest è necessario avviare qemu come [[root]], in caso contrario anche dichiarando opportunamente i dispositivi desiderati questi risulteranno comunque indisponibili.
* La configurazione di rete qui proposta è la più semplice e permette l'accesso a internet e a eventuali condivisioni samba, NFS ecc., tuttavia in questa modalità la macchina virtuale funge da firewall bloccando tutte le connessioni in ingresso; l'utente deve pertando reindirizzare le necessarie porte qualora voglia usare particolari servizi, come connettersi via SSH al sistema guest. È da notare che in questa modalità si occupa la macchina virtuale di assegnare automaticamente IP e gateway al sistema guest, la cosa importante è assicurarsi che la subnet non sia la stessa della macchina host (se per esempio l'host ha IP 192.168.1.X, allora il sistema guest dovrà avere un IP non appartenente alla suddetta subnet). Esistono ulteriori limitazioni che non verranno qui trattate, basti dire che in caso di necessità complesse può essere obbligatorio utilizzare altre configurazioni del servizio di rete, oltre a dover impostare un bridge di rete (quindi a rinunciare eventualmente alla gestione delle connessioni di rete tramite network-manaeger); in quest'ultimo caso il sistema guest potrà avere un IP appartenente alla subnet dell'host.
* La configurazione di rete qui proposta è la più semplice e permette l'accesso a internet e a eventuali condivisioni Samba, NFS ecc., tuttavia in questa modalità la macchina virtuale funge da firewall bloccando tutte le connessioni in ingresso; l'utente deve pertanto reindirizzare le necessarie porte qualora voglia usare particolari servizi, come connettersi via SSH al sistema guest. È da notare che in questa modalità si occupa la macchina virtuale di assegnare automaticamente IP e gateway al sistema guest, la cosa importante è assicurarsi che la subnet non sia la stessa della macchina host (se per esempio l'host ha IP 192.168.1.X, allora il sistema guest dovrà avere un IP non appartenente alla suddetta subnet). Esistono ulteriori limitazioni che non verranno qui trattate, basti dire che in caso di necessità complesse può essere obbligatorio utilizzare altre configurazioni del servizio di rete, oltre a dover impostare un bridge di rete (quindi a rinunciare eventualmente alla gestione delle connessioni di rete tramite network-manager); in quest'ultimo caso il sistema guest potrà avere un IP appartenente alla subnet dell'host.
* Per condividere una o più directory tra host e guest è necessario ricorrere a strumenti di rete come samba e NFS, in poche parole l'accesso alle risorse dell'host da parte del guest avviene attraverso le risorse di rete, come se host e guest fosse due macchine distinte nella stessa LAN. A titolo informativo si precisa che usando ''libvirt'' dovrebbe essere possibile montare direttamente nel sistema guest una o più risorse del sistema host attraverso il driver ''9p virtio'' (chi scrive non c'è riuscito).
* Per condividere una o più directory tra host e guest è necessario ricorrere a strumenti di rete come Samba e NFS, in poche parole l'accesso alle risorse dell'host da parte del guest avviene attraverso le risorse di rete, come se host e guest fosse due macchine distinte nella stessa LAN. A titolo informativo si precisa che usando ''libvirt'' dovrebbe essere possibile montare direttamente nel sistema guest una o più risorse del sistema host attraverso il driver ''9p virtio'' (chi scrive non c'è riuscito).


= Approfondimenti =
= Approfondimenti =
6 999

contributi