Skip to main content

Hvorfor A/B-partisjonering?

I innebygde systemer kan mislykkede oppdateringer ødelegge enheter. En A/B-layout løser dette ved å opprettholde to rotfilsystemer:

  • Spor A - aktiv rootfs
  • Slot B - standby rootfs for neste oppdatering

Når en oppdatering lykkes, bytter bootloaderen til det nye sporet. Hvis oppstarten mislykkes, går den tilbake til den siste kjente gode versjonen.

Denne tilnærmingen forutsetter at spor A og spor B har samme størrelse på partisjonen, noe som noen ganger kan være vanskelig i innebygde systemer, når ressursene er begrensede.

swupdate med redningssystem

En annen tilnærming er å opprette partisjoner for et lite redningssystem og en større partisjon for det normale kjøresystemet.

Eksempel på partisjonslayout

Et typisk Raspberry Pi Compute Module 5 (CM5) layout kan se slik ut:
PartisjonTypeFormål
p1FAT32/boot_A (kjerne, cmdline, oppstartslaster)
p2ext4rootfs A
p3FAT32/boot_B (kjerne, cmdline, oppstartslaster for redningssystem)
p4ext4rootfs_B
p5ext4data / konfigurasjon
Oppstartslasteren kan bruke et flagg (for eksempel GPIO17=1 i rpi-eeprom) for å avgjøre om den skal starte opp fra redningspartisjonen.

Praktisk eksempel

Dette oppsettet er demonstrert i to rpi-image-geneksempelprosjekter:

Den første oppretter redningssystemet, og den andre kombinerer redningssystemet med et annet kjørende system ved å justere partisjonsetikettene i cmdline.txt og fstab.

Administrere oppdatering

Du kan montere den inaktive systempartisjonen manuelt for å oppdatere konfigurasjoner, programmer eller systemkomponenter.
For produksjonssystemer administreres oppdateringer vanligvis via SWUpdatesom automatiserer denne prosessen på en sikker måte.

Integrering med SWUpdate

SWUpdate har innebygd støtte for oppdateringsstrategier med to rotter (A/B).
Partisjoner og oppdateringslogikk defineres direkte i sw-description filen.

Denne tilnærmingen sikrer atomiske systemoppdateringer med innebygd sikkerhet for tilbakestilling - en viktig funksjon for hodeløse eller eksterne enheter, der manuell gjenoppretting ikke er mulig.