Neden A/B bölümleme?
Gömülü sistemlerde, başarısız güncellemeler cihazları bozabilir. Bir A/B düzeni, iki kök dosya sistemini koruyarak bunu çözer:
- Yuva A - aktif rootfs
- Yuva B - bir sonraki güncelleme için yedek rootfs
Bir güncelleme başarılı olduğunda, önyükleyici yeni yuvaya geçer. Önyükleme başarısız olursa, bilinen en son iyi sürüme geri döner.
Bu yaklaşım, A yuvası ve B yuvasının aynı boyutta bölüme sahip olduğunu varsayar, bu da kaynakların sınırlı olduğu gömülü sistemlerde bazen zor olabilir.
Diğer bir yaklaşım ise, küçük bir kurtarma sistemi için bölümler ve normal çalışan sistem için daha büyük bir bölüm oluşturmaktır.
Örnek Bölme Düzeni
| Bölünme | Tip | Amaç |
|---|---|---|
| p1 | FAT32 | /boot_A (kernel, cmdline, bootloader) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (çekirdek, cmdline, kurtarma sistemi için önyükleyici) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | veri / yapılandırma |
Pratik Örnek
Bu kurulum iki şekilde gösterilmiştir rpi-image-genörnek projeler:
- 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
Birincisi kurtarma sistemini oluşturur ve ikincisi kurtarma sistemini çalışan başka bir sistemle birleştirir, bölüm etiketlerini cmdline.txt ve fstab.
Güncelleme yönetimi
Yapılandırmaları, uygulamaları veya sistem bileşenlerini güncellemek için etkin olmayan sistem bölümünü manuel olarak bağlayabilirsiniz.
Üretim sistemleri için güncellemeler genellikle şu yollarla yönetilir SWUpdatebu süreci güvenli bir şekilde otomatikleştirir.
ile Entegrasyon SWUpdate
SWUpdate çift köklü (A/B) güncelleme stratejilerini yerel olarak destekler.
Bölümler ve güncelleme mantığı doğrudan sw-description dosya.
Bu yaklaşım, yerleşik geri alma güvenliği ile atomik sistem güncellemeleri sağlar - manuel kurtarmanın mümkün olmadığı başsız veya uzak cihazlar için önemli bir özelliktir.
Bu serideki makaleler
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Stok İşletim Sisteminden Üretim Platformuna
- Customizing Raspberry Pi OS with rpi-image-gen
- Sistem Sağlamlığı - Bir A/B Kök Dosya Sistemi Düzeni Tasarlama
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Kaynaklar
- 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