Virtualizzare con Qemu

Dom, 27/01/2013 - 15:19
Ritratto di mauriziod

Virtualizzare con Qemu

Inviato da mauriziod 0 commenti

Vogliamo avere un altro sistema operativo assieme ad al nostro Suse. La cosa peggiore, secondo me, è cercare di partizionare il disco per farcelo stare ed è consigliato solo se non si hanno particolari problemi del hardware interno.

La soluzione è virtualizzare il OS (Sistema Operativo) con VirtualBox (vedi qui il perchè) ma esiste anche programma Qemu per questo.

Qemu è un ottimo programma per virtualizzare OS dentro il nostro Suse solo che essendo “specialistico” e molto “spartano” e quindi molti preferiscono il VirtualBox.

Il fatto dello spartano è anche un pregio come quello dello specialistico perchè questo riduce il consumo di RAM e CPU durante la virtualizzazione ma il suo settaggio diventa più difficile.
Avviene, una netta separazione tra OS virtualizzato e quello ospitante (nel nostro caso Suse) e questo può essere un pregio (facile istallazione) ma anche un difetto (passaggio dati).

Nota: Ci sono moduli aggiuntivi ma voglio farvi una guida sempliciotta. Whew!

Installare Qemu è facilissimo: Basta andare in “Installa programmi” di Yast, cercarlo e digli d'installarlo. Poi consiglio di riavviare la macchina. VirtualBox e WMware in questo caso sono molto più complicati. Devil

Spiacenti, ma dopo non avrete un programma da lanciare da menu di KDE/Gnome. Questo perchè Qemu opera tramite linea di comando! (non è vero Liar )

Volete vederlo all'opera?

Installazione da cd-rom

Vogliamo fare una istallazione da cd-rom? Per esempio Ubunto (ma anche Windows o altro)? Di solito è la prima cosa che si fa:

La cosa è in parte scopiazzata (ma spero di essere più chiaro) da qui e altri:
http://www.megalab.it/7967/2/guida-completa-per-qemu

Apriamo un terminale come Kconsole. Creiamo prima un disco virtuale e dato che ci siamo lo formattiamo settiamo come formato VDI con l'utilità "qemu-img":

qemu-img create -f vdi ubuntu.vdi 8G formatting 'ubuntu.vdi', fmt=vdi size=8589934592 static=off

create : dice di creare un disco virtuale
-f vdi : è il formato in questo caso VDI.
ubuntu.vdi : è il nome delle esempio del file da creare
8G : è la dimensione (G= gigabyte M= megabyte K= kilobyte).
size : Opzionale corrisponde alla sua grandezza

Poi settiamo la macchina virtuale e (si avvia) installiamo il OS:

qemu -smp 1 -cdrom precise-desktop-i386.iso -usb -m 512 -no-kvm ubuntu.vdi

Abilitiamo il cd-rom (che in realtà punta al file ISO “precise-desktop-i386.iso”) e :
-smp 1 : indica il numero delle CPU virtuali
-m 512 : indica i MB di RAM assegnati alla macchina virtuale. Di default il valore è 128 MiB.
-usb : attiva il supporto USB
-no-kvm : disattiva kvm, cioè il programma che permette di usare le vt-x o le AMD-v e dunque se la vostra CPU le supporta (o non lo sapete), usatelo. Seda errore l'opzione non usatelo.

Per le altre opzioni vi lascio ad manuali più estesi perchè questi sono intuibili nell'esempio. La macchina emulata avrà supporto audio, l'ora sarà sincronizzata con quella del Suse.

Non preoccupatevi se impiega del tempo di preparazione, e normale. Procedete alla normale istallazione.

Per uscire da QEMU uso la combinazione di tasti CRTL + ALT, per il full-screen CTRL + ALT + F.

Adesso vogliamo far partire il nostro OS! Mica facile ogni volta scrivere bene il comando e quindi è meglio fare uno script.

Dunque con un editor (esempio Kwrite) creiamo il file “os-start.sh” (possiamo scegliere un altro nome) e scriviamo:

#!/bin/bash
#
qemu -smp 1 -hda ubuntu.vdi -usb -m 512 -no-kvm

Certo che lo potete come alternativa fare un file “.desktop” o “lanciatori” di Gnome (vedi qui) .
Nel caso dello script dovete dagli l'estensione “.sh” e abilitarlo come “eseguibile” che in modalità terminale è :

chmod +x os-start.sh

Per lanciarlo da terminale

./os-start.sh

Nota: Se il disco virtuale è in formato "qcow2" potete farlo semplicemente partire con

$ qemu qemu_image.qcow2

Dove qemu_image.qcow2 è un nome vostro con estensione e formato qcow2.

Il boot richiede del tempo (non preoccupatevi se sembra che sia bloccato) ma alla fine ecco che compare la prima schermata del vostro Qemu. Logicamente se state facendo una installazione comparirà una istallazione mentre se già usate un disco pieno compare il vostro OS.

