목차
- 들어가기
- 주요특징
- bundle
- 명령어 살펴보기
- 마무리
들어가기
swupd는 Clear Linux OS의 업데이트를 담당하는 OS 레벨의 업데이트 소프트웨어이다. 기본적으로 아래와 같은 작업을 수행한다.
- 시스템 업데이트 이미지의 유효성 체크
- 이미지 다운로드 및 인스톨
- 시스템 소프트웨어 유효성 체크
주요특징
- File-based 업데이트만 지원한다. 하나의 파티션을 최신의 버전으로 유지하는 솔루션이다. 파티션 레이아웃이나 부팅절차에 대한 고려가 없다.
- OS에 속하는 파일들은 read-only이다. User 데이터는 read-write이며 업데이트 후에도 그대로 유지된다. 인스톨되는 OS의 경우 core와 bundle로 구별될 수도 있다. bundle은 설정에 따라 인스톨안될수도 있다.
- libcurl을 사용해서 업데이트 이미지를 가져온다. 따라서 libcurl에서 지원하는 모든 URL 스키마를 지원한다.
- OS File을 rootfs만을 업데이트한다. 부트로더, 커널, 펌웨어 등은 커스텀 플러그인을 개발해야한다.
- Clear Linux OS에 의해서 관리되고 있어서 코드는 상대적으로 안정적이다. 아무래도 특정 OS에 종속적이다 보니 관련되지 않은 code의 경우 늦게 적용되거나 거부될 수 있다.
- Yocto를 통해서 incremental updates과 deltas 업데이트를 지원한다.
- 별도의 업데이트 파티션이 존재하지 않으므로 클라이언트 디바이스에서는 적어도 업데이트 이미지보다 큰 사이즈의 용량이 남아있어야 한다. 남아있는 용량이 부족할 경우, 업데이트는 진행되지 않는다.
- Fallback 솔루션은 지원되지 않는다.
- 업데이트 중에 '재부팅' 등이 발생할 경우, rootfs가 일시적으로 불안전한 상태로 남아있을 수 있다. 업데이트가 다시 시작되고 마무리가 되면 정상적으로 상태로 돌아온다.
- 런타임 업데이트 또한 위험하다. 파일이 계속 변경되는 상황이기 때문에 시스템을 일시적으로 멈추는 등의 솔루션이 필요하다.
- 서비스 레벨의 재시작은 필요하지만 재부팅이 필수적이지는 않다. 다만 재부팅 없이 서비스 재시작으로 셋팅할 경우, 예상하지 못한 이슈가 발생할 수 있다.
- 리눅스 IMA, Smack, SELinux와 호환성을 가진다. dm-verity와는 호환되지 않는다. 서버와 통신은 HTTPS를 사용하고 업데이트 이미지의 signing 또한 지원된다.
bundle
$ sudo swupd bundle-list : 현재 설치된 bundle을 확인하는 명령어
$ sudo swupd bundle-list --all : 설치가능한 모든 bundle을 확인하는 명령어
$ sudo swupd bundle-add [bundle name] : 번들을 설치하는 명령어
$ sudo swupd bundle-remove [bundle name] : 인스톨된 번들을 제거하는 명령어
명령어 살펴보기
Installed version: 23330Version URL: https://download.clearlinux.org/update/Content URL: https://cdn.download.clearlinux.org/update/
이 명령으로 현재 설치된 이미지의 버전정보와 Version/Content 서버의 URL을 알 수 있다. 위의 URL로 브라우저로 접속을 해보면 아래와 같이 버전별 디렉토리를 확인할 수 있다. 즉, swupd가 인지할 수 있도록 구축된 소프트웨어 업데이트 서버라고 보면된다. Version 서버는 버전정보를 Content 서버는 실제 파일 및 메타정보를 제공해준다.
자동업데이트 기능은 on/off가 가능하다.
$ sudo swupd autoupdate : 자동업데이트 설정값 확인
$ sudo swupd autoupdate --disable : 자동업데이트 off
$ sudo swupd autoupdate --enable : 자동업데이트 on
아래 명령으로 특정 버전으로 소프트웨어를 업데이트할 수 있다.
$ sudo swupd update -m 23330
아래 명령으로 설치된 시스템 이미지의 verification을 수행한다.
$ sudo swupd verify
마무리
'소프트웨어 > OTA(on-the-air)' 카테고리의 다른 글
Eclipse hawkBit 간략하게 살펴보기 (0) | 2019.01.22 |
---|---|
RAUC(Robust Auto-Update Controller) 살펴보기 (0) | 2019.01.21 |
SWUpdate (Software Update for Embedded Systems) 살펴보기 (0) | 2019.01.16 |
Mender (Over-the-air software updates) 솔루션 살펴보기 (0) | 2019.01.16 |
OTA 솔루션비교 in Yocto (0) | 2019.01.15 |