Virtualizzare su Ubuntu Gutsy (e Feisty) con Qemu + Kqemu: guida riveduta e corretta.

Schermata di Qemu

Chi ha già provato ad installare Qemu con Kqemu in Ubuntu Gutsy si sarà accorto che la procedura è fondamentalmente la stessa che si usava per Feisty.
Ma la mia vecchia guida, ha decisamente bisogno di una revisione.
Grazie ai vostri commenti ho già avuto modo di estenderla, e sarei felice di poterla rendere ancora migliore.

Indice

  1. Passi preliminari
  2. Installazione di Qemu + Kqemu
  3. Prova su strada
  4. Problemi frequenti
    1. Could not open ‘/dev/kqemu’…
    2. You do not have enough space in ‘/dev/shm’…
    3. Problemi di accesso in scrittura
  5. Tips & Tricks
    1. Caricare il modulo kqemu all’avvio del sistema.
    2. Impostazione della dimensione di /dev/shm all’avvio
  6. Front-end Grafici
    1. Qemu Launcher
    2. Qemuctl
    3. Qemulator

1. Passi preliminari

Prima di iniziare ad installare il necessario è opportuno controllare se l’hardware di cui disponiamo supporta la Kernel Virtualization.
grep -E '^flags.*(vmx|svm)' /proc/cpuinfo
Se ricevete in risposta un output tipo questo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm

vuol dire che il vostro processore supporta l’accelerazione diretta delle VM.
E’ quindi in grado di usare, oltre al metodo qui descritto, kvm come acceleratore, ampiamente trattato nel wiki di ubuntu.

2. Installazione di Qemu + Kqemu

Qemu (versione 0.9) si trova comodamente nei repository di Ubuntu ed è il programma principale.
Kqemu invece è un modulo del kernel per accelerare le VM.
Quest’ultimo va compilato ed installato, per questo ricorriamo all’aiuto di module-assistant.

Installiamo i pacchetti necessari:
sudo apt-get install qemu kqemu-source module-assistant
Compiliamo kqemu:
sudo module-assistant prepare
sudo module-assistant auto-install kqemu

Ora dobbiamo istruire udev per creare il nodo /dev/kqemu al caricamento di kqemu, perciò creiamo il file /etc/udev/rules.d/60-kqemu.rules:
sudo nano /etc/udev/rules.d/60-kqemu.rules
scriviamo questa riga:
KERNEL=="kqemu", NAME="%k", MODE="0660", GROUP="kqemu"
Salviamo e chiudiamo il file, poi modifichiamo il file /etc/modprobe.d/kqemu
sudo nano /etc/modprobe.d/kqemu
in modo che contenga questa riga:
options kqemu major=0
di solito trovate quel valore impostato a 250 e si tratterà solo di cambiare quello.

Rendiamo ora kqemu utilizzabile dai normali utenti del sistema
sudo addgroup --system kqemu
sudo adduser $USER kqemu

Con questi due comandi abbiamo creato un gruppo chiamato kqemu e inserito l’utente col quale siamo loggati nel gruppo.
Se voleste aggiungere altri utenti al gruppo kqemu basta sostituire a $USER lo username dell’ utente che vogliamo.

E’ ora necessario aggiornare le variabili d’ambiente, il modo più semplice è terminare la sessione e rifare il login.

3. Prova su strada

Proviamo a caricare manualmente il modulo del kernel kqemu, più avanti spiegherò anche come caricare kqemu all’avvio del sistema.
sudo modprobe kqemu
Se non riceviamo messaggi d’errore è perchè non ci sono stati problemi quindi possiamo procedere all’avvio vero e proprio di qemu.

Complimenti! Ora il vostro PC è pronto ad ospitarne un altro.

In questo esempio installeremo Windows XP, che richiede minimo 2Gb di spazio, su un hard disk virtuale di 5Gb.
Creazione dell’immagine disco virtuale:
qemu-img create -f qcow winxp.img 5G
Inseriamo il CD di installazione di Windows e avviamo la nuova VM
qemu -localtime -cdrom /dev/cdrom -m 384 -boot d winxp.img
E’ possibile utilizzare anche solo l’immagine ISO del CD di installazione, avviando la macchina virtuale con
qemu -localtime -cdrom /percorso/alla/iso/nomefile.iso -m 384 -boot d winxp.img
ovviamente sostituendo “/percorso/alla/iso/nomefile.iso” con il percorso e il nome che fanno al caso nostro.

A volte può succedere che il sistema di installazione di Windows XP si blocchi. Se vedete che passa troppo tempo senza che l’installazione sembri andare avanti provate a riavviare la VM, l’installazione riprenderà dal punto in cui era arrivata. Nel mio caso comunque ha proceduto come se fosse su un PC reale.

4. Problemi frequenti

4.1 Could not open ‘/dev/kqemu’…

Se all’avvio della VM dovessimo ricevere questo messaggio d’errore
Could not open '/dev/kqemu' - QEMU acceleration layer not activated
E’ probabile che l’utente corrente non appartiene al gruppo kqemu, da terminale diamo il comando
groups
e controlliamo l’output: tra i vari gruppi a cui siamo associati deve esserci kqemu, in caso contrario
sudo addgroup --system kqemu
sudo adduser $USER kqemu

