QEMU/KVM

Da Guide@Debianizzati.Org.

Debian-swirl.pngVersioni compatibili

Debian 6.0 "Squeeze"
Debian 7.0 "Wheezy"
Debian Sid

Indice

Introduzione

QEMU è uno strumento a codice aperto per emulare e virtualizzare diversi sistemi e architetture.
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.
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.

Installazione

Il primo passo è verificare che la propria CPU supporti effettivamente l'accelerazione hardware per la virtualizzazione (Intel VT o AMD-V):

$ egrep '(vmx|svm)' --color=always /proc/cpuinfo

Se negli elenchi compaio le diciture vmx e/o svm allora il processore è dotato delle suddette istruzioni hardware.
KVM è nativamente incluso nel kernel dalla versione 2.6.20, pertanto è necessario installare quanto segue:

# aptitude install qemu qemu-kvm bridge-utils

Il pacchetto bridge-utils non è in realtà strettamente necessario se si intende semplicemente creare una rete virtuale per il sistema guest.

Se durante l'installazione il rispettivo modulo di riferimento non è caricato e appare un errore come questo:

ERROR: could not insert 'kvm_amd': Operation not supported
[FAIL] Module kvm_amd failed to load ... failed!

E' necessario abilitare la virtualizzazione nel Bios (nel mio caso premendo F10 durante l'avvio del sistema e abilitando la voce Protezione/Protezione del Sistema/Virtualization Technology).

Utilizzo

Terminale

Il primo passo è creare il disco virtuale in cui installare il sistema guest:

$ qemu-img create -f qcow2 <nome disco virtuale>.img <dimensione in GB>G

Il disco può essere creato in una qualsiasi posizione accessibile all'utente. A questo punto se si installa in locale è possibile procedere all'installazione del sistema operativo digitando un comando di questo tipo:

$ qemu -m 768 -hda /percorso/disco_virtuale.img -cdrom /percorso/immagine_SO.iso -vga std -enable-kvm -localtime -net nic,vlan=0,macaddr=XX:XX:XX:XX:XX:XX -net user,vlan=0 -usb -usbdevice tablet -monitor stdio

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.
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.
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

È un interfaccia grafica basata sulle librerie grafiche Qt, è piuttosto intuitiva, completa e ben fatta oltre che essere disponibile da repository. Per installarla:

# aptitude install aqemu

libvirt

È sostanzialmente un toolkit che mette a disposizione dell'utente strumenti di vario tipo per creare, avviare e gestire macchine virtuali di vario tipo; tali strumenti sono disponibili sia tramite terminale che interfaccia grafica. Oltre a QEMU/KVM supporta altri hypervisor come XEN e Virtualbox.

# aptitude install libvirt

Per installare gli strumenti da riga di comando:

# aptitude install virtinst

Per l'interfaccia grafica:

# aptitude install virt-manager

Diagnostica

Unable to open connection to hypervisor / Unable to connect to libvirt.

Se all'avvio del programma si dovesse ricevere il seguente errore:

Unable to open connection to hypervisor URI 'qemu:///system':<br/>
unable to connect to '/var/run/libvirt/libvirt-sock', libvirtd may need to be started: Permission denied<br/>
Traceback (most recent call last):<br/>
  File "/usr/share/virt-manager/virtManager/connection.py", line 971, in _try_open None], flags)<br/>
  File "/usr/lib/python2.6/dist-packages/libvirt.py", line 111, in openAuth<br/>
    if ret is None:raise libvirtError('virConnectOpenAuth() failed')<br/>
libvirtError: unable to connect to '/var/run/libvirt/libvirt-sock', libvirtd may need to be started: Permission denied

O questo:

Unable to connect to libvirt.<br>
Verify that the 'libvirtd' daemon is running.<br>
Libvirt URI is: qemu:///system

Controllare in primis, che il demone sia effettivamente in esecuzione:

/etc/init.d/libvirt-bin status

Se il demone risulta effettivamente in esecuzione controllare in primi che il gruppo libvirt esista:

$ cat /etc/group

In caso affermativo aggiungere l'utente corrente a tale gruppo:

# adduser utente_in_uso libvirt

Fatto questo riavviare. Ora virt-manager dovrebbe avviarsi senza problemi.

libvirtError

Se all'avvio del programma si dovesse ricevere il seguente errore:

libvirtError: internal error Network 'default' is not active.

È possibile avviare manualmente la rete default digitando nella console della macchina su cui è in esecuzione libvirt:

# virsh net-start default

Note

Approfondimenti

Manpages

man qemu-img
man qemu

Debianizzati

Ethernet Bridging

Sitografia

QEMU, pagina principale.
KVM, pagina principale.
QEMU su Wikipedia
KVM su Wikipedia




Guida scritta da: Wtf 20:25, 1 mag 2012 (CEST)

Swirl-auth16.png Debianized 16%

Verificata da:
Estesa da:

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti