Skip to main content

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

swupdate so záchranným systémom

Ď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

Typický Raspberry Pi Compute Module 5 (CM5) môže vyzerať takto:
OddelenieTypÚčel
p1FAT32/boot_A (jadro, cmdline, zavádzač)
p2ext4rootfs A
p3FAT32/boot_B (jadro, cmdline, zavádzač pre záchranný systém)
p4ext4rootfs_B
p5ext4dáta / konfigurácia
Zavádzač môže použiť príznak (napríklad GPIO17=1 v rpi-eeprom) na určenie, či sa má zaviesť zo záchranného oddielu.

Praktický príklad

Toto nastavenie je demonštrované na dvoch príkladoch rpi-image-genpríkladoch projektov:

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.