Prečo rozdelenie A/B?
Vo vstavaných systémoch môžu neúspešné aktualizácie spôsobiť zablokovanie zariadení. Rozloženie A/B to rieši udržiavaním dvoch koreňových systémov súborov:
- Slot A - aktívny rootfs
- Slot B - pohotovostný koreňový systém pre ďalšiu aktualizáciu
Keď sa aktualizácia podarí, zavádzač sa prepne do nového slotu. Ak sa zavádzanie nepodarí, vráti sa k poslednej známej dobrej verzii.
Tento prístup predpokladá, že slot A a slot B majú rovnakú veľkosť oddielu, čo môže byť niekedy zložité vo vstavaných systémoch, keď sú zdroje obmedzené.
Ďalším prístupom je vytvorenie oddielov pre malý záchranný systém a väčšieho oddielu pre normálne bežiaci systém.
Príklad rozloženia oddielu
| Oddelenie | Typ | Účel |
|---|---|---|
| p1 | FAT32 | /boot_A (jadro, cmdline, zavádzač) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (jadro, cmdline, zavádzač pre záchranný systém) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | dáta / konfigurácia |
Praktický príklad
Toto nastavenie je demonštrované na dvoch príkladoch rpi-image-genpríkladoch projektov:
- 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
Prvý vytvorí záchranný systém a druhý spojí záchranný systém s iným spusteným systémom, pričom upraví označenia oddielov v cmdline.txt a fstab.
Správa aktualizácie
Neaktívny systémový oddiel môžete pripojiť ručne, aby ste aktualizovali konfigurácie, aplikácie alebo systémové komponenty.
V prípade produkčných systémov sa aktualizácie zvyčajne spravujú prostredníctvom SWUpdate, ktorý tento proces bezpečne automatizuje.
Integrácia s SWUpdate
SWUpdate natívne podporuje stratégie aktualizácie s dvojitým koreňovým systémom (A/B).
Oddelenia a logika aktualizácie sú definované priamo v sw-description súbore.
Tento prístup zabezpečuje atómové aktualizácie systému so zabudovanou bezpečnosťou spätného obnovenia - čo je základná funkcia pre bezhlavé alebo vzdialené zariadenia, kde nie je možné manuálne obnovenie.
Články v tejto sérii
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Zo skladového operačného systému na výrobnú platformu
- Customizing Raspberry Pi OS with rpi-image-gen
- Robustnosť systému - Návrh rozloženia koreňového súborového systému A/B
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Zdroje
- 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