Skip to main content

Pourquoi le partitionnement A/B ?

Dans les systèmes embarqués, l'échec des mises à jour peut mettre les appareils en panne. Une disposition A/B résout ce problème en maintenant deux systèmes de fichiers racine :

  • Slot A - rootfs actif
  • Emplacement B - système de fichiers racine en attente de la prochaine mise à jour

Lorsqu'une mise à jour réussit, le chargeur de démarrage passe au nouvel emplacement. En cas d'échec, il revient à la dernière bonne version connue.

Cette approche présuppose que les emplacements A et B ont la même taille de partition, ce qui peut être parfois délicat dans les systèmes embarqués, lorsque les ressources sont limitées.

swupdate avec système de sauvetage

Une autre approche consiste à créer des partitions pour un petit système de secours et une partition plus grande pour le système normal.

Exemple de disposition des partitions

Un schéma typique (CM5) Raspberry Pi Compute Module 5 (CM5) pourrait ressembler à ceci :
PartitionTypeObjectif
p1FAT32/boot_A (noyau, ligne de commande, chargeur de démarrage)
p2ext4rootfs A
p3FAT32/boot_B (noyau, ligne de commande, chargeur de démarrage pour le système de secours)
p4ext4rootfs_B
p5ext4données / configuration
Le chargeur de démarrage peut utiliser un drapeau (par exemple, GPIO17=1 dans rpi-eeprom) pour déterminer s'il faut démarrer à partir de la partition de secours.

Exemple pratique

Cette configuration est démontrée dans deux rpi-image-genexemples de projets :

La première crée le système de secours et la seconde combine le système de secours avec un autre système en cours d'exécution, en ajustant les étiquettes de partition dans cmdline.txt et fstab.

Mise à jour de la gestion

Vous pouvez monter manuellement la partition système inactive pour mettre à jour les configurations, les applications ou les composants du système.
Pour les systèmes de production, les mises à jour sont généralement gérées par SWUpdatequi automatise ce processus en toute sécurité.

Intégration avec SWUpdate

SWUpdate supporte nativement les stratégies de mise à jour à double racine (A/B).
Les partitions et la logique de mise à jour sont définies directement dans le fichier sw-description directement dans le fichier

Cette approche garantit des mises à jour atomiques du système avec une sécurité de retour en arrière intégrée - une caractéristique essentielle pour les appareils sans tête ou distants, où la récupération manuelle n'est pas possible.