QEMU/KVM
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.