Creiamo una VM Ubuntu su un server Xen CentOS

In questi giorni ho avuto la necessità di installare una DomU Ubuntu avendo a disposizione un server Xen Dom0 su CentOS.

Non è una delle operazioni più immediate, pertanto vi spiego la procedura che ho utilizzato.

Innanzi tutto ho creato una immagine per la root del sistema operativo della dimensione di 4 GB usando il comando dd:

dd if=/dev/zero of=ubuntu.img bs=1024 count=4096

Quindi formattiamo l’immagine con il filesystem ext3:

mke2fs -j ubuntu.img

Ora scarichiamo il cd di installazione di Ubuntu: in questo caso utilizzo Ubuntu 10.10, ma vale per qualsiasi versione:

wget http://archive.ubuntu.com/ubuntu/dists/maverick/main/installer-amd64/current/images/netboot/mini.iso

Creiamo il file di configurazione di xen per eseguire il boot dall’immagine CD:

<strong>/etc/xen/ubuntu</strong>
name="ubuntu"
memory=512
vif=['bridge=xenbr0']
disk = ['file:/home/user/mini.iso,xvdc:cdrom,r', 'file:/home/user/ubuntu.img,xvda,w']
bootloader="/usr/bin/pygrub"
on_reboot='restart'
on_crash='restart'

e avviamo la nuova vm con

xm create /etc/xen/ubuntu -c

Ora seguiamo i passi di installazione standard, con due sole eccezioni:

  1. quando l’installer chiederà di partizionare il disco, prestate molta attenzione a NON ripartizionare il disco, dicendogli di montare l’unica partizione rilevata in / senza formattarla nuovamente.

  2. quando, al termine dell’installazione, chiederà di installare il bootloader grub, saltate questo passaggio

Al termine dell’installazione l’immagine si riavvierà, ma dato che non avete “espulso” il CD ripartirà il processo di installazione. Lanciate il seguente comando per spegnere la VM:

xm destroy ubuntu

Ora arriva la parte divertente: il comando pygrub di centos non è in grado di avviare correttamente le immagini di Ubuntu, pertanto utilizzeremo in vecchio e caro metodo di Xen andando a specificare quale kernel utilizzare.
Montiamo provvisoriamente l’immagine di Ubuntu:

mkdir /mnt/tmp
mount -o loop /home/user/ubuntu.img /tmp/mnt
cp /tmp/mnt/boot/vmlinuz* /tmp/mnt/boot/initrd* /home/user

Andiamo a modificare il file di configurazione di Xen per avviare correttamente la nostra immagine:

<strong>/etc/xen/ubuntu</strong>
name="ubuntu"
memory=512
vif=['bridge=xenbr0']
disk = ['file:/home/user/ubuntu.img,xvda,w']
kernel = "/srv/vms/kernel/ubuntu/vmlinuz-2.6.35-30-generic"
ramdisk = "/srv/vms/kernel/ubuntu/initrd.img-2.6.35-30-generic"
root = '/dev/sda'
on_reboot='restart'
on_crash='restart'

e avviamo nuovamente la vm con:

xm create /etc/xen/ubuntu -c