Skip to main content

Varför A/B-partitionering?

I inbyggda system kan misslyckade uppdateringar leda till att enheter slås ut. En A/B-layout löser detta genom att upprätthålla två rotfilsystem:

  • Plats A - aktiv rootfs
  • Plats B - standby rootfs för nästa uppdatering

När en uppdatering lyckas växlar starthanteraren till den nya kortplatsen. Om uppstarten misslyckas återgår den till den senast kända bra versionen.

Detta tillvägagångssätt förutsätter, att slot A och slot B har samma storlek på partitionen, vilket ibland kan vara knepigt i inbäddade system, när resurserna är begränsade.

swupdate med räddningssystem

Ett annat tillvägagångssätt är att skapa partitioner för ett litet räddningssystem och en större partition för det normala körsystemet.

Exempel på partitioneringslayout

En typisk Raspberry Pi Compute Module 5 (CM5) layout kan se ut så här:
PartitiontypSyfte
p1FAT32/boot_A (kärna, cmdline, startladdare)
p2ext4rootfs A
p3FAT32/boot_B (kärna, cmdline, bootloader för räddningssystem)
p4ext4rootfs_B
p5ext4data / konfiguration
Startladdaren kan använda en flagga (t.ex. GPIO17=1 i rpi-eeprom) för att avgöra om den ska starta från räddningspartitionen.

Praktiskt exempel

Denna inställning demonstreras i två rpi-image-genexempelprojekt:

Den första skapar räddningssystemet och den andra kombinerar räddningssystemet med ett annat körsystem och justerar partitionsetiketter i cmdline.txt och fstab.

Uppdatering av hantering

Du kan montera den inaktiva systempartitionen manuellt för att uppdatera konfigurationer, program eller systemkomponenter.
För produktionssystem hanteras uppdateringar vanligtvis via SWUpdatesom automatiserar denna process på ett säkert sätt.

Integration med SWUpdate

SWUpdate har inbyggt stöd för uppdateringsstrategier med dubbla rotar (A/B).
Partitioner och uppdateringslogik definieras direkt i filen sw-description filen.

Detta tillvägagångssätt säkerställer atomära systemuppdateringar med inbyggd rollback-säkerhet - en viktig funktion för huvudlösa enheter eller fjärrenheter, där manuell återställning inte är möjlig.