주요 콘텐츠로 건너뛰기

왜 A/B 파티셔닝을 해야 하나요?

임베디드 시스템에서는 업데이트 실패로 인해 디바이스가 중단될 수 있습니다. A/B 레이아웃은 두 개의 루트 파일시스템을 유지함으로써 이 문제를 해결합니다:

  • 슬롯 A - 활성 루트fs
  • 슬롯 B - 다음 업데이트를 위한 대기 루트fs

업데이트가 성공하면 부트로더가 새 슬롯으로 전환됩니다. 부팅에 실패하면 마지막으로 알려진 정상 버전으로 롤백됩니다.

이 접근 방식은 슬롯 A와 슬롯 B의 파티션 크기가 동일하다는 것을 전제로 하는데, 리소스가 제한되어 있는 임베디드 시스템에서는 때때로 까다로울 수 있습니다.

swupdate 구조 시스템 포함

또 다른 접근 방식은 작은 구조 시스템용 파티션을 만들고 일반 실행 시스템용 파티션을 더 크게 만드는 것입니다.

파티션 레이아웃 예시

일반적인 Raspberry Pi Compute Module 5 (CM5) 레이아웃은 다음과 같습니다:
파티션유형목적
p1FAT32/boot_A(커널, cmdline, 부트로더)
p2ext4rootfs A
p3FAT32/boot_B(커널, cmdline, 복구 시스템용 부트로더)
p4ext4rootfs_B
p5ext4데이터/설정
부트로더는 플래그(예: rpi-eeprom의 GPIO17=1)를 사용하여 복구 파티션에서 부팅할지 여부를 결정할 수 있습니다.

실제 사례

이 설정은 두 가지 예제 프로젝트에서 시연됩니다. rpi-image-gen예제 프로젝트에서 설명합니다:

첫 번째는 복구 시스템을 생성하고 두 번째는 복구 시스템을 실행 중인 다른 시스템과 결합하여 파티션 레이블을 cmdline.txt 와 fstab.

업데이트 관리

비활성 시스템 파티션을 수동으로 마운트하여 구성, 애플리케이션 또는 시스템 구성요소를 업데이트할 수 있습니다.
프로덕션 시스템의 경우 업데이트는 일반적으로 SWUpdate를 통해 업데이트가 관리되며, 이 프로세스를 안전하게 자동화합니다.

다음과의 통합 SWUpdate

SWUpdate 는 기본적으로 듀얼 루트프(A/B) 업데이트 전략을 지원합니다.
파티션과 업데이트 로직은 파일에 직접 정의됩니다. sw-description 파일에 직접 정의됩니다.

이 접근 방식은 수동 복구가 불가능한 헤드리스 또는 원격 장치에 필수적인 기능인 내장된 롤백 안전성을 통해 원자적 시스템 업데이트를 보장합니다.