Mise en place de “pvGrub
” et configuration des “DomU
”.
~~READMORE~~
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
…
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… |
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. |
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