Virtualizzare con qemu

Qemu è un software open source utile a virtualizzare sistemi operativi all’interno di un sistema base. Quindi dalla propria linux box (ma esiste anche una versione per windows) puoi far girare una macchina virtuale con altri sistemi operativi.

Qemu purtroppo sembra non apprezzare le partizioni di windows xp, almeno a me non funziona e pare che non sia l’unico; però ci sono altre possibilità come installare windows in un file immagine.

PCLinuxOS1 da Ubuntu by qemu

Oltre a far partire altre partizioni con altri SO (per sapere quali la cosa migliore è provare non c’è una lista ufficiale), è possibile fare il boot di una semplice iso, oppure molto interessante è possibile usare dei file immagine come se fossero delle vere e proprie partizioni.

Kqemu è un modulo del kernel che permette a qemu di aumentare sensibilmente le prestazioni della macchina virtuale, è stato recentemente rilasciato sotto GPL.

KVM ha la stessa funzione di kqemu ma consente di sfruttare le caratteristiche degli ultimi processori che integrano le caratteristiche Intel VT e AMD-V.

INSTALLIAMO QEMU E KQEMU

Dopo questa pappardella passiamo all’azione:

sudo apt-get install qemu module-assistant

In questo modo installeremo qemu e con module-assistant ci prepariamo a compilare il modulo kqemu

sudo m-a prepare
sudo m-a install kqemu

Se tutto va bene il modulo sarà stato compilato, ora lo carichiamo:

sudo modprobe kqemu

Ora guardiamo se è stato creato /dev/kqemu, se non esiste lo creiamo noi, poi in ogni caso gli diamo i permessi giusti:

sudo mknod /dev/kqemu c 250 0
sudo chmod 666 /dev/kqemu

KVM

Oltre a installare qemu e module-assitant dovermo installare kvm:

sudo apt-get install qemu module-assistant kvm

La procedura per compilare il modulo è identica a quella di kqemu con ovviamente kvm al posto di kqemu in tutti i passaggi. In più cambia il nome del modulo da caricare con modprobe che dipende dal processore (kvm-intel per i processori intel e kvm-amd per quelli amd).

IMPORTANTE: Da ora in avanti utilizzerò il comando qemu, ma se usate kvm al posto di qemu scrivete kvm, la sintassi per il resto è la stessa.

INIZIAMO A VIRTUALIZZARE 😉

Kqemu dovrebbe essere a posto, ora analizziamo la sintassi di qemu, per esempio:

qemu -boot a -hda immagine.img -fda grub-0.97-i386-pc.ext2fs -cdrom /dev/cdrom

  • -boot indica il device con il quale eseguire il boot: a –> floppy, c –> hard disk, d –> cdrom
  • -hda indica quale file o device deve essere usato come hard disk nel sistema virtualizzato
  • -fda indica quale file o device deve essere usato come floppy nel sistema virtualizzato
  • -cdrom indica quale file o device deve essere usato come cdrom nel sistema virtualizzato

In questo caso quindi abbiamo una macchina virtuale che fa il boot dal floppy (grub-0.97-i386-pc.ext2fs che è un’immagine di un vero floppy bootable di grub) che ha un hard disk in /dev/hda (immagine.img) e un cdrom (che in questo caso è il vero cdrom del nostro computer).

Un altro esempio per iniziare a capire può essere un semplice boot di una live:

qemu -boot d -cdrom immagineiso.iso

Avviamo una macchina facendo il boot dal cdrom (-boot d) e come cdrom mettiamo l’immagine iso(-cdrom immagineiso.iso), poi naturalmente se abbiamo bisogno dell’hard disk per passarci dei file siamo liberi di usare un vero device o un immagine come hard disk nel sistema virutalizzato (-hda ecc…).

LE IMMAGINI

Il tool qemu-img ci permette di creare comprimere e convertire dei file immagine utili alla virtualizzazione, esempio:

qemu-img create -f [formato] immagine.img 2G

Così creiamo un immagine del formato che decidiamo noi grande 2gb; i formati disponibili sono:

  • raw: è il parametro di default, ovvero se non viene specificato -f al momento della creazione il file assumerà il formato raw. Ha il pregio della portabilità , può essere adoperato con più programmi di virtualizzazione.
  • qcow: vecchio formato usato da QEMU per mantenere la compatibilità con versioni precedenti alla 0.9.0, supporta la compressione e la cifratura.
  • qcow2: miglior formato fra quelli in uso soprattutto se l’immagine creata servirà solo per QEMU (versione >= 0.9.0), lo spazio occupato sul disco rigido del sistema operativo ospitante avrà le dimensioni usate realmente dalla virtual machine. Supporta la compressione e la cifratura.
  • cow: vecchio formato usato da QEMU che tra l’altro non funziona su Windows.
  • cloop: è comodo per creare immagini di cd rom avviabili come knoppix o live disto.
  • vmdk: è il formato usato da Vmware 3 e 4.

(descrizione immagini da valent-blog.eu)

Facciamo un esempio pratico, voglio provare l’ultima beta di Ubuntu (Gutsy Gibbon) ma non ho voglia di partizionare l’hard disk e non mi basta la live.

qemu-img create gutsy.img 4G
qemu -boot d -hda gutsy.img -cdrom Gutsy.iso

Partizioniamo e installiamo come se fosse tutto normale, poi dal primo avvio diamo un semplice:

qemu gutsy.img

È possibile poi comprimere un immagine, normalmente l’immagine occupa tutto lo spazio che la macchina virtuale ha disponibile, quindi se abbiamo creato un immagine di 4gb l’immagine occuperà realmente 4gb sul nostro hard disk anche se all’interno c’è spazio vuoto. Per comprimere questo spazio diamo

qemu-img create -c gutsy.img

Nella prossima puntata virtualizziamo GNU/Hurd

Buona virtualizzazione

[1]Si la volevo provare…seconda su distrowatch…

Una risposta a “Virtualizzare con qemu”

  1. […] per imparare un paio di cose riguardo questo software di virtualizzazione e di scrivere un articolo. Se non siete pratici di qemu consiglio prima di leggere quell’articolo per capire un pò […]

Lascia un commento