Skip to main content

Dlaczego partycjonowanie A/B?

W systemach wbudowanych nieudane aktualizacje mogą uszkodzić urządzenia. Układ A/B rozwiązuje ten problem, utrzymując dwa główne systemy plików:

  • Slot A - aktywny rootfs
  • Slot B - rezerwowy rootfs do następnej aktualizacji

Gdy aktualizacja się powiedzie, bootloader przełącza się na nowy slot. Jeśli rozruch się nie powiedzie, następuje powrót do ostatniej znanej dobrej wersji.

To podejście zakłada, że slot A i slot B mają ten sam rozmiar partycji, co może być czasami trudne w systemach wbudowanych, gdy zasoby są ograniczone.

swupdate z systemem ratunkowym

Innym podejściem jest utworzenie partycji dla małego systemu ratunkowego i większej partycji dla normalnie działającego systemu.

Przykładowy układ partycji

Typowy układ Raspberry Pi Compute Module 5 (CM5) może wyglądać następująco:
PartycjaTypCel
p1FAT32/boot_A (jądro, cmdline, bootloader)
p2ext4rootfs A
p3FAT32/boot_B (jądro, cmdline, bootloader dla systemu ratunkowego)
p4ext4rootfs_B
p5ext4dane / konfiguracja
Program ładujący może użyć flagi (na przykład GPIO17=1 w rpi-eeprom), aby określić, czy uruchomić komputer z partycji ratunkowej.

Praktyczny przykład

Ta konfiguracja została zademonstrowana w dwóch rpi-image-genprzykładowych projektach:

Pierwszy z nich tworzy system ratunkowy, a drugi łączy system ratunkowy z innym działającym systemem, dostosowując etykiety partycji w cmdline.txt i fstab.

Aktualizacja zarządzania

Nieaktywną partycję systemową można zamontować ręcznie, aby zaktualizować konfiguracje, aplikacje lub składniki systemu.
W przypadku systemów produkcyjnych aktualizacje są zazwyczaj zarządzane za pomocą aplikacji SWUpdatektóry bezpiecznie automatyzuje ten proces.

Integracja z SWUpdate

SWUpdate natywnie obsługuje strategie aktualizacji z dwoma rootami (A/B).
Partycje i logika aktualizacji są zdefiniowane bezpośrednio w pliku sw-description pliku.

Takie podejście zapewnia atomowe aktualizacje systemu z wbudowanym bezpieczeństwem wycofywania - niezbędna funkcja dla urządzeń bezgłowych lub zdalnych, gdzie ręczne odzyskiwanie nie jest możliwe.