Ce guide montre comment effectuer une installation de Xen dom0 sur une carte SD ou USB, de manière à avoir dom0 sur tmpfs. Cela a des avantages, mais il est nécessaire d'avoir un endroit pour stocker les invités (machines virtuelles) et un serveur syslog pour rediriger les logs.
Ce processus s'applique à Alpine Linux 1.9.0 ou ultérieur, et aboutira à une installation de style run-from-ram.
On doit avoir:
Certains lecteurs de cartes CF ont des problèmes avec les cartes CF plus rapides sur le marché. Si on rencontre des problèmes pour démarrer la carte CF même après avoir vérifié les paramètres du BIOS, il faudra peut-être utiliser une ancienne carte.
Cette étape peut nécessiter des modifications aux paramètres du BIOS pour sélectionner le démarrage à partir du CD. Se connecter avec le nom d'utilisateur root. Aucun mot de passe n'est nécessaire.
Si on n'est pas en mesure de démarrer à partir du CD, une autre option est de démarrer à partir d'une installation Alpine régulière, et monter manuellement l'image ISO dans /media/cdrom.
Déterminer le nom quel'ordinateur utilise pour la carte CF.
Après avoir inséré la carte CF, exécuter la commande suivante:
$ dmesg
Cette commande devrait retourner le nom de la carte CF, probablement en commençant par “sd”. (Par exemple: «sda»).
Le reste de ce document suppose que la carte CF est montée dans /dev/sda
Il faut être très prudent à ce sujet, afin de ne pas effacer par erreur le disque dur si c'est sur /dev/sda
Lancer fdisk (remplacer sda par le nom de la carte CF):
$ fdisk /dev/sda
Créer une nouvelle table de partition (Facultatif) avec une partition FAT32
Vérifier que la partition principale est bootable
Faire une partition amorçable (drapeau de démarrage de set)
Pour démarrer à partir de la carte CF, il faut copier le contenu du CD-ROM de la carte CF et la rendre bootable. Ces deux opérations peuvent être automatisées avec l'outil setup-bootable ou peut être fait manuellement.
Si les commandes suivantes échouent en raison de “No such file or directory”, il peut être nécessaire de retirer et réinsérer la carte CF, ou même redémarrer, pour faire monter /dev/sda1
Si on utilise Alpine Linux 1.10.4 ou plus récent, on peut utiliser cette section pour terminer l'installation. Sinon, suivre les étapes manuelles ci-dessous.
La partition cible doit être formatée. Utiliser la commande mkdosfs décrités dans les étapes manuelles ci-dessous si nécessaire.
Exécuter le script setup-bootable pour ajouter Alpine Linux dans la carte CF et la rendre bootable (remplacer sda avec le nom de la carte CF):
$ setup-bootable /media/cdrom /dev/sda1
Si on effectue l'installation sur une clé USB, il faut peut-être modifier le fichier syslinux.cfg pour indiquer usbdisk comme décrit ci-dessous, ou il y aura d'éventuels problèmes lors du boot ainsi qu'avec le cachee des paquets. Les versions récentes de l'installation amorçable préciseront le device alpine_dev en utilisant un UUID, donc il devrait fonctionner correctement par défaut.
$ apk add dosfstools $ mkdosfs -F32 /dev/sda1
$ apk add syslinux $ dd if=/usr/share/syslinux/mbr.bin of=/dev/sda $ syslinux /dev/sda1
$ mkdir -p /media/sda1 $ mount -t vfat /dev/sda1 /media/sda1 $ cd /media/cdrom $ cp -a .alpine-release * /media/sda1/ $ umount /media/sda1
Si on ne peut pas démarrer à partir de la carte CF et qu'on voit quelque chose comme:
Mounting boot media failed. initramfs emergency recovery shell launched. Type 'exit' to continue boot
alors il est probable que le nom du périphérique dans syslinux.cfg est erroné. Il faut remplacer le nom de l'appareil dans cette ligne:
append initrd=/boot/grsec.gz alpine_dev=**usbdisk**:vfat modules=loop,cramfs,sd-mod,usb-storage quiet
avec le nom du périphérique approprié.
Lorsque la carte CF est formatée avec un système de fichiers autre que FAT32, on peut devoir spécifier les modules du système de fichiers nécessaires dans les paramètres de démarrage.
Pour ce faire, installer la carte CF et changer la ligne de fichier syslinux.cfg de
append initrd=/boot/grsec.gz alpine_dev=usbdisk:**vfat** modules=loop,cramfs,sd-mod,usb-storage quiet
en
append initrd=/boot/grsec.gz alpine_dev=usbdisk:**ext3** modules=loop,cramfs,sd-mod,usb-storage,**ext3** quiet
dans le cas d'une partition formatée ext3.
Une procédure similaire pourrait s'appliquer à d'autres systèmes de fichiers (si elles sont soutenues par syslinux et le noyau Alpine Linux).
Beaucoup de lecteurs de carte CF ne prennent pas correctement encharge DMA , de sorte qu'il faudra peut-être ajouter nodma à la ligne append du fichier syslinux.cfg.
Alpine Linux a des applications spéciales qui peuvent aider à l'utiliser, par exemple:
Il suffit de taper l'une des commandes ci-dessus sur la console et d'appuyer sur Entrée pour exécuter le script.
Une fois l'installation d'Alpine Linux terminé, démarrer à partir de celui-ci et configurer le système nouvellement installé:
on peut avoir à éditer le fichier /etc/apk/repositories et changer la première ligne afin qu'elle pointe vers /media/usb/apks.
Setup-alpin [...] Update apk
Maintenant que le système correctement configuré, il est temps d'installer Xen:
$ Apk add Xen
Une fois Xen installé, il faut modifier le bootloader USB afin de charger le noyau Xen.
La première étape consiste à remonter /media/usb avec des autorisations en écriture:
On peut avoir à utiliser /media/UUID=XXX-XXXX au lieu de /media/USB, consulter /proc/mounts pour détecter où est monté la carte usb/cf.
$ Mount -o remount,rw /media/usb
Ensuite, copier le noyau Xen et mboot.c32 dan la partition de boot usb:
$ cp /boot/xen.gz /media/usb/boot/ $ cp /boot/mboot.c32 /media/usb/boot/
Maintenant, que nous avons tous les fichiers nécessaires pour démarrer Xen depuis l'USB, il est temps de changer le bootloader et d'ajouter une entrée Xen, éditer le fichier /media/usb/syslinux.cfg et ajouter l'une des entrées suivantes:
LABEL xen KERNEL /boot/mboot.c32 APPEND /boot/xen.gz --- /boot/grsec alpine_dev=UUID=XXXX-XXXX:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/grsec.modloop.squashfs --- /boot/grsec.gz
LABEL xen KERNEL /boot/mboot.c32 APPEND /boot/xen.gz com1=115200,8n1 console=com1 --- /boot/grsec alpine_dev=UUID=XXXX-XXXX:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/grsec.modloop.squashfs --- /boot/grsec.gz
Changer l'UUID par la bonne valeur, et ajouter les modules nécessaires pour le système. C'est aussi une bonne idée de vérifier les options de démarrage Xen et mettre au moins dom0_mem
, dom0_vcpus_pin
et dom0_max_vcpus
.
L'étape suivante consiste à charger les modules du noyau nécessaires pour Xen, nous allons les ajouter dans /etc/modules, donc ils seront chargés automatiquement au démarrage :
$ echo "xen_netback" >> /etc/modules $ echo "xen_blkback" >> /etc/modules $ echo "tun" >> /etc/modules
La dernière étape consiste à configurer les services de démarrage, nous aurons besoin de udev et xencommons au moins être lancé au démarrage:
$ rc-update add udev sysinit $ rc-update add udev-postmount $ rc-update add xenstored $ rc-update add xenconsoled
Si on a besoin de l'outil xm, ajouter également xend aux service de démarrage:
$ rc-update add xend
Maintenant qu'on a une installation Xen pleinement fonctionnelle, il est temps d'enregistrer les modifications et démarrer avec celle-ci.
$ lbu commit $ reboot
Ne pas oublier pas de configurer au moins un pont réseau en suivant le guide de Bridge.