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

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
- Passi preliminari
- Installazione di Qemu + Kqemu
- Prova su strada
- Problemi frequenti
- Tips & Tricks
- Front-end Grafici
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.
Gianluca S. @ 16:34 del 27 gennaio 2008
English
[...] Attenzione!Questa guida, anche se funzionante, è stata riveduta e corretta. Potete leggere e commentare la guida aggiornata seguendo questo link: http://theopenspring.com/qemu-gutsy-feisty/ [...]
[...] Attenzione!Le informazioni in questa pagina sono state revisionate ed incluse in un nuovo post. Potete leggere e commentare la guida aggiornata seguendo questo link: http://theopenspring.com/qemu-gutsy-feisty/ [...]
[...] Attenzione!Le informazioni in questa pagina sono state revisionate ed incluse in un nuovo post. Potete leggere e commentare la guida aggiornata seguendo questo link: http://theopenspring.com/qemu-gutsy-feisty/ [...]
e se non hai output con il comando grep?
Non puoi installare qemu?
Se fosse così ci sono alternative?
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
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?
risolto!:D