Skip to main content

Zakaj razdelitev A/B?

V vgrajenih sistemih lahko neuspešne posodobitve poškodujejo naprave. Postavitev A/B to rešuje z vzdrževanjem dveh korenskih datotečnih sistemov:

  • Slot A - aktivni korenski sistem rootfs
  • reža B - rezervni korenski sistem za naslednjo posodobitev

Ko posodobitev uspe, se zagonski program preklopi na novo režo. Če zagon ni uspešen, se vrne na zadnjo znano dobro različico.

Ta pristop predpostavlja, da imata reža A in reža B enako velikost particije, kar je v vgrajenih sistemih, kjer so viri omejeni, včasih težavno.

swupdate z reševalnim sistemom

Drug pristop je ustvarjanje razdelkov za majhen reševalni sistem in večji razdelek za običajni delujoči sistem.

Primer razporeditve razdelkov

Tipičen Raspberry Pi Compute Module 5 (CM5) je lahko videti takole:
RazdelekVrstaNamen
p1FAT32/boot_A (jedro, cmdline, bootloader)
p2ext4rootfs A
p3FAT32/boot_B (jedro, cmdline, bootloader za reševalni sistem)
p4ext4rootfs_B
p5ext4podatki / konfiguracija
Zagonski program lahko uporabi zastavico (na primer GPIO17=1 v rpi-eeprom), da določi, ali se bo zagnal z reševalnega razdelka.

Praktični primer

Ta nastavitev je prikazana v dveh primerih rpi-image-genprojektih:

Prvi ustvari reševalni sistem, drugi pa združi reševalni sistem z drugim delujočim sistemom, pri čemer prilagodi oznake razdelkov v cmdline.txt in fstab.

Upravljanje posodobitev

Neaktivno sistemsko particijo lahko namestite ročno, da posodobite konfiguracije, aplikacije ali sistemske komponente.
Pri produkcijskih sistemih se posodobitve običajno upravljajo prek SWUpdate, ki ta postopek varno avtomatizira.

Integracija z SWUpdate

SWUpdate nativno podpira strategije posodabljanja z dvema korenskima enotama (A/B).
Razdelki in logika posodabljanja so opredeljeni neposredno v sw-description datoteki.

Ta pristop zagotavlja atomične posodobitve sistema z vgrajeno varnostjo povratka - bistvena lastnost za naprave brez glave ali oddaljene naprave, kjer ročna obnovitev ni izvedljiva.