Académique Documents
Professionnel Documents
Culture Documents
sources
1 Introduction
Le but de ce document est de guider les utilisateurs tout au long du processus d’installation du
logiciel Xen Project à partir des sources (soit à partir des versions de l’archive tar, soit à partir d’un
référentiel de code source).
Ce document a été rédigé pour la version 4.2 du projet Xen, mais nous tenterons de souligner les
différences par rapport aux versions précédentes, le cas échéant.
On suppose qu’il est familier avec le concept général de construction de logiciels et avec
l’utilisation de votre gestionnaire de paquets de distributions pour installer des outils de compilation
pertinents, etc.
4.2 Git
Les dépôts de code source sont hébergés à l’aide du système de contrôle de version Git sur
xenbits.
Chaque version stable a sa propre branche stable-X.Y (par exemple stable-4.2 sur la page de
résumé de Xen.git). Le code destiné à la prochaine version stable est ajouté à la branche staging-
X.Y (par exemple, staging-4.2 sur la page de résumé de Xen.git), et après avoir passé les tests
automatisés, il sera poussé vers stable-X.Y pour la prochaine version. Les versions ponctuelles sont
marquées dans l’arborescence principale avec RELEASE-X. Y.Z (par exemple, RELEASE-4.2.2 sur
la page de résumé de Xen.git). Les résultats des tests automatisés sont disponibles sur la liste de
diffusion xen-devel.
Xen Project Repositories contient des informations sur les différents dépôts pour les branches
stable et development.
Pour cloner la source, installez d’abord Git à l’aide du gestionnaire de paquets de votre
distribution. Exécutez ensuite la commande suivante :
$ git clone URL
Où URL est l’URL du référentiel que vous souhaitez cloner. Dans notre cas, nous devrions
utiliser :
$ git clone git://xenbits.xen.org/xen.git
Comme la tête par défaut dans xen.git est master, votre dépôt local aura également une branche
appelée master pointant vers la branche en amont. Si vous souhaitez utiliser d’autres HEAD (par
exemple, le staging), vous pouvez :
$ cd xen; git checkout -b staging origin/staging
Vous pouvez également vérifier toutes les balises, branches comme vous le souhaitez.
4.3 Inconstant
Veuillez noter que XenProject.org est passé à l’utilisation de Git. La section suivante est
obsolète. Nous maintenons des dépôts Mercurial reflétant ceux de Git, nous conservons donc
la section suivante pour référence.
Les dépôts de code source de Xen Project sont hébergés à l’aide du système de contrôle de
version Mercurial sur xenbits.
Chaque version stable a sa propre branche xen-X.Y-testing.hg (par exemple xen-4.2-testing.hg)
où le code destiné à la prochaine version stable est ajouté. La branche de développement du projet
Xen est connue sous le nom de xen-unstable et possède son propre dépôt xen-unstable.hg.
Chaque branche stable et de développement est disponible sous deux formes, soit testée (la
branche principale), soit non testée (la branche staging). Lorsque des validations sont effectuées
dans une arborescence de projet Xen, elles sont d’abord ajoutées à la branche intermédiaire et ne
sont propagées à la branche principale qu’une fois les tests automatisés passés. Par exemple, tous
les commits de la branche de développement du projet Xen apparaîtront initialement dans
staging/xen-unstable.hg, puis se propageront dans xen-unstable.hg une fois les tests automatisés
terminés. Les résultats des tests automatisés sont postés sur la liste de diffusion xen-devel.
Xen Project Repositories contient des informations sur les différents dépôts pour les branches
stable et development.
Pour cloner la source, installez d’abord l’outil mercurial à l’aide du gestionnaire de paquets de
votre distribution. Exécutez ensuite la commande suivante :
$ hg clone URL
Où URL est l’URL du référentiel que vous souhaitez cloner. Par exemple, pour cloner le dernier
arbre Xen-Unstable testé :
$ hg clone http://xenbits.xen.org/hg/xen-unstable.hg
Ou pour cloner l’arbre xen-instable (par exemple, pas encore testé) :
$ hg clone http://xenbits.xen.org/hg/staging/xen-unstable.hg
Vous voudrez peut-être obtenir un ensemble de modifications spécifique (révision), par exemple
lorsque vous essayez de répliquer la version de quelqu’un d’autre, ou lorsque vous traitez d’autres
correctifs que vous devez appliquer par la suite. Vous pouvez le faire avec l’option -r. Par exemple,
pour obtenir l’ensemble de modifications 25364 :
$ hg clone -r 25364 http://xenbits.xen.org/hg/xen-unstable.hg
5 Démarrage rapide
Le fichier README au niveau supérieur de l’arborescence du code source du projet Xen
contient un guide de démarrage rapide pour la création du logiciel. Cela fournit un aperçu rapide du
processus et des exigences pour la création du logiciel Xen Project et contiendra généralement les
informations les plus récentes spécifiques à l’arborescence source particulière que vous consultez.
Après avoir obtenu le code source du projet Xen, c’est le premier document que vous devriez lire.
6.3 Configurer
À partir de Xen Project 4.2, le logiciel utilise l’outil autoconf couramment utilisé pour fournir
une configurabilité au moment de la compilation de la pile d’outils. Cela permet un certain contrôle
des fonctionnalités intégrées à Xen Project, ainsi que la vérification de l’intégrité au moment de la
compilation. Pour configurer Xen Project, il suffit d’exécuter le script de configuration fourni :
$ ./configure
Pour voir les différentes options, exécutez le script configure avec --help, par exemple :
$ ./configure --help
[...]
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-githttp Download GIT repositories via HTTP (default is
DISABLED)
Cette étape n’est requise qu’à partir de Xen Project 4.2. Avant Xen Project 4.2, ces options
pouvaient être configurées en passant une variable sur la ligne de commande make lors de la
compilation et de l’installation ou en écrivant la variable dans un fichier nommé .config au niveau
supérieur de l’arborescence des sources.
6.3.1 Utilisez http:// plutôt que git:// pour cloner des référentiels
supplémentaires
Lors de la création du logiciel à partir de Mercurial, le système de compilation clonera
automatiquement plusieurs référentiels supplémentaires à partir du réseau. Certains de ces dépôts
utilisent le système de contrôle de version qui utilise son propre protocole sur un port spécifique.
Parfois, cela provoque des problèmes dus au blocage du port git par les pare-feu, etc. Cela peut être
contourné en demandant au système de compilation Xen de cloner de tels dépôts à l’aide d’un
protocole HTTP moins efficace :
$ ./configure --enable-githttp
Avant Xen Project 4.2, cela pouvait être réalisé en écrivant GIT_HTTP=y dans votre .config :
$ cat .config
GIT_HTTP = y
Pour construire tous les composants (hyperviseur, outils, documents, stubdomains, etc.), vous
pouvez utiliser la cible dist.
$ make dist
Si vous souhaitez simplement (re)construire un seul composant, vous pouvez utiliser la
cible dist-COMPONENT appropriée :
$ make dist-xen
$ make dist-tools
$ make dist-docs
$ ... etc ...
Si vous voulez reconstruire un arbre comme s’il s’agissait d’un nouveau test, vous pouvez
utiliser la cible mondiale. C’est effectivement la même chose que propre et le dist
$ make world
Toutes les cibles ci-dessus construisent et installent le composant approprié dans le sous-
répertoire dist, mais ne l’installent pas réellement sur le système.
Pour l’installer sur la machine locale, il suffit d’appeler la cible d’installation (en tant que root) :
# make install
Comme pour dist, vous pouvez également installer des composants individuels à l’aide de la
cible install-COMPONENT appropriée :
# make install-xen
# make install-tools
# make install-docs
# ... etc ...
Si vous souhaitez l’installer sur une machine distante, vous pouvez simplement copier le
répertoire dist et TBD
Une meilleure option est de faire un « package-ball » -- un paquet qui est l’équivalent d’une
archive sans vérification ni configuration des dépendances. Il existe des cibles pour l’un ou l’autre
des systèmes basés sur deb :
# make debball
ou des systèmes basés sur RPM :
# make rpmball
Les paquets sont placés dans le répertoire dist/.
L’installation du package résultant est fonctionnellement équivalente à la cible make install ci-
dessus, mais comme les fichiers sont suivis par le gestionnaire de packages, il est plus facile de les
supprimer ou de les mettre à jour.
Après l’installation (soit via make install, soit via un packageballl), vous reconstruisez votre
cache de l’éditeur de liens dynamique en exécutant :
# /sbin/ldconfig
Pour obtenir plus d’informations sur les cibles disponibles, utilisez la cible d’aide :
$ make help
6.6 Dépannage
Si SeaBIOS ne parvient pas à se compiler lors de la génération de Xen 4.2 sur un système dont
les paramètres régionaux ne sont pas anglais, essayez de définir LC_ALL sur en_US. UTF-8 avant
d’appeler make :
# export LC_ALL=en_US.UTF-8
# make world
6.7 Noyaux
Le noyau Linux prend désormais en charge différents hyperviseurs avec un seul noyau. Il n’est
pas non plus nécessaire qu’un noyau de domaine 0 (ou invité) corresponde à votre hyperviseur,
vous êtes donc libre de choisir le noyau qui correspond le mieux à vos besoins (par exemple, de
nombreuses distributions fournissent un noyau compatible avec Xen Project, ce qui est un chemin
rapide et facile). Dom0 Kernels for Xen contient des conseils à ce sujet.
6.7.1 Compilation de la dernière prise en charge du noyau Linux
Si vous compilez Linux à partir des sources pour dom0 ou un invité, vous pouvez maintenant
activer le support Xen pour les deux via un simple assistant de configuration du noyau, ceci a été
ajouté à partir de la v4.2 :
make xenconfig
Cela vous permet de construire un noyau qui peut prendre en charge xen dom0 ou xen invités sur
i386, x86-64 et arm64.
6.8.2 systemd
Obligatoire:
systemctl enable xen-qemu-dom0-disk-backend.service
systemctl enable xen-init-dom0.service
systemctl enable xenconsoled.service
Optionnel:
systemctl enable xendomains.service
systemctl enable xen-watchdog.service
systemctl enable xendriverdomain.service
Après avoir effectué ces modifications, redémarrez le système.
7 Configuration de l’hôte
Une fois le code du projet Xen installé, il reste encore une configuration au niveau de l’hôte
requise.