Virtualizzazione di Windows XP o altri SO su Ubuntu con Qemu

qemu logo

qemu logo

I pc odierni sono sempre più potenti e molto spesso sotto sfruttati, la virtualizzazione permette di usarne il 100% della potenza e cosa molto utile di effettuare i test (magari di un nuovo software) su macchine usa e getta.

Usare le macchine virtuali inoltre semplifica la vita del sistemista, soprattutto quando questi ne deve gestire un numero elevato, permettendone la gestione centralizzata da un’unica console.

Vediamo allora come si può usare Qemu o KVM come sistema di virtualizzazione su di una macchina basta sul sistema Ubuntu.

Iniziamo installando i pacchetti necessari, aprite una shell e date un bel:

sudo apt-get install build-essential qemu kqemu-source kqemu-common qemulator qemu-launcher

dove qemu è il vero e propio programma di virtualizzazione, kqemu è il modulo per l’accelerazione hardware, qemulator è un’ottima gui per non dover lanciare qemu da shell, qemu-launcher è un’altra ottima gui per qemu.

Installiamo il modulo Kqemu:

sudo module-assistant prepare
sudo module-assistant build kqemu
sudo module-assistant install kqemu

Ora per abilitare l’uso del modulo Kqemu anche agli utenti user:

sudo gedit /etc/udev/rules.d/60-kqemu.rules #se usiamo Ubuntu
sudo kate /etc/udev/rules.d/60-kqemu.rules #se usiamo Kbuntu

e aggiungiamo (o modifichiamo così) la seguente riga:

KERNEL==”kqemu”, NAME=”%k”, MODE=”0660″, GROUP=”kqemu”

(lasciate una riga bianca – premete invio alla fine del testo – in fondo al file, questo evita la possiblità che si riscontri l’errore: warning: no final new line in /etc/fstab. Aprendo con un editor di testi uno qualunque dei file di configurazione contenuti nella cartella /etc si noterà la presenza costante del <CR> – linea vuota – in fondo)

Adesso modifichiamo il file sudo kqemu (nel mio caso era già così):

sudo gedit /etc/modprobe.d/kqemu #kate se usate Kubuntu

e aggiungiamo (o modifichiamo così) la seguente riga:

options kqemu major=0

(lasciate una riga bianca in fondo al file)

Abbiamo quasi finito di preparare il tutto; ora aggiungiamo il gruppo kqemu e aggiungiamo il nostro utente a tal gruppo per poter usare l’accelerazione Hardware (kqemu) anche da user:

sudo addgroup –system kqemu
sudo adduser $USER kqemu

Infine aggiungiamo kqemu al file modules in modo che venga caricato all’avvio del pc:

sudo gedit /etc/modules #kate se usate Kubuntu

e aggiungete in fondo al file:

kqemu

(lasciate una riga bianca in fondo al file)

quindi carichiamo il modulo con un (se il comando va a buon fine nella shell non uscirà  nessuna risposta!):

sudo modprobe kqemu

verifichiamo che kqemu sia caricato con:

lsmod | grep kqemu

avremo una risposta tipo:

kqemu                 180648  0

Ora una chicca: di default /dev/shm è impostato a un max di metà della ram fisica, ma se noi vogliamo dare maggior quantità di ram a qemu, lo possiamo fare editando il file /etc/fstab così:

sudo gedit /etc/fstab #kate se usate Kubuntu

e modifichiamo o creiamo (io non avevo tale riga) la riga:

none /dev/shm tmpfs defaults 0 0

con

none /dev/shm tmpfs defaults,size=1000M 0 0

(lasciate una riga bianca in fondo al file)

dove 1000M equivale a 1GB nel mio caso nel vostro dipende dalla ram installata nel vostro PC, io ho 2GB+4GBswap.

A questo punto siamo a posto, MA per chi come me dispone di una cpu dual core con virtualizzazione nativa, possiamo abilitare oltre a kqemu anche kvm, il modulo del kernel Linux per la virtualizzazione nativa che sfrutta la virtualizzazione nativa di tali cpu ottenendo prestazioni quasi pari all’installazione sulla macchina reale!!

Innanzi tutto controlliamo che la nostra cpu supporti effettivamente la virtualizzazione nativa. Da shell:

egrep ‘(vmx|svm)’ /proc/cpuinfo

se esce una pappardella simile a quella che esce a me avete la virtualizzazione nativa, se non esce niente la vostra cpu non la supporta.

Risultato comando:

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy ts fid vid ttp tm stc

La nostra cpu supporta la virtualizzazione nativa quindi:

sudo apt-get install kvm libvirt-bin ubuntu-vm-builder

di questi ultimi pacchetti ci tengo a precisare che basterebbe installare solo kvm.

# “Libvirt is a C toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). The library aims at providing a long term stable C API for different virtualization mechanisms. It currently supports QEMU and KVM.”

# “This is the Ubuntu VM builder script which automates the process of creating a ready to use VM based on Ubuntu. You can pass command line options to add extra packages, remove packages, choose which version of Ubuntu, which mirror etc. On recent hardware with plenty of RAM, tmpdir in /dev/shm, and a local mirror, you can bootstrap a vm in less than a minute.”

Io personalmente ho installato solo il modulo kvm.

Ora aggiungiamo il nostro utente al gruppo kvm (per poter utilizzare il modulo anche da user)

sudo adduser `id -un` kvm

otterremo una risposta simile aquesta:

Aggiunta dell’utente «marco» al gruppo «kvm» …
Aggiunta dell’utente marco al gruppo kvm
Eseguito.

Infine carichiamo il modulo kvm all’avvio (riapriamo il file modules):

