Xen n'étant plus supporté par Ubuntu, mes serveurs Xen sont donc installés sous Debian Lenny Amd64 (le choix d'une installation 64 bits permettant de déployer des vm 32 ou 64 bits).
Pour rappel sur ma méthode d'installation habituelle : hyperviseur xen sur une Debian Lenny
Cependant on rencontre deux problèmes quand on veut installer une Ubuntu 10.04 :
- la version de debootstrap installée par la distribution Debian Lenny ne supporte pas la Ubuntu Lucid
- Ubuntu Lucid ne peut pas démarrer avec le noyau fourni pour les machines paravirtualisée
Il va donc falloir installer la distribution avec un boot pygrub.
Installer debootstrap
On va avoir besoins d'installer la version de debootstrap fournie par la version d'Ubuntu 10.04. Plusieurs méthodes sont possibles dont le téléchargement du fichier deb. On peut aussi jouer avec apt :
# vi /etc/apt/sources.list.d/tmp.list
deb http://fr.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://fr.archive.ubuntu.com/ubuntu/ lucid main restricted
# apt-get update
# apt-get install -y --force-yes debootstrap
# rm /etc/apt/sources.list.d/tmp.list
# apt-get update
On met ensuite en place les scripts pour les xen-tools :
# cd /usr/lib/xen-tools/
# ln -s edgy.d/ lucid.d
Configuration de xen-tools
J'utilise plusieurs fichiers de configuration de xen-tools, j'en crée donc un nouveau comme ceci :
# vi /etc/xen-tools/xen-tools_ubuntu_1004_amd64.conf
install-method = debootstrap
size = 20Gb # Disk image size.
memory = 1024Mb # Memory size
swap = 1024Mb # Swap size
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = lucid # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.
gateway = votre_passerelle
netmask = 255.255.255.0
pygrub = /usr/bin/pygrub
passwd = 1
arch=amd64
mirror_lucid=http://fr.archive.ubuntu.com/ubuntu
ext3_options = noatime,nodiratime,errors=remount-ro
serial_device = hvc0
disk_device = xvda
output = /etc/xen/confs
extension = .cfg
Pour pygrub faire un lien :
# ln -s /usr/lib/xen-3.2-1/bin/pygrub /usr/bin/
Rôle pygrub
Pour finir il faut mettre en place un rôle xen-tools spécifique pour mettre en place un noyau spécifique :
# wget http://wejn.org/stuff/pygrub-role
# mv pygrub-role /etc/xen-tools/role.d/pygrub
# chmod a+x /etc/xen-tools/role.d/pygrub
# sed -i 's/linux-image-2.6-xen-amd64/linux-image-ec2/g'
/etc/xen-tools/role.d/pygrub
Déploiement
# xen-create-image --hostname=HOSTNAME --ip=IP_ADDRESS --config=/etc/xen-tools/xen-tools_ubuntu_
1004_amd64.conf --role=udev,pygrub