Pour contourner les difficultés d'installation d'un domaine U Linux depuis NetBSD, l'installation d'un système Linux est nécessaire : les média d'installation de Linux n'ont pas d'équivalent au noyau spécifique NetBSD-install-XENU, permettant de créer directement une machine virtuelle.
L'installation de Linux est une occasion pour une deuxième tentative avec Xen : Xen utilisant Linux comme OS du domaine 0. La distribution de Linux retenue est Debian / Sarge (La couche d'émulation Linux de NetBSD est basée sur Suse - pas de mise en commun).
La première phase est l'installation d'un Linux "standard", "natif". La distribution retenue est Sarge, soit Debian 3.1 (distribution relativement récente, et facilement adaptable pour s'installer dans des petits espaces).
Les documents de référence pour l'installation de Debian sont http://www.debian.org/releases/stable/i386/install et http://www.debian.org/releases/stable/i386/index.html.en.
L'installation est réalisée depuis des fichiers d'installation chargés avec grub (depuis la partition NetBSD) pour éviter de passer par une disquette ou un CD (voir Booting from Linux Using LILO or GRUB). L'installation est faite "par réseau" en chargeant tous les binaires depuis un serveur d'installation (en France, sur le site FTP de Free).
Il faut donc récupérer :
depuis :
ftp://ftp.free.fr/pub/Distributions_Linux/debian/dists/sarge/main/installer-i386/current/images/
et les stocker dans la partition NetBSD dans le
répertoire
/debian.
Le fichier de configuration de grub "côté NetBSD" est modifié en ajoutant l'option :
title Debian Installer
kernel (hd0,3,a)/debian/linux root=/dev/ram0
ramdisk_size=12000
initrd (hd0,3,a)/debian/initrd.gz
L'installation est déclenchée en
redémarrant le PC et en choisissant l'option "Debian
Installer
" dans le menu de grub.
Debian est installé sur le deuxième disque dur du PC (wd1/hdb, 8Go).
Une partition étendue est allouée à Debian (hdb1 de 6Go sur le disque hdb de 8Go). Cette partition étendue est découpée en partitions logiques pour pouvoir avoir un "grand" nombre de vraies partitions : deux partitions étendues par machine virtuelle (swap + fichiers).
Les partitions logiques sont aussi utilisables depuis NetBSD/Xen0, accessibles en lecture et écriture (elles sont aussi visibles depuis FreeBSD).
Le domaine 0 Debian est installé dans /dev/hdb5, partition de 2Go (une installation basique sans X-Windows occupe moins de 400Mo, le reste de l'espace pourra être utilisé pour stocker une ou plusieurs images disque). Trois partitions supplémentaires sont découpées pour des domaines U. Trois partitions pourront être utilisées comme espace de swap.
Partition | Taille | Début | Type |
hdb5 | 2000 Mo | 0 | Linux Ext2 |
hdb6 | 200 Mo | 2000 Mo | swap |
hdb7 | 1200 Mo | 2200 Mo | Linux Ext2 |
hdb8 | 200 Mo | 3400 Mo | swap |
hdb9 | 1200 Mo | 3600 Mo | Linux Ext2 |
hdb10 | 200 Mo | 4800 Mo | swap |
hdb11 | 1200 Mo | 5000 Mo | Linux Ext2 |
Synthèse du partitionnement dans les 6 Go
Le noyau installé pour Sarge est en versions 2.4.27 (2.6.8 en option, non retenu).
NB : je n'ai pas trouvé comment démarrer l'installation sur une ligne série (il faut donc trouver un clavier et un écran).
L'installation est basique (la seule option sélectionnée est "serveur de courrier" - pas de sélection d'environnement graphique), pour avoir une occupation modérée de la place disque.
Après l'installation, Debian est configuré pour démarrer avec une console série (voir http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/ et cette note).
Les paramètres de configuration du réseau sont identiques à ceux utilisés pour NetBSD/Dom0 (voir dans le paragraphe précédent).
A la différence de NetBSD, pour lequel les packages ont été recompilés en local sur le Domaine 0, les packages sont installés à partir de versions précompilées téléchargées à partir du mirroir français (chez Free).
Configuration dans de la source des packages ".deb" : dans /etc/apt/sources.list
ajout de packages debian (avec la commande apt-get
)
:
grub
bridge-utils
iproute
python
python-twisted
gcc
libcurl2
libcurl2-dev
zlib1g
zlib1g-dev
grub a déjà été installé avec NetBSD, et va être utilisé aussi par Debian/Linux pour charger Xen. Le fichier de configuration de grub installé avec NetBSD, dans une partition BSD, n'est pas modifiable depuis Debian (les modifications dans une partition ufs depuis Linux ne sont pas recommandées - un howto).
partage des partitions UFS BSD :
debian-dom0: {1} modprobe ufs
# pour une partition netbsd dans /dev/hda4 :
debian-dom0: {2} mount -r -t ufs -o ufstype=44bsd /dev/hda5 /mnt
debian-dom0: {3} mount
/dev/hdb5 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/hda5 on /mnt type ufs (ro,ufstype=44bsd)
# pour une partition freebsd dans /dev/hdb4 :
debian-dom0: {4} mount -r -t ufs -o ufstype=44bsd
/dev/hdb9 /mnt
Il faut donc réinstaller grub depuis Debian/Linux, pour pouvoir changer les options de grub.
Pour ne pas perdre l'accès à NetBSD, il faut transférer les options relatives à NetBSD dans le fichier de configuration de grub "côté Debian". De même que dans le fichier de configuration de grub "côté NetBSD", on avait ajouté une option pour installer Debian, on ajoute ici une option pour réinstaller NetBSD.
Le fichier de configuration résultant est ici.
NB : l'installation de grub "côté Debian" écrase et remplace la version installée avec NetBSD. Le retour à la version de NetBSD se fait en deux étapes :
Une version précompilée de Xen est
téléchargée à partir de :
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-2.0.7-install-x86_32.tgz
Cette version comprend des des versions précompilées des noyaux Linux 2.4 (2.4.30) et 2.6 2.6.11.12), pour domaine 0 et domaine U (4 combinaisons). Les outils "xentools" font aussi partie du package.
L'installation se fait avec un shell script : xen-2.0-install/install.sh
qui copie dans les répertoires "qui vont bien" xen
lui-même, les noyaux Linux et les outils de gestion (xm
et consorts).
mise à jour du menu de grub : pour ajouter l'option de démarrer Linux/Xen0 XXX fichier de config
NB : installation des logiciels en-dehors du packaging Debian (d'où problèmes futurs sur les dépendances à vérifier en cas de mise à jour)
(reboot vers 2.4.30/Xen0 - XXX pourquoi pas 2.6 ? pour rester cohérent avec Sarge ?)
NB : comme avec NetBSD/Xen0, les paramètres
réseau de Debian/Xen0 sont les mêmes que ceux
utilisés pour Debian "natif" (dans le cas de Debian, l'ajout
du package iproute
est
nécessaire pour le script réseau mis en
œuvre
pour le routage IP des paquets en provenance des Domaines U).
démarrage de xend :
debian-dom0: {5} /etc/init.d/xend start
et pour un démarrage automatique :
debian-dom0: {6} update-rc.d xend defaults
Vérification du démarrage de xend avec
la commande xm
:
debian-dom0: {7} xm info
system
: Linux
host
: dom0-Linux
release
: 2.4.30-xen0
version
: #1 Thu Aug 4 00:54:24 BST 2005
machine
: i686
cores
: 1
hyperthreads_per_core : 1
cpu_mhz
: 266
memory
: 320
free_memory
: 243
debian-dom0: {8} xm list
Name
Id Mem(MB) CPU State
Time(s) Console
Domain-0
0
59 0
r---- 52.7
NB: Problème avec la carte réseau realtek 100Mbit/s : elle n'est pas détectée avec le noyau Linux 2.4-Xen0 (détectée comme RealTek RTL8139 avec le kernel 2.6). Le contournement est d'utiliser une autre carte réseau (carte ne2000 10Mbit/s).
NB : une version 2.0.7 de Xen est utilisée, comme pour NetBSD.
NB : j'ai vu des problèmes de débit sur
transfert
NFS client Linux / serveur FreeBSD 4.11 et 5.3
(sans Xen : kernel Debian par défaut : Linux
pc-xen 2.4.27-2-686 #1 Mon May 16 17:03:22 JST 2005 i686 GNU/Linux
)
Téléchargement des sources de Xen : http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-2.0.7-src.tgz
Recompilation de Xen (comme illustré au paragraphe précédent, il n'est pas nécessaire de recompiler Xen : il y a déjà tous les binaires - un intérêt est de pouvoir consulter les sources de Xen ou des patches aux OS Linux et FreeBSD).
La compilation se fait sous Linux par la commande :
debian-dom0: {1} cd
/usr/src/xen-2.0
debian-dom0: {2} make world
debian-dom0: {3} sh install.sh
NB : comme pour le cas où Xen est installé à partir de binaires précompilés, les fichiers sont installés en-dehors du packaging Debian.
=> nouveau Xen.2.0.7.gz
=> nouveau noyau 2.6 Dom0
=> nouveau noyau 2.6 DomU
Recopie du nouveau noyau 2.6/Xen0 dans /boot, modification du XXX fichier de config de grub et reboot
A la différence de la configuration avec NetBSD/Dom0, Xen avec Linux met en place un réseau en mode "bridgé" : tout se passe comme si les machines virtuelles DomU étaient sur le même réseau que les autres machines (serveur NFS, PC "console").
Les machines virtuelles DomU utilisent le même préfixe réseau 192.168.1.0, le même masque réseau 255.255.255.0 et la même passerelle 192.168.1.1 (comparer avec les paramètres NetBSD).
Les machines virtuelles créées avec Debian/Dom0 ne sont pas directement partageables avec NetBSD/Dom0.
Le script network de configuration du réseau des DomU doit être patché dans la fonction /etc/xen/scripts/network::antispoofing :
--- network.ori Mon
Aug 15
22:07:59 2005
+++ network
Tue Jul 12 09:37:47 2005
@@ -137,8 +137,12 @@
local dev=$1
local bridge=$2
- iptables -P FORWARD DROP
- iptables -A FORWARD -m physdev
--physdev-in ${dev} -j ACCEPT
+ #echo "iptables -P FORWARD DROP"
+ #iptables -P FORWARD DROP
+ #XXXX grosse truande pour autoriser le transfert des paquets vers les XenU
+ iptables -P FORWARD ACCEPT
+ #echo "iptables -A FORWARD -m physdev
--physdev-in ${dev} -j ACCEPT"
+ #iptables -A FORWARD -m physdev
--physdev-in ${dev} -j ACCEPT
}
# Usage: show_status dev bridge
Pour plus d'explication sur le firewall iptables :
http://www.linuxguruz.com/iptables/howto/iptables-HOWTO.html
et
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
XXX à compléter avec le réseau des DomU en mode routé ?
Le point essentiel dans la préparation pour un DomU
Debian est la commande debootstrap
,
utilisée pour
créer une arborescence initiale.
Configuration des domaines U Debian :
préparation de deux images disque (partitions "/", 400Mo et swap, 200Mo) - les deux fichiers sont physiquement stockés dans le répertoire /opt/xen-images :
debian-dom0: {1} mkdir
/opt/xen-images/
debian-dom0: {2} dd if=/dev/zero of=/opt/xen-images/debian-root bs=1024k count=400
debian-dom0: {3} dd if=/dev/zero of=/opt/xen-images/debian-swap bs=1024k count=200
debian-dom0: {4} mkfs.ext3 /opt/xen-images/debian-root
debian-dom0: {5} mkswap /opt/xen-images/debian-swap
debian-dom0: {6} mkdir /mnt/debian-image
debian-dom0: {7} mount -o loop /opt/xen-images/debian-root /mnt/debian-image
remplissage de l'image /opt/xen-images/debian-root :
debian-dom0: {8} apt-get install
debootstrap
debian-dom0: {9} debootstrap --arch i386 sarge /mnt/debian-image http://ftp.fr.debian.org/debian
debian-dom0: {10} du -sh /mnt/debian-image
127M mnt/debian-image
recopie dans l'arborescence du DomU des modules du noyau, dans
/lib/modules (pour 2.4 et 2.6) :
debian-dom0: {11} cp -rp /lib/modules/2.4.30-xenU /lib/modules/2.6.11.12-xenU /mnt/debian-image/lib/modules/
Suppression des versions "TLS" des bibliothèques
partagées :
debian-dom0: {12} mv /mnt/debian-image/lib/tls/ /mnt/debian-image/lib/tls.disabled
mise au clair des fichiers de configuration dans un domU :
/etc/fstab
proc /proc
proc
defaults 0
0
/dev/hda1 /
ext3 defaults,errors=remount-ro 0 1
/dev/hda2 swap swap defaults
0 0
/etc/hostname : dom5.mydomain
/etc/hosts : 127.0.0.1 localhost
/etc/network/interfaces :
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.24
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.3
dns-search mydomain
sauvegarde de l'arborescence créée par debootstrap
pour automatiser
l'installation des
domU/Debian pour Dedian/Dom0 et
NetBSD/Dom0 :
debian-dom0: {13} tar -cvf debootstrap.ref.tar /mnt/debian-image
Démontage de l'image disque :
debian-dom0: {14} umount /mnt/debian-image
premier démarrage du domU (voir le fichier de
config
dom5.debian) et
finalisation de l'installation
avec la commande "base-config
"
debian-dom0: {15} xm create -c dom5.debian
Using config file "dom5.debian".
Started domain Debian, console on port 9605
************ REMOTE CONSOLE: CTRL-] TO QUIT ********
Linux version 2.6.11.12-xenU (xenod@freefall.cl.cam.ac.uk)
....
Debian GNU/Linux 3.1 dom5.mydomain tty1
dom5.mydomain login: root
Linux dom5.mydomain 2.6.11.12-xenU #1 Thu Aug 4 00:48:08 BST 2005 i686
GNU/Linux
The programs included with the Debian GNU/Linux system are free
software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
dom5:~# base-config
(programme interactif de configuration de la machine :
répondre aux questions ...)
(dont création d'un compte
utilisateur)
dom5:~# apt-get install ssh
(et autoriser sshd)
(à la fin de la configuration, redémarrer le
domaine U
pour avoir une machine opérationnelle)
dom5:~# init 6
La configuration du domU est complète.
NB : dans le fichier de configuration dom5.debian, il est
possible de choisir à la demande une version de noyau Linux
: 2.4 ou
2.6. Le noyau 2.6 a été retenu (illustration de
deux noyaux de version différente entre le domaine 0 et le
domaine U). Il y a message d'erreur sur le montage NFS avec un
kernel 2.6 : l'utilitaire mount
livré dans Debian/3.1 est trop ancien ?
préparation de deux partitions logiques (partitions
"/" et swap) :
debian-dom0: {16} mkfs.ext3 /dev/hdb7
debian-dom0: {17} mkswap /dev/hdb8
debian-dom0: {18} mkdir /mnt/debian-part
debian-dom0: {19} mount /dev/hdb7 /mnt/debian-part
remplissage de la partition /dev/hdb7 :
debian-dom0: {20} debootstrap --arch i386 sarge /mnt/debian-part http://ftp.fr.debian.org/debian
La suite de l'installation est identique au cas
précédent (installation
dans une image), avec le
même fichier de configuration dom5.debian ; il faut
juste changer le commentaire de la ligne :
#disk=['phy:...
vers la ligne disk=['file:...
Les deux premières étapes de cette méthode d'installation peuvent être utilisées pour initier l'installation des domU/Debian pour NetBSD/Dom0 (dans une partition logique /dev/hdb7 préalablement formattée sous NetBSD).
De même que dans la procédure d'installation dans
une image, il peut être intéressant de sauvegarder
(avec tar
) l'arborescence résultat
de la commande debootstrap
pour automatiser
l'installation de nouvelles machines virtuelles.
NetBSD a résolu le problème de l'oeuf et de la poule en créant un noyau d'installation NetBSD-XEN-INSTALL, qui permet d'installer NetBSD dans une machine virtuelle Xen. Ce noyau est utilisable sous NetBSD/Xen0 comme sous Debian/Xen0.
On utilise la même procédure d'installation que sous NetBSD/Dom0 (à part les paramètres réseau : passage en mode bridgé)
préparation pour un DomU NetBSD (-Current)
installation (idem sous NetBSD/Dom0)
- dans une image disque : fichier de configuration dom3.netbsd
- dans une partition dédiée (XXX A faire)
Paragraphe suivant : Comparaison d'outils de virtualisation
$Id: install-Debian.html 4 2005-08-18 09:47:18Z thierry.herbelot $