Table of Contents
Créer une carte Compact Flash bootable d'Alpine Linux
Table of Contents
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:
- Alpine CD-ROM (Télécharger un fichier. Iso contenant une version alpineLinux.)
- Un ordinateur avec lecteur de carte CF
- Une Carte CF
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
- d Supprime toutes les partitions (cela peut nécisseter quelques étapes)
- n Créer une nouvelle partition
- P Une partition primaire
- 1 partition numéro 1
- Utiliser par défaut pour le premier et le dernier cylindre (appuyer simplement sur [ENTER] à deux reprises).
- t Modifier le type de partition
- c type de partition (Win95 FAT32/LBA)
Vérifier que la partition principale est bootable
- p Imprimer la liste des partitions
- S'il n'y a pas '*' à côté de la première partition, suivre les étapes suivantes:
Faire une partition amorçable (drapeau de démarrage de set)
- 1 partition numéro 1
- w Ecrire les modifications sur l'appareil
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
- (optionnel) - Si on a créé une nouvelle partition ci-dessus, formater la carte CF avec un système de fichiers FAT32 (remplacer sda avec le nom de la carte CF):
$ apk add dosfstools $ mkdosfs -F32 /dev/sda1
- Installer syslinux et MBR (remplacer sda avec le nom de la carte CF):
$ apk add syslinux $ dd if=/usr/share/syslinux/mbr.bin of=/dev/sda $ syslinux /dev/sda1
- Copier les fichiers sur la carte CF (remplacer sda avec le nom de la carte CF):
$ 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é.
- Pour démarrer à partir USB, le nom de l'appareil doit être «usbdisk» (voir ci-dessus)
- Pour d'autres options, exécuter cat /proc/partitions pour voir les disques disponibles (à savoir «sda» ou «sdb»)
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:
- setup-alpine (Configure toutes les options de base sur Alpine Linux)
- setup-acf ( nommé setup-webconf avant Alpine 1.9 beta 4) (Configuration ACF (webconfiguration) de sorte que l'on peut gérer le sytème par https)
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.