Table des matières

Xen , Debian et pvGrub

Mise en place de “pvGrub” et configuration des “DomU”.

~~READMORE~~

PvGrub ou PyGrub ?

A ne pas confondre avec “pyGrub” !

Par défaut, un DomU boot avec un kernel de l'environnement du Dom0, qu'il va rechercher dans “/lib/modules/…”.

Tout comme “pyGrub”, “pvGrub” permet de démarrer un DomU avec son propre noyau qui est recherché sur son propre disk…

PyGrub” fonctionne déjà bien, mais il utilise un script Python qui tourne dans l'environnement du Dom0: Pour diverses raisons, notamment de sécurité, on va préférer “pvGrub”.

pvGrub” va démarrer dans un environnement virtualisé, comme DomU, et puis faire son travail…
La nuance est importante car sur si le disk du DomU vient à être corrompu par un vilain, il n'affectera pas le Dom0

kernel pvGrub

Xen sous Debian permet d'utiliser “pvGrub”, mais sans fournir le “kernel” nécessaire au boot !

:!: UPDATE :!: Depuis Debian Jessie, Grub2 fournit les noyaux de boot suivants:
/usr/lib/grub-xen/grub-i386-xen.bin
/usr/lib/grub-xen/grub-x86_64-xen.bin

Il faut le rechercher sur d'autres systèmes, et puis le copier dans le giron de notre Xen.

Donc:

On va récuperer un “rpm” d'un autre Linux… :

# cd /usr/local/src
# mkdir xen
# cd xen
# wget -c ftp://ftp.icm.edu.pl/vol/rzm5/linux-ibiblio/distributions/mageia/distrib/cauldron/x86_64/media/core/release/xen-4.5.0-1.mga5.x86_64.rpm

On extrait le contenu (du rpm!) :

# rpm2cpio xen-4.5.0-1.mga5.x86_64.rpm | cpio -idm

On recherche les noyaux nécessaires au boot:

# find -name 'pv-grub*'
./usr/libexec/xen/boot/pv-grub-x86_64.gz
./usr/libexec/xen/boot/pv-grub-x86_32.gz

On les déplace dans l'environnement de notre Xen:

# mv ./usr/libexec/xen/boot/pv-grub-* /usr/lib/xen-4.4/boot/
:!: Adapter le chemin du répertoire “xen” selon votre version…

DomU

Dans la configuration du DomU il suffit d'apporter les modifications suivantes:

kernel      = '/usr/lib/xen-4.4/boot/pv-grub-x86_64.gz'
extra       = '(hd0)/boot/grub/menu.lst'

#root        = '/dev/xvda1 ro'
:!: Il faut sélectionner le noyau en fonction de l'architecture 32 bit ou 64 bit du DomU.
Ici, c'est 64 bit.
:!: il ne faut pas “root=” (ou commentez-le comme ci-dessus), sinon “extra=” est ignoré et vous atterrirez dans le “grubdom shell”.

Sur le disk du DomU, un fichier “menu.lst” doit être présent dans “/boot/grub/” .
Pour exemple, il pourrait contenir:

default         0
timeout         5

title           Debian GNU/Linux 7.0 - amd64
root            (hd0)
kernel          /boot/vmlinuz-3.2.0-4-amd64 root=/dev/xvda1 ro 
initrd          /boot/initrd.img-3.2.0-4-amd64

title           Debian GNU/Linux 7.0 - amd64 (Single-User)
root            (hd0)
kernel          /boot/vmlinuz-3.2.0-4-amd64 root=/dev/xvda1 ro single
initrd          /boot/initrd.img-3.2.0-4-amd64
:!:(hd0)” (et non pas “(hd0,0)” parce que ce DomU utilise le disk entier comme partition unique.

Sources

Tips: grubdom

Si vous tombez sur le “grubdom”, c'est qu'un truc déconne. (par exemple, vous avez laissé “root=…” …).

On peut taper la commande suivante pour démarrer… :

grubdom> configfile (hd0)/boot/grub/menu.lst