Ce howto concerne un système utilisant Debian/Wheezy & Xen 4.1 ou supérieur

Ancienne documentation pour Debian/Lenny & Xen 3.2.1

En résumé: grub permet de booter sur une image iso, si celle-ci est prévue pour être utilisé avec grub

Il est aussi possible de booter directement sur un noyau netboot prévu pour Xen.

Intérets

Cela permet à la machine virtuelle de pouvoir effectuer les opérations spécifiques à un disque dur (grub, partionnement du disque). Cela permet notamment de :

  • Configurer sans difficulté les partitions et/ou le chiffrement par le biais du debian-installer.

  • Configurer grub sans opération particulière.

  • Permettre les majs noyaux dans la machine virtuelle indépendament de l'hôte.

Mode opératoire

Créer la partition physique

Elle contiendra le disque dur de la vm. Cette partition doit contenir l'équivalent d'un disque dur (avec une table de partition etc.) ;

lvcreate data -n <name>-disk -L <size>

Récupérer l'iso d'installation de Debian

Récuprer l'image grub2-xen

Depuis jessie il est possible d'installer le paquet grub-xen-host. Ce paquet fournit une image de grub permettant soit de faire 'chainload', soit de booter sur la base du fichier de conf grub.cfg du domU.

Cette image se trouve par défaut là /usr/lib/grub-xen/grub-x86_64-xen.bin. Elle fonctionne aussi sur un dom0 wheezy...

Créer le fichier de configuration xen /etc/xen/.cfg

#
#  Memory size
#
memory      = '1024'

#
#  Disk device(s).
#
disk        = [
                'file:/scratch/debian-8.1.0-amd64-netinst.iso,xvdd:cdrom,r',
                'phy:/dev/data/<name>-disk,xvda,w'
            ]


#
#  Hostname
#
name        = '<name>'

#
#  Networking
#
vif         = [ 'bridge=br-vlan42,mac=00:16:3E:A2:23:11' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

#
# Boot
#
kernel = /usr/lib/grub-xen/grub-x86_64-xen.bin
extra = "(hd0,1)/grub/grub.cfg"

Alternative : installer sans ISO

Il peut arriver de ne pas pouvoir installer à partir d'une ISO Debian (lecteur CD virtuel non reconnu dans l'installeur, espace disque limité...)

Une alternative est alors d'utiliser directement le noyau netboot de Debian.

Pour ce faire, télécharger le noyau netboot pour Xen, ici pour Jessie :

ftp://ftp.fr.debian.org/debian/dists/jessie/main/installer-amd64/current/images/netboot/xen/vmlinuz
ftp://ftp.fr.debian.org/debian/dists/jessie/main/installer-amd64/current/images/netboot/xen/initrd.gz

La configuration Xen à utiliser est alors la suivante :

disk = [ 'phy:/dev/data/<name>-disk,xvda,w' ]
# ...
# Debian-installer
kernel = "/scratch/debian-8.2.0-amd64/vmlinuz"
ramdisk = "/scratch/debian-8.2.0-amd64/initrd.gz"
extra = "debian-installer/exit/always_halt=true -- console=hvc0"

Le reste de la procédure est inchangé.

Démarrer la vm avec :

xm create -c <name>.cfg

Le debian installer devrait démarrer.

Configuration réseau pour l'installation

Le debian-installer ne sait pas utiliser des IP en /32. Du coup, il faut "tricher" en faisant croire que c'est un /24, par exemple. Pour caravelle :

IP : 91.216.110.X/24
Gateway : 91.216.110.11
Résolveur DNS : 80.67.169.40

Une fois l'installation finie

Il faut désactiver le boot sur le debian-installer. Pour cela il faut supprimer les lignes suivantes :

                'file:/scratch/debian-8.1.0-amd64-netinst.iso,xvdd:cdrom,r',

En cas d'installation sans ISO, s'assurer de remettre pvgrub2 comme bootloader :

kernel = '/usr/lib/grub-xen/grub-x86_64-xen.bin'
extra = '(hd0,1)/grub/grub.cfg'

Élements importants

Choisir une adresse MAC

Chaque membre a :

  • un prefix alloué dans le ?plan du réseau.
  • un vlan attribué

 Accéder aux partitions d'un disque dur 'xvda'

Il est possible de créer une liste de device depuis une table de paritition contenu par un disque xvda avec l'outil kpartx.

  1. lister les partitions : kpartx -l /dev/data/<name>-disk

  2. créer la liste des device : kpartx -a /dev/data/<name>-disk

  3. supprimer la liste des device : kpartx -d /dev/data/<name>-disk

Démarrage automatique des VMs

Pour que la machine créée se lance au démarrage de xen (et donc au boot de la machine), penser à faire un lien symbolique du fichier de configuration dans le dossier /etc/xen/auto :

cd /etc/xen/auto
ln -s ../<name>.cfg