블로그 포스트 시리즈의 제 1 부에서는 업데이트 시스템 구현의 문제점에 대해 소개했습니다. 우리는 OSTree 프로젝트와 Qt for Device Creation 기능에 업데이트 하는 방법에 대해 살펴 보았습니다. 두 번째 부분에서는 Qt OTA Update 모듈에서 제공하는 툴링 및 API에 대해 설명했습니다. 업데이트를 생성하는 방법을 보여줌으로써 두 번째 블로그 게시물을 마감했습니다. 이 블로그 게시물에서는 생성 된 업데이트를 정적 HTTP 서버로 내보내고 이 서버에 시스템 업데이트를 쿼리하도록 클라이언트 장치를 구성합니다. 다음은 리눅스 생태계에서 OSTree 채택에 대한 짧은 역사 교훈이 될 것입니다. 하지만 먼저 Technical Preview 릴리스 이후 Qt OTA 업데이트 모듈의 새로운 기능을 간략하게 살펴 보겠습니다.

 

상태 업데이트.

Qt 5.8 부터 Device Creation 용 OTA Update 모듈은 Technology Preview 모듈에서 완전히 지원(fully supported)되는 모듈로 업그레이드 됩니다. Qt OTA Update 1.0의 새로운 기능 및 개선 사항 중 일부는 다음과 같습니다. initramfs는 OTA 업데이트 기능 (부팅 시간 최적화시 유용함) 사용에 대해 더 이상 까다로운 요구 사항이 아니며, 원격 OSTree 리포지토리에 액세스하는 방법을 구성하는 새로운 API, 사용자 편의를 위한 업데이트 프로세스,  API 네임 일부 변경, 향상된 데모 응용 프로그램 및 qt-ostree 도구 (이미지 및 업데이트 생성 및 미세 조정 용)에 대한 새로운 명령 줄 인수가 포함되어 있습니다.

 

저장소 내보내기.

앞서 언급했듯이 새로운 업데이트를 생성하면서 두 번째 블로그 게시물을 마감했습니다. 업데이트 (또는 시스템 스냅 샷)는 OSTree 저장소에 대한 커밋입니다. 기본적으로 qt-ostree 는 이 저장소를 WORKDIR/ostree-repo/ 에 저장합니다. 로컬 테스트를 위해 –start-trivial-httpd를 qt-ostree에 전달할 수 있습니다. 이렇게하면 WORKDIR/httpd/httpd-address 파일에 지정된 주소의 로컬 호스트에서 액세스 할 수있는 간단한 HTTP 서버가 시작됩니다. 실제 시나리오에서는 프로덕션 서버에서 이 저장소를 익스포트(export) 하려고 합니다. WORKDIR/ostree-repo/ 디렉토리의 내용을 서버의 전용 경로에 복사하는 것만 큼 간단합니다.

–start-trivial-http는 HTTPS를 지원하지 않으므로 필자는 개별적으로 Apache 웹 서버를 구성했습니다. 이 서버에는 TLS 클라이언트 측 인증이 필요합니다. 필자의 경우 OSTree 저장소의 URL은 https://www.b2qtupdate.com/ostree-repo 입니다. 구성된 웹 서버가 내 작업용 PC 에 있기 때문에 URL의 ostree-repo/ 디렉토리는 WORKDIR/ostree-repo/에 대한 심볼릭 링크입니다. 새 시스템 스냅 샷을 생성 할 때마다 https://www.b2qtupdate.com/ostree-repo 에서 즉시 사용할 수 있습니다. 다음 단계는 클라이언트 장치를 이 주소로 지정하는 것입니다.

 

장치 구성.

이전 블로그 게시물의 데모를 확장하여 서버에 액세스하는 방법에 대한 구성을 추가해야 합니다.

 

여기서는 클라이언트 장치가 생성 된 OSTree 저장소에서 내 보낸 URL을 가리키고 있습니다. 이 구성을 사용하려면 GPG 로 알려진 키의 서명이 업데이트 되어야 합니다. 또한 클라이언트 및 서버 TLS 인증에 사용되는 인증서 파일 (장치의)에 대한 경로도 제공합니다. 신뢰할 수 있는 키 및 인증서 고정 기능이 있는 키링은 초기 이미지를 만들 때 (장치 통합 단계 중) 수행해야 합니다. 현재 구성은 다음을 호출하여 업데이트 할 수 있습니다.

 

이후의 서버 호출 (예 : 원격 스냅 샷에 대한 메타 데이터 가져 오기)은 이 업데이트 된 구성을 사용합니다.

다른 구성에서는 암호화 되지 않은 HTTP를 사용하여 다음과 같이 볼 수 있습니다.

저장소를 scheme : // host : port / my-product / system-updates /로 내 보낸 경우 대신 해당 URL을 가리키고 있습니다. 완전한 데모 응용 프로그램은 여기에서 사용할 수 있습니다.

 

OSTree 채택.

시스템 업데이트는 영원한 관심 분야입니다. 작년과 올해 임베디드 리눅스 컨퍼런스에서는 이 주제에 대한 회담이 열렸습니다. OSTree는 뛰어난 대안을 가지고 있기 때문에 많은 피드백을 얻고 있습니다. OSTree는 GNOME 을위한 고속 연속 전달 및 테스트 인프라의 연구 벤처로부터 시작되었습니다. Linux 에코 시스템의 보급 확대로 채택된 기술입니다. OSTree는 새로운 Linux 배포판의 핵심 인 Project Atomic, Endless OS, Papyros 에서 사용되고 있습니다. Automotive Grade Linux는 AGL 참조 플랫폼에 대한 OSTree 통합을 연구하고 있습니다. Flatpak (Linux 응용 프로그램을 배포하기위한 프레임 워크)은 OSTree를 사용하여 응용 프로그램과 런타임을 배포하고 관리하는 또 다른 흥미로운 프로젝트입니다. 우리가 볼 수 있듯이, OSTree는 데스크톱, 서버 및 임베디드 시스템에 대한 다양한 프로젝트에서 채택되고 있는 최신 기술입니다.

당신의 장치에도 견고하고 현대적인 업데이트 시스템을 원하십니까? Qt OTA Update 1.0 모듈은 Qt 5.8 for Device Creation 을 통해 편리하고 완벽한 Qt API의 OSTree 지원을 제공합니다.

 

결론.

이것으로 Qt OTA Update 모듈을 소개하는 일련의 블로그 게시물을 마칩니다. Qt for Device Creation 을 직접 체험하고 검토해 보십시요. 감사합니다.

 

 

본 문서는 qt.io 의 “Over-the-Air Updates, Part 3: Repository Configuration and Handling” 을 번역한 블로그로 의역 및 오역 이 있을 수 있습니다.