Skip to main content

Waarom A/B-partitionering?

In embedded systemen kunnen mislukte updates apparaten platleggen. Een A/B-layout lost dit op door twee rootbestandssystemen te onderhouden:

  • Slot A - actieve rootfs
  • Slot B - stand-by rootfs voor de volgende update

Wanneer een update slaagt, schakelt de bootloader naar de nieuwe sleuf. Als het booten mislukt, wordt er teruggeschakeld naar de laatst bekende goede versie.

Deze aanpak veronderstelt dat sleuf A en sleuf B dezelfde grootte van de partitie hebben, wat soms lastig kan zijn in embedded systemen, wanneer de middelen beperkt zijn.

swupdate met reddingssysteem

Een andere benadering is om partities te maken voor een klein reddingssysteem en een grotere partitie voor het normaal draaiende systeem.

Voorbeeld partitie-indeling

Een typische Raspberry Pi Compute Module 5 (CM5) lay-out zou er als volgt uit kunnen zien:
PartitieTypeDoel
p1FAT32/boot_A (kernel, cmdline, bootloader)
p2ext4rootfs A
p3FAT32/boot_B (kernel, cmdline, bootloader voor reddingssysteem)
p4ext4rootfs_B
p5ext4gegevens / configuratie
De bootloader kan een vlag gebruiken (bijvoorbeeld GPIO17=1 in rpi-eeprom) om te bepalen of er vanaf de reddingspartitie opgestart moet worden.

Praktisch voorbeeld

Deze opstelling wordt gedemonstreerd in twee rpi-image-genvoorbeeldprojecten:

De eerste maakt het reddingssysteem aan en de tweede combineert het reddingssysteem met een ander lopend systeem, waarbij partitielabels worden aangepast in cmdline.txt en fstab.

Update beheren

U kunt de inactieve systeempartitie handmatig aankoppelen om configuraties, toepassingen of systeemcomponenten bij te werken.
Voor productiesystemen worden updates meestal beheerd via SWUpdate, dat dit proces veilig automatiseert.

Integratie met SWUpdate

SWUpdate ondersteunt van nature dual-rootfs (A/B) updatestrategieën.
Partities en updatelogica worden rechtstreeks in het sw-description bestand.

Deze aanpak zorgt voor atomaire systeemupdates met ingebouwde beveiliging tegen rollback - een essentiële functie voor headless of externe apparaten, waar handmatig herstel niet haalbaar is.