Skip to main content

Proč rozdělení A/B?

Ve vestavěných systémech mohou neúspěšné aktualizace způsobit zablokování zařízení. Rozložení A/B řeší tento problém tím, že udržuje dva kořenové systémy souborů:

  • Slot A - aktivní kořenový systém
  • Slot B - pohotovostní kořenový systém pro příští aktualizaci.

Když se aktualizace podaří, zavaděč se přepne do nového slotu. Pokud se zavádění nezdaří, vrátí se k poslední známé dobré verzi.

Tento přístup předpokládá, že slot A a slot B mají stejnou velikost oddílu, což může být ve vestavěných systémech, kde jsou zdroje omezené, někdy ošemetné.

swupdate se záchranným systémem

Dalším přístupem je vytvoření oddílu pro malý záchranný systém a většího oddílu pro normálně běžící systém.

Příklad rozložení oddílu

Typický Raspberry Pi Compute Module 5 (CM5) může vypadat takto:
OddílTypÚčel
p1FAT32/boot_A (jádro, cmdline, zavaděč)
p2ext4rootfs A
p3FAT32/boot_B (jádro, cmdline, zavaděč pro záchranný systém)
p4ext4rootfs_B
p5ext4data / konfigurace
Zavaděč může pomocí příznaku (například GPIO17=1 v rpi-eeprom) určit, zda se má zavést ze záchranného oddílu.

Praktický příklad

Toto nastavení je demonstrováno na dvou příkladech rpi-image-genpříkladů projektů:

První vytvoří záchranný systém a druhý spojí záchranný systém s jiným běžícím systémem, přičemž upraví označení oddílů v systému. cmdline.txt a fstab.

Aktualizace správy

Neaktivní systémový oddíl můžete připojit ručně a aktualizovat tak konfigurace, aplikace nebo součásti systému.
U produkčních systémů se aktualizace obvykle spravují prostřednictvím SWUpdate, který tento proces bezpečně automatizuje.

Integrace s SWUpdate

SWUpdate nativně podporuje strategie aktualizace se dvěma kořeny (A/B).
Oddíly a logika aktualizace jsou definovány přímo v příkazu sw-description souboru.

Tento přístup zajišťuje atomické aktualizace systému s vestavěným zabezpečením proti vrácení - což je zásadní vlastnost pro bezhlavé nebo vzdálené zařízení, kde není možné provést ruční obnovu.