Gilbert Cao
E-mail: gilbert.cao@rmrf.it
Tags : NetBSD
Xen est un logiciel libre destiné à faire de la virtualisation de serveurs. Comme la plupart des logiciels de virtualisation (VMWare, Virtual PC, Virtual Box, QEMU ... etc), il nécessite un système d'exploitation hôte et il permet de faire tourner plusieurs systèmes d'exploitation invité, chacun d'eux étant isolé les uns des autres.
Dans le cas de Xen, j'ai choisi d'utiliser NetBSD (La version 5.1, à l'heure où j'écris ces lignes), et avec l'extension PAE pour Xen. Il est aussi possible d'utiliser NetBSD sur une architecture 64 bits (amd64). Avec l'architecture amd64, l'extension PAE n'aura aucun sens mais la procédure suivante restera globalement la même.
$ uname -a
NetBSD pampa 5.1 NetBSD 5.1 (XEN3PAE_DOM0) #0: Sun Nov 7 15:07:49 UTC 2010 builds@b6.netbsd.org:/home/builds/ab/netbsd-5-1-RELEASE/i386/201011061943Z-obj/home/builds/ab/netbsd-5-1-RELEASE/src/sys/arch/i386/compile/XEN3PAE_DOM0 i386
Tout d'abord, il faut commencer par faire une installation par défaut de NetBSD. Vous trouverez toutes les informations nécessaires sur ce lien.
Ensuite, il peut être utile de configurer la carte réseau et d'activer OpenSSH. Pour se faire, éditer le fichier /etc/rc.conf en ajoutant les lignes suivantes :
# Local system clock
rtclocaltime=YES
# Network configuration
ifconfig_re0="dhcp"
sshd=YES
Bien entendu, adapter la variable ifconfig_re0, en fonction du pilote de votre carte réseau. Dans mon cas, il s'agit de re0. La variable rtclocaltime=YES permet de positionner un offset sur l'horloge système, afin de l'ajuster en fonction du fuseau horaire de la machine.
Vous trouverez toutes les informations sur ce lien
Dans mon cas, j'ai utilisé la commande suivante, me permettant de récupérer la branch stable de 2011 :
cd /usr && cvs -q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r pkgsrc-2011Q1 -P pkgsrc
Installer les 2 packages.
cd /usr/pkgsrc/sysutils/xentools3 && make package
cd /usr/pkgsrc/sysutils/xenkernel3 && make package
Ceci installera les utilitaires et le kernel Xen pour NetBSD.
Copier le fichier du kernel Xen à la racine du système
cp -p /usr/pkg/xen3-kernel/xen-PAE.gz /
Copier les scripts RC permettant de démarrer certains daemon de Xen
cp -p /usr/pkg/share/examples/rc.d/xen* /etc/rc.d/
Puis, ajouter les lignes suivantes dans votre fichier /etc/rc.conf
# Xen
xend=YES
xenbackendd=YES
xendomains=YES
Créer une interface réseau de type "bridge". Pour ceci, créer le fichier /etc/ifconfig.bridge0 avec les lignes suivantes :
create
!brconfig $int add re0 up
Bien entendu, adapter en fonction du pilote de votre carte réseau.
Télécharger les fichiers suivants :
cd /
ftp ftp://ftp.fr.netbsd.org/pub/NetBSD/NetBSD-5.1/i386/binary/kernel/netbsd-INSTALL_XEN3PAE_DOMU.gz
ftp ftp://ftp.fr.netbsd.org/pub/NetBSD/NetBSD-5.1/i386/binary/kernel/netbsd-XEN3PAE_DOM0.gz
ftp ftp://ftp.fr.netbsd.org/pub/NetBSD/NetBSD-5.1/i386/binary/kernel/netbsd-XEN3PAE_DOMU.gz
La prochaine étape est de démarrer le kernel Xen pour NetBSD avec son module netbsd-XEN3PAE_DOM0.gz. NetBSD sera ainsi le premier domaine (dans le jargon Xen), qu'on appelle le dom0.
Nous allons donc ajouter une nouvelle entrée dans le bootloader NetBSD.
Editer le fichier /boot.cfg et ajouter la ligne en début de fichier :
menu=Boot NetBSD/XEN-PAE:load /netbsd-XEN3PAE_DOM0.gz console=pc;multiboot /xen-PAE.gz dom0_mem=128M
Votre fichier boot.cfg ressemblera à ceci
menu=Boot NetBSD/XEN-PAE:load /netbsd-XEN3PAE_DOM0.gz console=pc;multiboot /xen-PAE.gz dom0_mem=128M
menu=Boot normally:boot netbsd
menu=Boot single user:boot netbsd -s
menu=Disable ACPI:boot netbsd -2
menu=Disable ACPI and SMP:boot netbsd -12
menu=Drop to boot prompt:prompt
default=1
timeout=5
En cas de souci, vous pourrez toujours démarrer sur le kernel générique de NetBSD (2ème ligne).
Il ne vous reste plus qu'à redémarrer et choisir la 1ère ligne durant le "prompt" du bootloader.
Sinon, dans le principe, c'est le kernel xen.gz qui est démarré avec le module netbsd-XEN3PAE_DOM0.gz (NetBSD en tant que dom0). Afin de réserver de la mémoire pour les systèmes d'exploitation, j'ai arbitrairement allouer (seulement) 128 Mo de RAM pour le dom0.
Par la suite, j'expliquerai comment installer des serveurs virtuels (des domU, dans le jargon Xen). La procédure est différente selon le système d'exploitation choisi en tant qu'invité (NetBSD, Debian Linux, FreeBSD ... etc).
Par exemple, les fichiers netbsd-INSTALL_XEN3PAE_DOMU.gz et netbsd-XEN3PAE_DOMU.gz sont des kernel de NetBSD en tant que domU (système d'exploitation invité). Le premier est uniquement utilisé durant une installation par défaut de NetBSD en tant que domU.