Virtualizzare con Ubuntu Feisty: niente di più facile!
Guide, Linux, Software, Ubuntu
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/
Introduzione
Ho trovato questa guida in inglese sul wiki di ubuntu, l’ho provata e funziona tutto al primo colpo.
La trovo molto ben fatta e immediata: mi meraviglia il fatto che nessuno si sia ancora preoccupato di tradurla, perciò ci penso io!
La guida linkata si riferisce specificamente all’installazione di Windows XP, ma nessuno ci impedisce di installare qualsiasi altro sistema opeartivo sulla nostra macchina virtuale, ci sono inoltre alcuni piccoli cambiamenti che ho apportato e testato io.
Mi spiace solo non potervi assicurare la riuscita del tutto poichè non ho la possibilità di provare su diversi PC. Gradirei per l’appunto che mi segnalaste la riuscita o meno dell’”impresa”.
Per prima cosa potete verificare se il vostro hardware supporta la Kernel Virtualization, pertanto da terminale digitate:
grep -E '^flags.*(vmx|svm)' /proc/cpuinfo
Nel caso riceveste qualche risultato in risposta potete prendere in considerazione questa ipotesi (link ), nel mio caso non ho avuto risultati, ma andiamo avanti per la nostra strada.
Installazione di Qemu + kqemu
Qemu (versione 0.8.2) si trova comodamente nei repository di Ubuntu ed è il programma principale. Kqemu invece è un acceleratore per qemu, rende le macchine virtualizzate decisamente più veloci e utilizzabili. L’inghippo sta nel fatto che va compilato e installato, ma per questo ricorriamo all’aiuto di module-assistant.
Armiamoci di Terminale e installiamo il necessario:
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.
Ora dobbiamo modificare il file /etc/modprobe.d/kqemu
sudo nano /etc/modprobe.d/kqemu
deve contenere questa riga:
options kqemu major=0
di solito trovate quel valore impostato a 250 e si tratterà solo di cambiare quello.
Ci siamo quasi, ora dobbiamo rendere 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.
Prima di andare avanti è opportuno aggiornare le variabili d’ambiente, il modo più semplice è terminare la sessione e rifare il login.
Se dovessimo ricevere questo messaggio d’errore
Could not open '/dev/kqemu' - QEMU acceleration layer not activated
dobbiamo verificare innanzitutto che il nostro utente appartenga al gruppo kqemu, pertanto da terminale
groups
tra i vari gruppi a cui siamo associati deve esserci kqemu ed eventualmente rivedere i passi precedenti.
Ora possiamo provare a caricare manualmente il modulo del kernel kqemu
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.
Prima di iniziare la parte divertente della guida vi do un ultimo suggerimento.
Se prevedete di usare spesso qemu per “giocare” con varie macchine virtuali, potete caricare il modulo kqemu all’avvio del sistema semplicemente aprendo il file /etc/modules
sudo nano /etc/modules
e aggiungendo la voce
kqemu
Uso di qemu
Bene ora che il nostro PC è pronto ad “ospitarne” un altro possiamo provare a creare una nuova macchina virtuale.
Per questo esempio proverò a installare Windows XP pertanto mi serviranno circa 5 Gb di hard disk (per stare un pelino larghi).
qemu-img create -f qcow winxp.img 5G
Con questo comando abbiamo creato l’hard disk virtuale. L’immagine così creata non sarà utilizzabile “dall’esterno” ma sarà di dimensioni ridotte e ridimensionabile. Se avete necessità di montare l’immagine del SO ospitato senza avviare la macchina virtuale corrispondente potete usare un’immagine di tipo raw vi basterà omettere l’opzione “-f qcow”, ma occuperà tutta la dimensione specificata e non sarà ridimensionabile.
Potrebbero sorgere problemi di accesso in scrittura all’immagine della VM (=Virtual Machine).
Per ovviare a ciò assicuriamoci che tale file abbia i permessi adatti e appartenga ANCHE al gruppo kqemu.
chmod 660 winxp.img
sudo chown $USER:kqemu winxp.img
Inseriamo il CD di installazione di Windows e…
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 puo’ succedere che il sistema di installazioen 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.
Gianluca S. @ 22:16 del 11 September 2007
English

