Skip to main content

De ce partiționarea A/B?

În sistemele integrate, actualizările eșuate pot distruge dispozitivele. O dispunere A/B rezolvă această problemă prin menținerea a două sisteme de fișiere rădăcină:

  • Slot A - rootfs activ
  • Slot B - rootfs de rezervă pentru următoarea actualizare

Atunci când o actualizare reușește, bootloader-ul trece la noul slot. Dacă boot-ul eșuează, se revine la ultima versiune bună cunoscută.

Această abordare presupune că fanta A și fanta B au aceeași dimensiune a partiției, ceea ce poate fi uneori dificil în sistemele integrate, când resursele sunt limitate.

swupdate cu sistem de salvare

O altă abordare este crearea de partiții pentru un sistem de salvare mic și o partiție mai mare pentru sistemul care rulează normal.

Exemplu de dispunere a partiției

O schemă tipică Raspberry Pi Compute Module 5 (CM5) ar putea arăta astfel:
PartițieTipScop
p1FAT32/boot_A (kernel, cmdline, bootloader)
p2ext4rootfs A
p3FAT32/boot_B (kernel, cmdline, bootloader pentru sistemul de salvare)
p4ext4rootfs_B
p5ext4date / configurare
Bootloader-ul poate utiliza un indicator (de exemplu, GPIO17=1 în rpi-eeprom) pentru a determina dacă să pornească de pe partiția de salvare.

Exemplu practic

Această configurare este demonstrată în două rpi-image-genproiecte de exemplu:

Primul creează sistemul de salvare, iar al doilea combină sistemul de salvare cu un alt sistem care rulează, ajustând etichetele partițiilor în cmdline.txt și fstab.

Gestionarea actualizării

Puteți monta manual partiția inactivă a sistemului pentru a actualiza configurațiile, aplicațiile sau componentele sistemului.
Pentru sistemele de producție, actualizările sunt de obicei gestionate prin intermediul SWUpdate, care automatizează acest proces în siguranță.

Integrare cu SWUpdate

SWUpdate acceptă în mod nativ strategii de actualizare dual-rootfs (A/B).
Partițiile și logica de actualizare sunt definite direct în fișierul sw-description fișier.

Această abordare asigură actualizări atomice ale sistemului cu siguranță rollback încorporată - o caracteristică esențială pentru dispozitivele fără cap sau la distanță, unde recuperarea manuală nu este fezabilă.