4.2 You do not have enough space in ‘/dev/shm’…

Altro errore più che frequente:
You do not have enough space in '/dev/shm' for the 384 MB of QEMU virtual RAM.
To have more space available provided you have enough RAM and swap, do as root:
umount /dev/shm
mount -t tmpfs -o size=400m none /dev/shm
Or disable the accelerator module with -no-kqemu

In questo caso seguendo il suggerimento del modulo kqemu:
umount /dev/shm
mount -t tmpfs -o size=400m none /dev/shm

In generale la dimensione di tmpfs deve essere uguale alla memoria della VM + 16 Mb
Se necessario, possiamo modificare la dimensione predefinita di /dev/shm

4.3 Problemi di accesso in scrittura

In caso di problemi di accesso in scrittura all’immagine della VM, assicuriamoci che tale file abbia i permessi adatti e appartenga anche al gruppo kqemu.
chmod 660 winxp.img
sudo chown $USER:kqemu winxp.img

5. Tips & Tricks

5.1 Caricare il modulo kqemu all’avvio del sistema.

Apriamo il file /etc/modules
sudo nano /etc/modules
aggiugiamo al fondo
kqemu

5.2 Impostazione della dimensione di /dev/shm all’avvio.

Ad ogni avvio di sistema, /dev/shm viene reimpostato al valore di default.
Nella vecchia guida consigliavo di aggiungere la nuova dimensione sul file /etc/fstab, ma questo mi causava sporadicamente qualche problemino durante l’arresto del sistema così ho trovato un modo più corretto.

Possiamo invece stabilire un valore per la dimensione massima di /dev/shm in modo che kqemu utilizzi solo quella che gli serve.
Calcolatrice alla mano, apriamo il file /etc/default/tmpfs
sudo nano /etc/default/tmpfs
troviamo una riga con scritto
SHM_SIZE=VALORE
VALORE, espresso in bytes, deve essere pari alla memoria della VM + 16 Mb
(è più difficile a dirsi che a farsi… proviamo con una formuletta!)
1 Mb = 1024 * 1024 bytes = 1048576 bytes, quindi
VALORE = (MEMORIA + 16) * 1048576
ad esempio se volessi assegnare 512Mb alla macchina virtuale avrei
512 + 16 = 528Mb
528 * 1048576 = 553648128 byte

In altre distro questa variabile potrebbe essere impostata altrove, ad esempio in Suse è nel file /etc/sysconfig/kernel, quindi se non state usando Ubuntu questo metodo potrebbe non funzionare.

6. Front-end Grafici

Esistono fondamentalmente 3 programmi che possono renderci più comodo l’uso di Qemu

6.1 Qemu Launcher

sudo apt-get install qemu-launcher

6.2 Qemuctl

sudo apt-get install qemuctl

6.3 Qemulator

sudo apt-get install qemulator

Personalmente preferisco i primi due:
Qemu Launcher, serve semplicemente a creare o avviare le macchine virtuali, mentre qemuctl è un menu che ci permette di controllare la VM durante l’esecuzione.
Con quemuctl, possiamo ad esempio connettere nuove periferiche, salvare lo stato della macchina, smontare e montare CD-ROM etc.
Tutte cose che, normalmente, dovremmo fare dalla console di Qemu alla quale si accede con la combinazione di tasti Ctrl + Alt + 2
Qemulator è graficamente più piacevole ed include alcune funzioni di qemuctl, ma è ancora poco stabile, necessita di rimanere avviato in background, e a volte rallenta l’esecuzione della VM.

This entry was posted in guide, linux, Software, ubuntu and tagged , , , , , , , . Bookmark the permalink.

8 Responses to Virtualizzare su Ubuntu Gutsy (e Feisty) con Qemu + Kqemu: guida riveduta e corretta.

  1. Pingback: Virtualizzare con Ubuntu Feisty: niente di più facile! | The Open Spring

  2. Pingback: Qemu: integrazione all’how-to. | The Open Spring

  3. Pingback: Rendere definitive le opzioni per /dev/shm | The Open Spring

  4. sigfunaris says:

    e se non hai output con il comando grep?
    Non puoi installare qemu?
    Se fosse così ci sono alternative?

  5. Gianluca S. says:

    il metodo descritto vale a maggior ragione se il tuo precessore NON supporta la la virtualizzazione “diretta”, quindi puoi tranquillamente usare il metodo che ho descritto, che utilizza il modulo kqemu per accelerare la VM

  6. leo says:

    ciao sono riuscito ad installare tutto e ho creato anche il launcher..sarà xkè è la prima volta ke ho a ke fare con applicazioni del genere ma nn capisco come funziona..nn so come muovermi..se lascio le indicazioni come scritte e cerco di lanciarlo mi dice “No file specified for Hard Disk 0″.cosa devo fare?

  7. leo says:

    risolto!:D

  8. What do u think about the best window xp sp3?XP sp3 is the best window because Previous xp version were slow,Useless, and boring.Windows vista requirements R too high not anyone can afford it maybe,it will be good.In xp sp3 we can easy communicate,it’s fast and there r many other facilities here in this window. thank you

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>