sudo gedit /etc/modules #kate se usate Kubuntu

e aggiungete in fondo al file:

kvm-amd     #se AVETE una CPU AMD
kvm-intel   #se AVETE una CPU INTEL

(lasciate una riga bianca in fondo al file)

Poi carichiamo il modulo con un (se il comando va a buon fine nella shell non uscirà  nessuna risposta!):

sudo modprobe kvm-amd #se AVETE una CPU AMD
sudo modprobe kvm-intel #se AVETE una CPU INTEL

verifichiamo che kvm sia caricato e attivo con:

lsmod | grep kvm

avremo una risposta tipo:

kvm_amd                40972  0
kvm                   176624  1 kvm_amd

Abbiamo finito ora riavviamo il pc e al riavvio inizieremo a Virtualizzare!

Ora che è tutto pronto creiamo l’immagine per il nostro disco virtuale dove verrà  installato il nostro SO Virtuale.

Per creare disco virtuale:

/usr/bin/qemu-img create -f qcow2 /home/marco/vdisk.img 30000MB

dove qcow2 è il tipo di file immagine usato per creare il disco virtuale,;questo tipo di file immagine è ad espansione dinamica cioè anche se la dimensione massima è impostata a 30GB avrà  le dimensioni effettivamente utilizzate dal sistema virtuale.

Ora che abbiamo creato il file immagine possiamo lanciare la nostra macchina virtuale. Quindi dobiamo lanciare la macchina virtuale da file immagine: 

sudo /usr/bin/qemu -usb -localtime -hda /home/marco/vdisk.img -cdrom /home/marco/KDE-Four-Live.i686-0.1.0.iso -boot d -m 512 -soundhw all

poi lanciare la macchina virtuale da cdrom:

sudo /usr/bin/qemu -usb -localtime -hda vdisk.img -cdrom /dev/scd0 -boot d -m 512 -soundhw all

dove /dev/scd0 dipende dal nome del device del vostro cdrom.

Lanciare la macchina virtuale da HD:

sudo /usr/bin/qemu -usb -localtime -hda vdisk.img -boot c -m 512 -soundhw all

l’opzione per lanciare la macchina virtuale da HD è -boot c.

Lanciare la macchina virtuale da HD CON CDROM ATTIVATO – usb – LAN:

sudo /usr/bin/qemu -smb /home/marco/Condivisa -usb -usb /dev/sdb1 -localtime -soundhw all -hda /vdisk.img -cdrom /dev/scd0 -boot c -m 512 -net nic,macaddr=00:90:F6:29:C8:39 -net user -monitor stdio

Dove:

  • -m 512: Quantità  di ram assegnata alla VM.
  • -usb: abilitiamo uso usb alla VM
  • -hda: disco virtuale
  • -soundhw: abilitiamo scheda sonora
  • -net nic,macaddr=00:90:F6:29:C8:39 -net user: attiviamo scheda di rete, per default è già  attiva.
  • -monitor stdio: console di qemu serve per poter cambiare cdrom al volo e molto altro
  • -cdrom /dev/scd0: attiviamo cdrom fisico

Lanciare la macchina virtuale con kvm (virtualizzazione Nativa della CPU per prestazioni quasi pari all’installazione Fisica:

sudo kvm -m 1000 -localtime -usb -cdrom /media/ArchivioLinux2/DesktopBSD-1.6-i386-CD.iso -boot c /media/ArchivioLinux2/vdiskDesktopBSD.img -soundhw all

Nel caso otteniate il seguente errore:

open /dev/kvm: Permission denied
Could not initialize KVM, will disable KVM support
Ubuntu does not support running KVM without hardware acceleration. Sorry.

basta lanciare la macchina virtuale da root usando il comando sudo.

Ed ecco infine qualche altro comando utile.

Informazioni sull’mmagine:

qemu-img info /vdisk.img
qemu-img info /media/ArchivioLinux2/vdisk.img

Convertire il file immagine dal vecchio formato qcow al nuovo qcow2

qemu-img convert -f qcow /vdisk.img -O qcow2 /media/Archivio/vdisk2.img

Potrete trovare altre informazioni nella documentazione ufficiale: http://bellard.org/qemu/user-doc.html.

Vi riporto le immagini delle due gui per l’uso di Qemu:

Qemulator e Qemu Launcher

Per la gestione delle macchine virtuali a costo zero aziendali vi consiglio virt-manager; qui la pagina dal sito della documentazione per la guida: http://help.ubuntu-it.org/8.04/ubuntu/serverguide/it/libvirt.html.

Ed ecco XP Virtualizzato su Ubuntu:

XPVirtualizzato Con Quemu su Ubuntu

Nel prossimo articolo parlerò dell’installazione di seamlessrdp per utilizzare un’ applicazione Windows direttamente nel vostro desktop Linux (nel caso l’applicazione non sia utilizzabile con l’ottimo Wine).

Su Rodolfo Giometti

Ingegnere informatico libero professionista ed esperto GNU/Linux offre supporto per: - device drivers; - sistemi embedded; - sviluppo applicazioni industriali per controllo automatico e monitoraggio remoto; - corsi di formazione dedicati. Manutentore del progetto LinuxPPS (il sottosistema Pulse Per Second di Linux) contribuisce attivamente allo sviluppo del kernel Linux con diverse patch riguardanti varie applicazioni del kernel e dispositivi (switch, fisici di rete, RTC, USB, I2C, network, ecc.). Nei 15+ anni di esperienza su Linux ha lavorato con le piattaforme x86, ARM, MIPS & PowerPC.

Lascia un commento

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi