목차
- 들어가기
- 주요특징
- Architecture
- A/B System 업데이트 in Mender
- Mender Server
- 보드 & 부트로더 지원
- Mender의 수익구조
- 마무리
들어가기
이전 포스팅(링크)에서 Yocto 내 존재하는 여러 OTA 솔루션들을 대략적으로 비교해보았다.
이번 포스팅에서는 해당 솔루션들 중에 가장 높은 점수를 받은 Mender (링크)에 대해서 알아보기로 하자.
기본적으로 Mender 솔루션은 Yocto에 최적화가 되었있다.
아래는 Mender 홈페이지에서 볼 수 있는 유투브 소개 동영상이다.
Mender는 기본적으로 서버, 클라이언트 모두 Apache 2.0 라이센스로 제공된다.
주요특징
- 최소한 4개의 파티션 레이아웃을 가져야 한다. rootfs 파티션(2개), extra 파티션(2개), boot 파티션, data 파티션이 그것이다. 자동복구를 위해서 U-Boot와 GRUB에 의존성을 가진다. 그런데 Mender 홈페이지를 확인해보면 GRUB에 대한 지원은 언급은 없고 boot 파티션, 2개의 rootfs, data 파티션 이렇게 4개가 필수라고 한다.
- kernel을 포함한 OS 파티션이다. active/passive 파티션을 가지고 있다. 업데이트가 완료되면 기존 변경사항이 지워질 수 있으므로 readOnly여야하며 사용자 데이터들은 data 파티션에 저장이되어야 한다.
- Mender Server를 통한 HTTPS로 이미지를 다운로드 받을 수 있으며 로컬 파일시스템에 저장된 이미지 또한 사용가능하다.
- 클라이언트/서버 모두 안정적이며 활발히 개발되고 있다. 두 솔루션 모두 Golang으로 구현되었다.
- 서버에는 압축된 [rootfs 이미지 + meta 데이터] 가 저장된다.
- 클라이언트는 A/B system 업데이트와 streaming 업데이트를 지원한다. 즉, 업데이트를 위한 추가적인 공간이 필요가 없다.
- 업데이트 이후 디바이스에 문제가 생겼을 경우, 자동적으로 rollback이 일어난다.
- Yocto에서 쉽게 적용할 수 있다. 반면 Yocto가 아닌 개발환경에서는 적용이 쉽지 않다.
- 업데이트 이미지는 runtime시에 다운로드되며 이미지 적용이후에 재부팅을 요한다.
- 서버와의 연결은 TLS로 보호되며 업데이트 이미지는 RSA 또는 ECDSA로 암호화된다.
Architecture
클라이언트가 HTTPS를 통해서 서버에 업데이트 존재 유무를 주기적으로 폴링한다. 오직 TLS 커넥션만 허용이 된다. 그 외의 연결에 대해서는 서버에서 거부된다. 클라이언트는 TLS 인증서를 rootfs에 가지고 있다. 해당 인증서는 Yocto 빌드시에 rootfs에 포함되는 구조이다.
OTA에서 Security는 중요한 부분이다. Mender 솔루션은 3rd security 회사와 지속해서 보안관련된 협의 및 검증을 받고 있다고 한다.
A/B System 업데이트 in Mender
Mender 클라이언트는 User 레벨 시스템 데몬이다. 클라이언트는 업데이트 이미지가 발견되면 Passive 파티션에 이미지를 저장하게 된다. 참고로 업데이트 이미지는 sdimg 확장자를 가진다.
이미지 저장이 끝나면 Mender 클라이언트는 U-Boot에게 passive 파티션으로부터의 재부팅을 지시한다.
부팅이 성공하면 passive 파티션은 최종적으로 active 파티션으로 변경된다.
부팅이 실패하면 성공했던 파티션으로 rollback되어 재부팅이 일어난다.
아래는 Mender의 파티션 정보이다.
Mender Server
- 연결된 디바이스의 개수
- 업데이트 이미지의 사이즈
- 업데이트 확인 주기
- 네트워크 상황
보드 & 부트로더 지원
- U-Boot 패치
- u-boot-fw-utils 빌드
- 파티션 레이아웃 설계
- 사용하는 Yocto version에 맞은 빌드구축
Mender의 수익구조
Hosted Mender
Software Support
- 설치 및 운영에 대한 이슈지원
- 특정 Yocto 버전에 맞게끔 Mender를 유지할 수 있도록 기술지원 (Yocto 혹은 Mender 자체 업그레이드)
- 제품팀과 월례 미팅을 통한 Mender 로드맵에 영향
Professional Services
- U-Boot, mender 클라이언트 등의 빌드와 인스톨 지원
- Mender 클라이언트 수정 가이드
- 파티션 테이블의 설계 및 설치
- Mender 서버의 설치와 관련된 기술지원
- Mender 서버/클라이언트 등 환경에 대한 테스트 방법 등 가이드
- Mender를 CI에 통합하는 방법에 대한 가이드
- 리눅스 시스템 구조 설계 및 제안
- Yocto 자체에 대한 트레이닝
- Yocto 빌드 customization
- Yocto layer 개발
- Yocto recipe 개발 (새로운 패키지, SOC 커널 등)
Board Integration
마무리
'소프트웨어 > OTA(on-the-air)' 카테고리의 다른 글
Eclipse hawkBit 간략하게 살펴보기 (0) | 2019.01.22 |
---|---|
RAUC(Robust Auto-Update Controller) 살펴보기 (0) | 2019.01.21 |
Clear Linux & swupd 살펴보기 (0) | 2019.01.18 |
SWUpdate (Software Update for Embedded Systems) 살펴보기 (0) | 2019.01.16 |
OTA 솔루션비교 in Yocto (0) | 2019.01.15 |