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.
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
| Partition | Type | Objectif |
|---|---|---|
| p1 | FAT32 | /boot_A (noyau, ligne de commande, chargeur de démarrage) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (noyau, ligne de commande, chargeur de démarrage pour le système de secours) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | données / configuration |
Exemple pratique
Cette configuration est démontrée dans deux rpi-image-genexemples de projets :
- https://github.com/interelectronix/rpi-image-gen-projects/blob/main/deb12-cm5-rescue/README.md
- https://github.com/interelectronix/rpi-image-gen-projects/blob/main/deb12-cm5-ix-base/README.md
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.
Articles de cette série
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Du système d'exploitation de base à la plate-forme de production
- Customizing Raspberry Pi OS with rpi-image-gen
- Robustesse du système - Conception d'un système de fichiers racine A/B Layout
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Sources d'information
- rpi-image-gen: https://github.com/raspberrypi/rpi-image-gen
- rpi-sb-provisioner: https://github.com/raspberrypi/rpi-sb-provisioner
- SWUpdate: https://github.com/sbabic/swupdate
- swugenerator: https://github.com/sbabic/swugenerator