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é.
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
| Oddíl | Typ | Účel |
|---|---|---|
| p1 | FAT32 | /boot_A (jádro, cmdline, zavaděč) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (jádro, cmdline, zavaděč pro záchranný systém) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | data / konfigurace |
Praktický příklad
Toto nastavení je demonstrováno na dvou příkladech rpi-image-genpříkladů projektů:
- 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
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.
Články v této sérii
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Ze skladového operačního systému na produkční platformu
- Customizing Raspberry Pi OS with rpi-image-gen
- Robustnost systému - Návrh rozložení kořenového souborové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