Table of Contents

Créer une carte Compact Flash bootable d'Alpine Linux

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.

Prérequis

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.

Installation et configuration du socle

Démarrer l'ordinateur à partir du CD-ROM Alpine Linux.

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 de périphérique de la carte CF

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

Formatage de la carte CF

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)

Ajouter Alpine Linux à la carte CF

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

Installation automatisée

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.

Installation Manuelle

$ 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

Traitement des Problèmes

Faux nom de l'appareil

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é.

Les systèmes de fichiers non-FAT32

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).

Support DMA

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.

Paramétrage

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

Installation de Xen

Installer Xen

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/

Configurer le bootloader

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:

Boot normal:

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

Démarrage de la console:

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.

Chargement des modules du noyau

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

Configurer les services de démarrage

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.