Objectifs
Linux est installé, nous préparons les sources à compiler et l'environnement.Options qemu
Rapidement parler des options qemu que j'utilise:-enable-kvm : comme mon PC est un x86_64 et que je n'émule pas sous qemu une autre architecture, j'utilise kvm pour la virtualisation matérielle,
-cpu host : j'indique ici à qemu d'utiliser directement le type de cpu de mon PC,
-smp 4 : je permets à qemu d'utiliser 4 coeurs,
-m 2048 : je lui donne 2Go de mémoire,
-hda xxx : le disque 1 sera xxx
-hdb yyy : le disque 2 sera yyy
Backing file
Maintenant que l'installation est faite de la Debian 7.8, je vais veiller à ne pas l'abîmer et pour cela rien de plus facile que d'utiliser un snapshot disque.
L'idée est de créer un nouveau disque qui est l'image du 1er mais qui ne contiendra que les modifications du travail qui va suivre.
Ainsi, si pb, le 1er disque est intact et il suffit de refaire une image de travail à partir de lui pour reprendre proprement.
Pour créer le backing, sur mon PC hôte:
$ qemu-img create -f qcow2 -b xendeb.qcow xendeb2.qcow
xendeb2.qcow devient notre second disque sur lequel nous allons poursuivre les mises à jour.
DiskB
Autre chose, je crée, sur mon PC hôte, un disqueB qui va me permettre de faciliter les transferts entre mon PC et linux sous qemu.
Je pourrai monter ce disque simplement dans un répertoire local sur mon PC et sous qemu.
Ok, je pouvais faire cela avec le disque qcow, mais je trouve pénible les montages en nbd même si c'est génial et bien pratique dans d'autres circonstances. Et oui aussi, je peux faire cela par réseau lorsque celui-ci sera configuré. A voir suivant mon humeur... :-)
Création du disque B:
$ truncate diskB.raw --size 32G
Je le formate en ext2:
$ sudo mkfs.ext2 diskB.raw
Et je le monte dans un répertoire mnt local (que je crée si nécessaire):
$ mkdir mnt
$ sudo mount diskB.raw mnt
Par la suite j’appellerai Bmnt le répertoire où je monte diskB.
Attention, il me faudra monter/démonter régulièrement ce disque afin de l'utiliser une fois dans mon environnement PC (hôte), une fois sous qemu.
Script lancement qemu
Comme je n'ai pas envie de multiplier les commandes pour démarrer mon environnement qemu, j'écris un script shell go.sh:#!/bin/bash
# I would like to test XEN Ballooning
#
#
DISKNAME=xendeb.qcow
DISKB=diskB.raw
WORKDISKNAME=xendeb2.qcow
RMWORK="TRUE"
# $1 $... - the message string
die()
{
retcode=-1
printf >&2 "%s\n" "$@"
exit $retcode
}
while [ "$1" != "" ]; do
if [ "$1" == "-no-rm" ]; then
RMWORK="FALSE"
else
die "Unknown option $1. Only valid is -no-rm";
fi
shift
done
# working disk deletion
if [ "$WORKDISKNAME" == "" ]; then
echo "No Work Disk used !!!";
else
echo "Work Disk used !!!";
if [ "$RMWORK" == "TRUE" -a -f $WORKDISKNAME ]; then
echo "it is recreated"
rm $WORKDISKNAME || die "$WORKDISKNAME deletion failed"
else
echo "it is not recreated"
fi
fi
# Go go go
if [ "$WORKDISKNAME" != "" ]; then
if [ ! -f $WORKDISKNAME ]; then
qemu-img create -f qcow2 -b $DISKNAME $WORKDISKNAME
fi
else
WORKDISKNAME=$DISKNAME
fi
qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -m 2048 -hda $WORKDISKNAME -hdb $DISKB
En deux mots, ce script va démarrer qemu avec un disque A (xendeb2.qcow) qui sera le disque de travail et un disque B (diskB.raw).
xendeb2.qcow est effacé à chaque démarrage (si l'option -no-rm n'est pas utilisée) et recréé comme backing file de xendeb.qcow. Nous repartons donc à chaque démarrage sur une image propre.
Tout d'abord, quelle est la version du noyau que j'ai installé via le CD Debian ?
Pour cela je regarde dans le fichier /boot/config-3.2.0-4-amd64 sous qemu. Donc je lance la machine virtuelle qemu en utilisant mon script:
$ go.sh
Une fois qemu démarré et le linux booté, je me loggue comme root et un simple head me permet d'afficher la 1ère ligne du fichier où se trouve la version exacte du noyau:
$ head /boot/config-3.2.0-4-amd64
Je lis sur la troisième ligne qu'il s'agit d'un 3.2.73. Je vais donc le chercher dans les archives du noyau:
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.73.tar.xz
Et j'arrête ma machine qemu:
$ halt
Sur mon PC hôte, je télécharge donc les sources d'un kernel linux. Et je le décompresse dans Bmnt:
$ cd Bmnt
$ sudo tar xJf ~/Téléchargements/linux-3.2.73.tar.xz
xendeb2.qcow est effacé à chaque démarrage (si l'option -no-rm n'est pas utilisée) et recréé comme backing file de xendeb.qcow. Nous repartons donc à chaque démarrage sur une image propre.
Linux Vanilla
Je vais utiliser le diskB pour y placer les sources linux et xen que je vais utiliser pour les générations.Tout d'abord, quelle est la version du noyau que j'ai installé via le CD Debian ?
Pour cela je regarde dans le fichier /boot/config-3.2.0-4-amd64 sous qemu. Donc je lance la machine virtuelle qemu en utilisant mon script:
$ go.sh
Une fois qemu démarré et le linux booté, je me loggue comme root et un simple head me permet d'afficher la 1ère ligne du fichier où se trouve la version exacte du noyau:
$ head /boot/config-3.2.0-4-amd64
Je lis sur la troisième ligne qu'il s'agit d'un 3.2.73. Je vais donc le chercher dans les archives du noyau:
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.73.tar.xz
Et j'arrête ma machine qemu:
$ halt
Sur mon PC hôte, je télécharge donc les sources d'un kernel linux. Et je le décompresse dans Bmnt:
$ cd Bmnt
$ sudo tar xJf ~/Téléchargements/linux-3.2.73.tar.xz
Source Xen
Pendant que j'y suis, je vais aussi y placer les sources de Xen 4.1.4:
http://www.xenproject.org/downloads/xen-archives/supported-xen-41-series/xen-414.html
Une fois téléchargées sur le site précédent, je les décompresse dans Bmnt:
$sudo tar xzf ~/Téléchargements/xen-4.1.4.tar.gz
Une fois téléchargées sur le site précédent, je les décompresse dans Bmnt:
$sudo tar xzf ~/Téléchargements/xen-4.1.4.tar.gz
Voilà pour cette partie deux. Pour la suite nous allons passer sous qemu pour compiler tout ce petit monde...
Aucun commentaire:
Enregistrer un commentaire