Quando Qemu è avviato, con la combinazione Control + Alt2 (spesso è Shift-sinistro invece di Control) si apre la console di controllo per effettuare alcune operazioni semplici (caricare un nuovo disco-immagine, riavviarlo, sospenderlo o uscire dal programma). Con la combinazione Control + Alt1, invece, si ritornerà alla macchina emulata.

Interfaccia grafica

Come sarebbe bello se avesse una interfaccia grafica, mi direte voi!
ESISTE! Aqemu.

Nota ci sono diversi come virtualbrick ma io consiglio questo.

Il progetto, in RPM per Suse (fatto in QT) è messo in
http://sourceforge.net/projects/aqemu/

Tenete conto che è distaccato da Qemu, dunque se lo chiudete la virtualizzazione continua imperterrita o si interrompe con errore! Installatelo dopo aver istallato Quemu.

Dato che è un progetto per vari OS vi chiederà delle locazioni in Suse:

Locazione di settaggio Aqemu (Aqemu VM folder): /home/nomeutente/.aqemu/
GUI: Oxygen
Locazione emulatore: /usr/share/qemu
Start Qemu : /sbin/qemu

Nota: Installatevi (non necessario) anche libvirt,virtinst, virt-manager che consente di controllare ogni tipo di Virtual Machine.

Concludendo

Dovete sapere che Qemu è dotato del modulo Kernel per essere più veloce di nome KVM che poi è esso stesso un VM (assicurarsi che i moduli di Virtualbox non siano caricati, sono incompatibili), ma per un uso amatoriale NON servono. Inoltre se non possedete un sistema 64bit difficilmente c'è.

Il primo passo è verificare che la propria CPU supporti effettivamente l'accelerazione hardware per la virtualizzazione (Intel VT o AMD-V):

$ egrep '(vmx|svm)' --color=always /proc/cpuinfo

Se negli elenchi compaio le diciture vmx e/o svm allora il processore è dotato delle suddette istruzioni hardware.
KVM è nativamente incluso nel kernel dalla versione 2.6.20, pertanto è necessario installare quanto segue: qemu qemu-kvm bridge-utils

Il pacchetto bridge-utils non è in realtà strettamente necessario se si intende semplicemente creare una rete virtuale per il sistema guest.
Problema: Durante l'installazione il rispettivo modulo di riferimento non è caricato e appare un errore come questo:

 
ERROR: could not insert 'kvm_amd': Operation not supported
[FAIL] Module kvm_amd failed to load ... failed!

E' necessario abilitare la virtualizzazione nel Bios (nel mio caso premendo F10 durante l'avvio del sistema e abilitando la voce Protezione/Protezione del Sistema/Virtualization Technology).

Inoltre (scopiazzato):

  • Per rendere disponibili i vari host USB (pendrive ecc.) al sistema guest è necessario avviare qemu come root, in caso contrario anche dichiarando opportunamente i dispositivi desiderati questi risulteranno comunque indisponibili.
  • La configurazione di rete qui proposta è la più semplice e permette l'accesso a internet e a eventuali condivisioni Samba, NFS ecc., tuttavia in questa modalità la macchina virtuale funge da firewall bloccando tutte le connessioni in ingresso; l'utente deve pertanto reindirizzare le necessarie porte qualora voglia usare particolari servizi, come connettersi via SSH al sistema guest. È da notare che in questa modalità si occupa la macchina virtuale di assegnare automaticamente IP e gateway al sistema guest, la cosa importante è assicurarsi che la subnet non sia la stessa della macchina host (se per esempio l'host ha IP 192.168.1.X, allora il sistema guest dovrà avere un IP non appartenente alla suddetta subnet). Esistono ulteriori limitazioni che non verranno qui trattate, basti dire che in caso di necessità complesse può essere obbligatorio utilizzare altre configurazioni del servizio di rete, oltre a dover impostare un bridge di rete (quindi a rinunciare eventualmente alla gestione delle connessioni di rete tramite network-manager); in quest'ultimo caso il sistema guest potrà avere un IP appartenente alla subnet dell'host.
  • Per condividere una o più directory tra host e guest è necessario ricorrere a strumenti di rete come Samba e NFS, in poche parole l'accesso alle risorse dell'host da parte del guest avviene attraverso le risorse di rete, come se host e guest fosse due macchine distinte nella stessa LAN. A titolo informativo si precisa che usando libvirt dovrebbe essere possibile montare direttamente nel sistema guest una o più risorse del sistema host attraverso il driver 9p virtio.

Link:

Sito Qemu:
http://www.qemu.org/
http://wiki.qemu.org/Main_Page

Manuale:
http://wiki.qemu.org/Manual
http://en.wikibooks.org/wiki/QEMU
http://qemu-buch.de/
http://www.megalab.it/7967/2/guida-completa-per-qemu

Qui delle guide da prendere con le dovute pinze:
http://guide.debianizzati.org/index.php
http://www.pluto.it/files/journal/pj0905/eev.html
http://manual.aptosid.com/it/hd-install-vmopts-it.htm

Wiki:
http://it.wikipedia.org/wiki/QEMU (vecchi dati)
http://en.wikipedia.org/wiki/QEMU

Wave