Creazione di virtual machine per Xen
In questa guida si crea un domU con OpenSuse, ma è possibile variando qualche impostazione adoperare anche altre distribuzioni.
Preliminari
Scegliere un computer con una buona dotazione di ram. Con 512 MB si può usare agevolmente un domU, con interfaccia testuale.
Installare una distribuzione a scelta che supporti anche Xen (Debian, OpenSuse, Fedora, Ubuntu…), perciò durante la procedura di installazione indicare di voler usare xen.
Installare in una partizione con un filesystem comune (ext3, reiserfs) OpenSuse 10.2 senza desktop environment ma solo testuale e scegliere i pacchetti desiderati.
Avviare il sistema operativo con kernel xen.
Si supponga che la partizione in cui si ha installato OpenSuse 10.2 sia corrispondente a /dev/hdb5, naturalmente nei vari file di configurazione è opportuno sostituire questo riferimento con la partizione veramente adoperata.
Creare una directory /xen nella root del filesystem.
linux-0qwn:/ # mkdir /xen
Bisogna creare un file immagine che serve al dominio come swap (si può fare anche a meno, ma è consigliato).
# dd if=/dev/zero of=/xen/swap.img bs=1M count=1 seek=64
Col comando viene preparato un file di 64 megabyte posizionato nella directory /xen.
E’necessario formattare il file per renderlo swap.
# mkswap /xen/swap.img
Preparazione del file vmx di configurazione
Accedere alla partizione dove è installato OpenSuse 10.2 e copiare /boot/vmlinuz-2.6.18.2-34-xen e /boot/initrd-2.6.18.2-34-xen in /xen (attenzione: non quelli che potrebbero esserci nella directory boot del sistema operativo che sta girando ma quelli di Opensuse)
linux-0qwn:/virtual # cp boot/vmlinuz-2.6.18.2-34-xen /xen/
linux-0qwn:/virtual # cp boot/initrd-2.6.18.2-34-xen /xen/
Creare un file in /xen
linux-0qwn:/xen # touch vm.vmx
Aprirlo con un editor di testo qualunque:
linux-0qwn:/xen # kwrite vm.vmx
Inserire all’interno le seguenti righe:
kernel = “/xen/vmlinuz-2.6.18.2-34-xen”
ramdisk = “/xen/initrd-2.6.18.2-34-xen”
root= “/dev/hdb5 ro”
disk = [ ‘phy:/dev/hdb5,hdb5,w’,’file:/xen/swap.img,hda2,w’]
memory = 64
vcpus = 1
builder = ‘linux’
name = ‘vm1’
vif = [ ‘mac=00:16:3e:65:3a:ca, bridge=xenbr0’ ]
dhcp = ‘dhcp’
localtime = 0
on_poweroff = ‘destroy’
on_reboot = ‘restart’
on_crash = ‘restart’
extra = ‘ TERM=xterm’
Il dominio utente verrà avviato usando il kernel e il ramdisk messo nella cartella xen. Nella terza riga è specificato che la directory root del domU sta nella partizione indicata. Come disco usa un supporto fisico che è /dev/hdb5 e viene mostrato al sistema sul dominio come hdb5; è accessibile in scrittura (flag “w”), viene invece adoperato il file immagine swap.img come partizione di swap.
Dopo file:/xen/swap.img c’è il parametro che indica la partizione di swap che era stata inserita nel /etc/fstab di OpenSuse 10.2, perciò questo è da sostituire con quello effettivamente usato da OpenSuse.
La memoria è di 64 megabyte e le cpu virtuali allocate alla macchina virtuale sono 1. Il parametro name indica il nome del dominioU. La riga successiva assegna un mac address alla scheda di rete interna alla virtual machine che viene collegato al bridge presente sul dominio zero. Con dhcp si lascia l’assegnamento automatico degli indirizzi ip alle varie interfacce.
Il localtime serve per attribuire al domU lo stesso orologio che è in uso sul computer. L’opzione extra indica come avviare il kernel (è un parametro di boot per la macchina virtuale). I tre parametri rimanenti servono per gestire il dominio nello stato di spegnimento, riavvio o crash.
Per avviare il dominio eseguire:
linux-0qwn:/xen # xm create -c vm.vmx
Controllo del domU
Se il file di configurazione è corretto dovrebbe partire il dominio. Ecco alcuni comandi e relativi output ottenuti dalla macchina virtuale:
# uname -a
Linux linux-x0bv 2.6.18.2-34-xen #1 SMP Mon Nov 27 11:46:27 UTC 2006 i686 i686 i386 GNU/Linux
$ less /etc/fstab
/dev/hdb5 / ext3 acl,user_xattr 1 1
/dev/hda2 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/fd0 /media/floppy auto noauto,user,sync 0 0
linux-x0bv:/dev # ifconfig eth0 up
linux-x0bv:/dev # ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:65:3A:CA
inet6 addr: fe80::216:3eff:fe65:3aca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:328 (328.0 b)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Risoluzione di problemi
Si possono riscontrare delle difficoltà e degli errori se non si indicano correttamente le partizioni o il parametro root. E’ utile inserire assegnare un valore a ramdisk perché a volte si possono riscontrare problemi in fase di boot del dominio utente.
Se avete problemi non esitate ad aggiungere un commento.
7 pensieri riguardo “Creazione di virtual machine per Xen”
I commenti sono chiusi.
Ma nessuno.. e dico nessuno ha mai spiegato dopo che uno installa xen e fa tutto.. come deve fare per installare il sistema operativo nella vm ?
Assurdo.. la cosa più importante la saltano tutti.. o sono solo io che ancora non ci sono riuscito 🙁
C’è un motivo ed è piuttosto semplice anche da capire: non esiste un procedura singola valida per tutti i sistemi operativi e tra l’altro anche tra una distribuzione linux e l’altra ci sono differenze.
Ad esempio per Windows sono stati pubblicati i seguenti articoli: http://www.valent-blog.eu/2008/04/08/windows-server-2008-su-xen/ e http://www.valent-blog.eu/2008/01/13/full-virtualization-di-windows-con-xen/
Se vuoi usare la paravirtualizzazione puoi fare alcune cose:
1. Scaricare da internet qualche immagine già pronta (http://www.valent-blog.eu/2007/12/03/freeoszoo-immagini-delle-distro-per-qemu/)
2. usare tool come debootstrap
3. installare il sistema operativo usando l’HVM e poi estrarne il kernel e l’initrd dal disco immagine.