[*]Etape 1 : Création des images pour les VM
Nous verrons ici comment utiliser un FS virtuel avec des images disques, mais ceci est relativement facilement adaptable à des disques physiques voire du LVM (on va éviter nfs, parce que si le partage saute, ça pète tout)
Création d'un répertoire correspondant à la VM
mkdir /var/xen/vm_nameCréation des images vierges pour la VM
Là on se base sur une installation simple, un seul disque dur contenant les données et une partition de swap :
# dd if=/dev/zero of=fs-root bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 17.021 seconds, 63.1 MB/s # dd if=/dev/zero of=fs-swap bs=1M count=128 128+0 records in 128+0 records out 134217728 bytes (134 MB) copied, 2.28222 seconds, 58.8 MB/sCe qui nous créera un disque principal de 1Go et un de swap de 128Mo (adaptez selon vos besoins).
Création des FS pour la VM
# mkfs -t ext3 -L krom-root fs-root mke2fs 1.40-WIP (14-Nov-2006) fs-root is not a block special device. Proceed anyway? (y,n) y [...] Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 28 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # mkswap fs-swap Setting up swapspace version 1, size = 134213 kB no label, UUID=6b757bba-26ed-4668-99d3-186f24d39496Voilà, on a nos deux belles images disques de prêtes. On peut passer à la suite
[*]Etape 2 : Installation d'un système de base (avec debootsrap)
On monte l'image en loopback dans /mnt ou un autre répertoire
# mount -o loop fs-root /mntOn installe le système par debootstrap
# debootstrap --arch i386 etch /mnt/ http://localhost:9999/debian I: Retrieving Release I: Retrieving Packages I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Checking component main on http://localhost:9999/debian... I: Retrieving adduser I: Validating adduser [...] I: Base system installed successfully.Remplacez le serveur par un vrai serveur de packages debian (moi j'utilise apt-proxy, ça m'évite de télécharger 500 fois le même package), par exemple http://ftp.fr.debian.org/debian
Choisissez votre saveur debian aussi sarge, sid, etch, lenny, voire woody
L'architecture ne doit pas poser de problème, à priori ce sera la même que sur la machine hôte, encore qu'avec les 64bits vous ayiez le choix.
Une fois que la dernière ligne correspond, votre chroot est prêt, étape suivante.
[*]Etape 3 : Paramétrage de base de la VM
Là on peut soit bâcler, soit tout peaufiner suivant ce dont on a besoin.
Installer et configurer les locales
# aptitude install locales
# dpkg-reconfigure localesCeci permet d'enlever tous les messages en rapport avec un fallback sur la locale C par défaut.
Configurer le fstab
Il doit contenir quelque chose de la forme :
/etc/fstab
proc /proc proc defaults 0 0 /dev/hda1 / ext3 defaults,errors=remount-ro 0 1 /dev/hda2 none swap swap 0 0Configurer les interfaces réseau
On va laisser xen se démerder, néanmoins il nous faut ajouter le loopback :
Dans /etc/network/interfaces
auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0Configurer le fichier /etc/hosts
127.0.0.1 localhost.localdomain localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhostsDésactiver la libtls foireuse
Etape très importante, car sinon votre VM va tourner encore moins vite que dans un VMware !
mv /lib/tls /lib/tls.disabledLà tout est bon, on peut sortir du chroot, avec exit ou ctrl-d
Copier les librairies du kernel qui seraient nécessaires
cp -dpR /lib/modules/vos_libs_du_kernel_de_la_VM /mnt/lib/modules
Une bonne de chose de faite, on approche de la fin
[*]Etape 4 : La VM vue par l'hyperviseur
Maintenant il faut configurer la VM pour que l'hyperviseur sache la traiter
Créez un fichier du genre /etc/xen/vm_name
kernel = "/boot/vmlinuz-2.6.18-4-xen-vserver-686" ramdisk = "/boot/initrd.img-2.6.18-4-xen-vserver-686" memory = 1024 name = "vm_name" root = "/dev/hda1 ro" disk = [ 'file:/var/xen/vm_name/fs-root,hda1,w', 'file:/var/xen/vm_name/fs-swap,hda2,w' ] vif = ['ip=10.0.0.20' ]Adaptez les paramètres à vos besoin.
Mais attention ! En mode routed, l'ip de la VM doit être obligatoirement 10.0.0.0/16 du à une limitation de xen 3.0.3 codée en hard !
[*]Etape 5 : Faire démarrer la VM et jouer avec
Votre vm est prête et configurée, vous pouvez jouer avec maintenant.
Pour la lancer et se connecter directement à la console
xm create -c vm_namePour la tuer
xm destroy vm_namePour s'y attacher
xm console vm_namePour s'en détacher
Ctrl-]Sur un clavier azerty, ce sera [Ctrl] + [Alt gr] + [°]
Voilà, votre nouveau joujou est opérationnel.
Si vous voulez avoir des informations sur les VM xen lancées
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1822 4 r----- 6365.5 kradok 8 192 1 -b---- 283.9 krom 9 1024 1 -b---- 10.7