Miért A/B partícionálás?
Beágyazott rendszerekben a sikertelen frissítések tönkretehetik az eszközöket. Az A/B elrendezés ezt úgy oldja meg, hogy két gyökérfájlrendszert tart fenn:
- Slot A - aktív rootfs
- Slot B - készenléti rootfs a következő frissítéshez.
Ha egy frissítés sikeres, a bootloader átvált az új slotba. Ha a rendszerindítás sikertelen, visszaáll az utolsó ismert jó verzióra.
Ez a megközelítés feltételezi, hogy az A és a B slot azonos méretű partícióval rendelkezik, ami beágyazott rendszerekben, amikor az erőforrások korlátozottak, néha nehézségekbe ütközhet.
Egy másik megközelítés az, hogy partíciókat hozunk létre egy kis mentőrendszer számára, és egy nagyobb partíciót a normál futó rendszer számára.
Példa partíciós elrendezés
| Partíció | Típus | Cél |
|---|---|---|
| p1 | FAT32 | /boot_A (kernel, cmdline, bootloader) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (kernel, cmdline, bootloader a mentési rendszerhez) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | adatok / konfiguráció |
Gyakorlati példa
Ezt a beállítást két példán keresztül mutatjuk be rpi-image-genpéldaprojektekben:
- 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
Az első létrehozza a mentési rendszert, a második pedig egyesíti a mentési rendszert egy másik futó rendszerrel, a partíciócímkék beállításával a következő rendszerben cmdline.txt és fstab.
Kezelői frissítés
Az inaktív rendszerpartíciót manuálisan is csatlakoztathatja a konfigurációk, alkalmazások vagy rendszerkomponensek frissítéséhez.
Termelési rendszerek esetében a frissítéseket jellemzően a SWUpdate, amely biztonságosan automatizálja ezt a folyamatot.
Integráció a SWUpdate
SWUpdate natívan támogatja a kettős gyökérzetű (A/B) frissítési stratégiákat.
A partíciókat és a frissítési logikát közvetlenül a sw-description fájlban.
Ez a megközelítés atomi rendszerfrissítéseket biztosít beépített visszaállítási biztonsággal - ez alapvető fontosságú a fej nélküli vagy távoli eszközök esetében, ahol a kézi helyreállítás nem kivitelezhető.
Cikkek ebben a sorozatban
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- A raktár operációs rendszertől a gyártási platformig
- Customizing Raspberry Pi OS with rpi-image-gen
- Rendszer robusztussága - A/B gyökér fájlrendszer elrendezésének tervezése
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Források
- 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