QEMU/KVM

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca

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.

Utilizzo

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 -enable-kvm -localtime -net nic,vlan=0,macaddr=XX:XX:XX:XX:XX:XX -net user,vlan=0 -usb -usbdevice tablet
  • -m indica il massimo quantitativo di memoria RAM in [MB] utilizzabile dal sistema guest; in generale tale valore deve essere inferiore alla metà del totale disponibile.
  • -hda definisce il percorso del disco virtuale in cui installare il sistema guest.
  • -cdrom definisce il percorso dell'immagine iso del sistema operativo da installare; tale opzione viene in generale usata per passare immagini che il sistema guest vedrà come dischi ottici veri e propri.
  • -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).
  • -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.

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.