Convertire .xva Xenserver Virtual Machine in una VM xen .img e avviare in KVM

kvmObiettivo. Convertire macchine  virtuali Windows XP e Windows 7 formato proprietario .xva,  Xenserver Citrix, in Virtual Machine xen .img ( plain xen ) e avviare la VM in KVM oppure in QEMU.  La conversione del formato .xva  in .img sarà realizzata in modo manuale è si basa su uno script di Carsten in Convert Citrix XenServer images to plain Xen – Tutorials / Howtos – Sysconfig’s Wiki. La procedura è stata usata su .xva generate da xenserver 5.6 e 6.0 con .xva anche da 120 GB e con 5 dischi.

Il formato .xva usato da XenServer è un po’ particolare per non dire stravagante. Per ottenere il formato nativo di xen è necessario decomprimere con tar i files .xva che sono archivi compressi.  La decompressione genera una directory Ref:x che conterrà blocchi da 1 MB.  I blocchi dovranno essere concatenati e gli spazi riempiti.

Decomprimere la VM .xva

Nella fase di decompressione verrà creata un dir del tipo Ref:x

tar xf VM-nome.xva   ## es. tar xf WindowsXP.xva 
...
tar: Ref:18/00008193: implausibly old time stamp 1970-01-01 01:00:00
tar: Ref:18/00008193.checksum: implausibly old time stamp 1970-01-01 01:00:00
... 

Prima di entrare nel directory generata e unire i blocchi. Creare lo script VMConvert.sh utilizzando il codice
di seguito

script VMConvert.sh

#!/bin/bash

dd if=/dev/zero of=blank bs=1024 count=1k
test -f $1.img && rm -f $1.img
touch $1.img

max=`ls ???????? | sort | tail -n1`

for i in `seq 0 $max`; do
        fn=`printf "%08d" $i`
        echo -n "$fn of $max"
        if [ -f "$fn" ]; then
                echo " - appending chunk"
                cat $fn >> $1.img
        else
                echo " - filling blank"
                cat blank >> $1.img
        fi
done

rm -f blank

echo "Done."

Rendiamo eseguibile lo script e passiamo nella dir Ref:x

chmod a+x VMConvert.sh 
cd Ref:x             ## es. cd Ref:18

Creare la VM xen standard

avviare l’operazione di concatenazione che genererà il file .img e la VM xen plain

sudo /percorso/VMconvert.sh  WindowsXP

L’operazione richiederà del tempo alla fine avremo l’immagine WindowsXP.img

Controllo dell’immagine xen .img

Il file .img potrà essere controllato effettuando il mount dell’immagine stessa. Per effettuare il mount è necessario determinare prima l’offset utilizzando  fdisk o parted. Con fdisk

/media/VM/QEMU/libvirt/images$ fdisk -l WindowsXP.img 

Disk WindowsXP.img: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc4a4c4a4

        Device Boot      Start         End      Blocks   Id  System
WindowsXP.img1   *          63    50315579    25157758+   7  HPFS/NTFS/exFAT

Start a 63 -> Sector size 512 -> offset= 63*512=32256

Determinato l’offset (32256) possiamo montare l’immagine con:

sudo mkdir /mnt/source
mount -o loop,offset=32256 WindowsXP.img /mnt/source

Avviare la VM Windows in KVM

Per avviare la VM WindowsXp che abbiamo convertito da .xva a .img  nell’infrastruttura di virtualizzazione, propria del kernel Linux, KVM spostiamo l’immagine nella dir con le nostre macchine virtuali per kvm.
Quindi Aprire virt-manager e utilizzare l’opzione import existing disk image.

virt -manager KVM import disk

virt -manager KVM import disk

Quindi [Forward]. Selezionare le desiderate e opportune opzioni e in poco tempo avremo la macchina Virutal Running anche in KVM.

virt-manager-WindowXP

Per un rapido test la macchina virtuale poteva essere avviata anche con

kvm -m 1024 -boot d WindowsXP.img

Risorse:

Annunci

Provare le immagini ISO live in Ubuntu 12.10 – remastersys – qemu

Grazie all’ emulatore QEMU risulta agevole, in ubuntu 12.10 testare  una distribuzione live per la quale sia diponibile una ISO. Ovviamente la modalità si presta anche per provare le proprie ISO create ad esempio con remastersys

Installare qemu con:

sudo apt-get install qemu-kvm

Se si è generata una custom-backup.iso con remastersys può essere avviata ed utilizzata con

kvm -cdrom custom-backup.iso -m 1024 -vga std

Con l’opzione  -m 1024  si intervenie sulla  la RAM da dedicare alla macchina virtuale,  con  -vga std  sulla risoluzione

Per utilizzare anche l’audio utilizzare l’opzione -soundhw ad esempio:

kvm -cdrom custom-backup.iso -m 1024 -vga std -soundhw all

Di seguito alcune schermate di una macchina virtuale Lubuntu 12.10  ottenuta con remastersys opzione backup file custom-backup.iso:
1) avvio

ubuntu 12.10 qemu-remastersys avvio ubuntu 12.10 qemu-remastersys start

 

2) desktop e windows manager a disposizione

ubuntu 12.10 qemu-remastersys

3) environment awesome si nota pcmanfm con protocollo sftp su macchina remota della rete locale la risoluzione video è 1920×1080.

Comunque con qemu possiamo avviare qualsiasi iso live ad esempio se si dispone della iso slax: slax-6.1.2.iso
La live potrà essere eseguita  con :

kvm -cdrom slax-6.1.2.iso -m 512

Sel il PC presenta qualche GB di RAM ( ad esempio 4GB)  L’avvio di ISO con qemu risultarà senz’altro efficace.

Volendo è possibile anche indicare il disco immagine  IDE hard disk 0.
Per creare il disco immagine

qemu-img create  qemu_hda.img 2G

Quindi il comando per lanciare la ISO diventa

kvm  -cdrom slax-6.1.2.iso  -hda qemu_hda.img   -m 512

oppure

kvm  -cdrom slax-6.1.2.iso  -hda qemu_hda.img   -m 512 -boot d

Nota: Il formato di default per il disco immagine è raw volendo si può precisare anche il formato vmdk di vmware :    qemu-img create  -f vmdk qemu_hda.vmdk 2G

E possibile anche utilizzare interfaccie grafiche per l’avvio di qemu ad esempio qemu-launcher che si installa con:.

sudo apt-get install qemu-launcher

qemu-laucher

Testare una ISO in Ubuntu 12.04 con qemu

Grazie all’ emulatore QEMU risulta agevole, in ubuntu 12.04, testare  una distribuzione live per la quale sia diponibile una ISO.

Installare qemu con:

sudo apt-get install qemu

Qualora di disponga ad esempio della iso slax: slax-6.1.2.iso

La live potrà essere eseguita  con  :

kvm -cdrom slax-6.1.2.iso -m 512

Con -m viene specificata la RAM da dedicare.

Sel il PC presenta qualche GB di RAM ( ad esempio 4GB)  L’avvio di ISO con qemu risultarà senz’altro efficace.

Volendo è possibile anche indicare il disco immagine  IDE hard disk 0.
Per creare il disco immagine

qemu-img create  qemu_hda.img 2G

Quindi il comando per lanciare la ISO diventa

kvm  -cdrom slax-6.1.2.iso  -hda qemu_hda.img   -m 512

oppure

kvm  -cdrom slax-6.1.2.iso  -hda qemu_hda.img   -m 512 -boot d

Nota: Il formato di default per il disco immagine è raw volendo si può precisare anche il formato vmdk di vmware :    qemu-img create  -f vmdk qemu_hda.vmdk 2G