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.
Een andere benadering is om partities te maken voor een klein reddingssysteem en een grotere partitie voor het normaal draaiende systeem.
Voorbeeld partitie-indeling
| Partitie | Type | Doel |
|---|---|---|
| p1 | FAT32 | /boot_A (kernel, cmdline, bootloader) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (kernel, cmdline, bootloader voor reddingssysteem) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | gegevens / configuratie |
Praktisch voorbeeld
Deze opstelling wordt gedemonstreerd in twee rpi-image-genvoorbeeldprojecten:
- 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
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.
Artikelen in deze serie
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Van standaard besturingssysteem naar productieplatform
- Customizing Raspberry Pi OS with rpi-image-gen
- Robuustheid van het systeem - Een A/B rootbestandssysteem ontwerpen
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Bronnen
- 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