Miksi A/B-jako?
Sulautetuissa järjestelmissä epäonnistuneet päivitykset voivat tuhota laitteet. A/B-asettelu ratkaisee tämän ylläpitämällä kahta juuritiedostojärjestelmää:
- A-korttipaikka - aktiivinen rootfs
- Aukko B - valmiustilassa oleva rootfs-tietokanta seuraavaa päivitystä varten.
Kun päivitys onnistuu, käynnistyslatausohjelma siirtyy uuteen paikkaan. Jos käynnistys epäonnistuu, se palaa viimeiseen tunnettuun hyvään versioon.
Tämä lähestymistapa edellyttää, että korttipaikoilla A ja B on samankokoiset osiot, mikä voi joskus olla hankalaa sulautetuissa järjestelmissä, joissa resurssit ovat rajalliset.
Toinen lähestymistapa on luoda osiot pienelle pelastusjärjestelmälle ja suurempi osio normaalisti toimivalle järjestelmälle.
Esimerkki osioiden asettelusta
| Osio | Tyyppi | Käyttötarkoitus |
|---|---|---|
| p1 | FAT32 | /boot_A (ydin, cmdline, käynnistyslaturi) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (ydin, cmdline, pelastusjärjestelmän käynnistysohjelma) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | data / kokoonpano |
Käytännön esimerkki
Tätä asetusta havainnollistetaan kahdessa rpi-image-genesimerkkiprojekteissa:
- 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
Ensimmäinen luo pelastusjärjestelmän ja toinen yhdistää pelastusjärjestelmän toiseen käynnissä olevaan järjestelmään, säätämällä osioiden merkintöjä cmdline.txt ja fstab.
Hallinnointipäivitys
Voit liittää käyttämättömän järjestelmäosion manuaalisesti päivittääksesi kokoonpanoja, sovelluksia tai järjestelmäkomponentteja.
Tuotantojärjestelmissä päivityksiä hallitaan yleensä SWUpdate, joka automatisoi tämän prosessin turvallisesti.
Integrointi SWUpdate
SWUpdate tukee natiivisti kahden juuritiedoston (A/B) päivitysstrategioita.
Osiot ja päivityslogiikka määritetään suoraan komennossa sw-description tiedostossa.
Tämä lähestymistapa takaa atomiset järjestelmäpäivitykset ja sisäänrakennetun palautuksen turvallisuuden - olennainen ominaisuus päätön- tai etälaitteissa, joissa manuaalinen palautus ei ole mahdollista.
Tämän sarjan artikkelit
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Stock OS:stä tuotantoalustaksi
- Customizing Raspberry Pi OS with rpi-image-gen
- Järjestelmän kestävyys - A/B-juuritiedostojärjestelmän asettelun suunnittelu
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Lähteet
- 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