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.
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
| Partiție | Tip | Scop |
|---|---|---|
| p1 | FAT32 | /boot_A (kernel, cmdline, bootloader) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (kernel, cmdline, bootloader pentru sistemul de salvare) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | date / configurare |
Exemplu practic
Această configurare este demonstrată în două rpi-image-genproiecte de exemplu:
- 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
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ă.
Articole din această serie
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- De la sistemul de operare stoc la platforma de producție
- Customizing Raspberry Pi OS with rpi-image-gen
- Robustețea sistemului - Proiectarea unui sistem de fișiere rădăcină A/B Layout
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Surse
- 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