Skip to main content

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.

swupdate kurtarma sistemi ile

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

Tipik bir Raspberry Pi Compute Module 5 (CM5) düzeni aşağıdaki gibi görünebilir:
BölünmeTipAmaç
p1FAT32/boot_A (kernel, cmdline, bootloader)
p2ext4rootfs A
p3FAT32/boot_B (çekirdek, cmdline, kurtarma sistemi için önyükleyici)
p4ext4rootfs_B
p5ext4veri / yapılandırma
Önyükleyici, kurtarma bölümünden önyükleme yapılıp yapılmayacağını belirlemek için bir bayrak (örneğin, rpi-eeprom'da GPIO17=1) kullanabilir.

Pratik Örnek

Bu kurulum iki şekilde gösterilmiştir rpi-image-genörnek projeler:

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.