Ciao, ho seguito la tua guida, ma nell’ultimo comando (qemu -localtime -cdrom /percorso/alla/iso/nomefile.iso -m 384 -boot d windows.img)
il terminale mi dice:
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
Cosa devo fare
Niente di più semplice, te lo dice già Qemu cosa fare :)
Ti basta utilizzare quei due comandi come root
sudo unmount /dev/shm
sudo mount -t tmpfs -o size=400m none /dev/shm
Oppure ridurre la memoria assegnata alla macchina virtuale, ma se stai usando Windows XP non te lo consiglio.
Quei due comandi (per la cronaca) non fanno altro che aumentare la dimensione di /dev/shm che è un filesystem temporaneo che serve a condividere dati tra applicazioni (il concetto è più o meno è quello)
Ho risolto il problema in parte: adesso mi dice di non poter aprire winxp.img
Scusa una cosa; /percorso/alla/iso/nomefile.iso corrisponde alla iso copiata sull’hard disk di Windows, oppure al file creato inizialmente (winxp.img)?
Un’ultima cosa. Qemu con il comando qemu -localtime -cdrom /percorso/alla/iso/nomefile.iso -m 384 -boot d windows.img
verrà avviato direttamente da terminale?
Perchè non avrei la minima idea di come utilizzarlo normalmente, dato tutti quei parametri da impostare.
Ah! Grazie per l’aiuto datomi prima :)
* nomefile.iso è l’immagine ISO del CD di installazione di Windows.
* Quel comando serve ad “accendere” la VM facendole fare il boot dal cd necessario all’avvio dell’installazione del sistema ospitato
* Per avviare normalmente la VM dopo aver installato correttamente il sistema ospitato devi togliere l’opzione “-boot d” ad es.
qemu -localtime -cdrom /dev/cdrom -m 384 winxp.img
* Nella guida ho usato i comandi per terminale perchè sono più semplici da seguire, ma se pensi di utilizzare spesso Qemu, magari con diverse macchine virtuali, ti consiglio vivamente l’utilizzo di qemu-launcher installabile comodamente con apt o da Synaptics.
E’ un comodo front-end grafico per qemu.
Grazie tante per i chiarimenti. Gentilissimo.
Comunque il problema persiste: non mi vuole aprire winxp.img. Eppure ho fatto tutto :(
Ho notato nella tua guida due nomi diversi per l’img.
“Inseriamo il CD di installazione di Windows e…
qemu -localtime -cdrom /dev/cdrom -m 384 -boot d winxp.img (PRIMO NOME)
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 windows.img” (SECONDO NOME)
E’solo una svista oppure è corretto?
Era solo una svista. Ho provveduto a correggere, grazie x la segnalazione.
Non riesco a capire cosa non va. Prova a controllare i permessi di winxp.img ed eventualmente postami l’errore.
Allora, il file (risieduto in /root) mi dice che può essere modificato solo dal proprietario. Quindi, ho provveduto da dargli 777 come permesso, ma senza risultati. Avrei pensato di dare lo stesso permesso alla cartella root, ma penso che sia una pazzia dato che sarei (credo) più esposto ad attacchi.
L’errore è stato quello di mettere il file nella cartella root.
Seguendo la mia guida dovresti avere un normale utente appartenente al gruppo kqemu (puoi verificare col comando “groups” se compare la voce kqemu)
La VM va quindi avviata in qualità di utente normale e i file che utilizza devono essere all’interno della home dell’utente oppure in una cartella a cui tale utente ha accesso in lettura e scrittura.
La cartella /root è “speciale” sarebbe la home dell’utente root e non va toccata se non si sa esattamente cosa si sta facendo.
Crea il file “winxp.img” nella tua home o in una sua subdirectory e prova a fare tutte le operazioni da lì.
Ci sono riuscito!!!
ho cancellato winxp.img da /root, (rm winxp.img)
l’ho ricreato in un’altra cartella ( cd mia/cartella; qemu-img create -f qcow winxp.img 5G) e
ho dato i permessi al file (chmod 777 winxp.img).
Ora mi chiedo, se chiudo qemu dopo aver spento Windows, tutti i settaggi messi da me verranno memorizzati?
Se no, come? Infine, sono sufficienti 512mb di Ram per emulare? Premetto che userò winxp per programmare con Delphi.
Grazie ancora…Aspetto te per spegnere!!!!
io avevo provato ad assegnare tutti e 512M di memoria a Windows e funzionava, ovviamente kqemu mi richiedeva ancora più memoria su /dev/shm
E quei settaggi sono gli unici che “si perdono”
Avevo anche provato a metterli in /etc/fstab per renderli permanenti, ma voglio fare prima alcune prove per vedere di non incasinare qualche altra cosa
Per i permessi, ti bastava chmod 660 (non serve che winxp.img sia anche eseguibile)
Gianluca, ho notato che nel terminale mi compare il messaggio:”Could not open ‘/dev/kqemu’ – QEMU acceleration layer not activated”.
Cosa posso fare?
Aggiornamento:
se do il comando “modprobe kqemu” mi risponde:
“FATAL: Error inserting kqemu (/lib/modules/2.6.20-16-generic/misc/kqemu.ko): Operation not permitted”
E’successo un casino vero?
devi dare quel comando da root, quindi
sudo modprobe kqemu
una volta caricato il modulo kqemu dovrebbe sparire anche il messaggio del commento precedente.
Visto che usi spesso qemu ti consiglio di inserire kqemu nei moduli da caricare all’avvio come spiegato nella guida.
Tutto fatto :) , Grazie.
Ciao Gianluca! Qemu mi va da dio, ma ogni volta (ogni giorno) che l’avvio, mi chiede di aumentare la ram e modificare i permessi dell’iso di Windows.
E’una noia farlo sempre. Non c’è un metodo per rendere questi settaggi permanenti (come per kqemu)?
Ok sono contento che il mio “lavoro” sia servito a qualcosa. Devo solo fare qualche test e poi aggiungerò le operazioni da fare a questo post.
Come posso inserire dati sulla macchina virtuale?
Cioè: come posso installare un programma su winxp o inserirci miei dati?
Non mi riconosce le chiavi usb.
Ci sono diversi modi per connettere la nostra macchina virtuale al mondo esterno.
Per default, consultate la documentazione ufficiale a riguardo, Qemu crea una LAN virtuale che consente alla VM di comunicare con l’esterno (ad esempio collegandosi ad Internet).
Pertanto se volete trasferire dati sulla VM potete, ad esempio, condividere una directory del sistema con la LAN virtuale (per le condivisioni con windows si utilizza Samba)
Le chiavette o altre periferice USB vanno montate dalla console di Qemu (quella che si apre nella finestra della VM con Ctrl+Alt+2)
Putroppo non ho ancora avuto modo di approfondire in modo pratico questi argomenti e non posso darvi istruzioni passo-passo, ma comunque potete fare riferimento al [url="http://qemu-forum.ipi.fi/"]forum ufficiale[/url].
Posso aumentare il disco virtuale con windows xp installato dentro? Oppure devo crearne una nuova e reinstallare di nuovo tutto?
Forse ho risolto:
http://www.valent-blog.eu/2007/07/08/aumentare-le-dimensioni-di-unimmagine-di-qemu/
Conosco quel blog. E’ piuttosto ricco di informazioni dettagliate sull’uso di qemu e credo sia un’ottima risorsa. Io del resto non ho molto tempo per sperimentare. Spero comunque che ogni tanto una sbirciatina al mio blog torni a darla!
ciao io ho messo il 98.iso(debian5.0) sul desktop mi dai x cortesia il comando da shell per aprirlo
Se ho afferrato bene dovrebbe essere qualcosa tipo
qemu -localtime -cdrom /home/tuahome/Scrivania/98.iso -m 384 -boot d windows.img
Dai anche un’occhiata a questo articolo