본문 바로가기
카테고리 없음

[라즈베리파이] RAUC bundle image file 분석

by makepluscode 2021. 10. 23.
반응형

리눅스 업데이트 프레임워크, RAUC

RAUC 란 무엇인가?

RAUC (Robust Auto-Update Controller) 는 Embedded 디바이스의 Linux firmare (image) 업데이트를 위한 경량 프레임워크이다. RAUC 프레임워크에는 클라이언트를 위한 업데이트 프로그램, 업데이트 아티팩트 생성, 검사, 관리, 수정할 수 있는 도구를 포함한다. Yocto Project/OpenEmbedded, Buildroot 및 PTXdist 등과 호환되며, Embedded 디바이스의 USB update, OTA (Over-the-air programming) 등에 적용될 수 있다.

RAUC 명령어는?

라즈베리파이에서 RAUC Bundle 이미지를 열어보기 위해 RAUC 명령어를 사용한다. 라즈베리파이 yocto 에서 /usr/bin 에 설치되는 실행파일로 다음의 기능을 포함한다.

root@raspberrypi4:/tmp/update-bundle-raspberrypi4#rauc
Usage:
  rauc [OPTION?] <COMMAND>

Options:
  -c, --conf=FILENAME               config file
  --cert=PEMFILE|PKCS11-URL         cert file or PKCS#11 URL
  --key=PEMFILE|PKCS11-URL          key file or PKCS#11 URL
  --keyring=PEMFILE                 keyring file
  --intermediate=PEMFILE            intermediate CA file name
  --mount=PATH                      mount prefix
  --override-boot-slot=BOOTNAME     override auto-detection of booted slot
  -d, --debug                       enable debug output
  --version                         display version
  -h, --help

List of rauc commands:
  extract       Extract the bundle content
  install       Install a bundle
  info          Show file information
  service       Start RAUC service
  status        Show status
  write-slot    Write image to slot and bypass all update logic

Environment variables:
  RAUC_PKCS11_MODULE  Library filename for PKCS#11 module (signing only)
  RAUC_PKCS11_PIN     PIN to use for accessing PKCS#11 keys (signing only)
root@raspberrypi4:/tmp/update-bundle-raspberrypi4# which rauc
/usr/bin/rauc
root@raspberrypi4:/tmp/update-bundle-raspberrypi4# ls -al /usr/bin/rauc
-rwxr-xr-x    1 root     root        186680 Mar  9  2018 /usr/bin/rauc
rauc extract 압축된 RAUC Bundle 이미지 파일을 해제 한다.
rauc install RAUC Bundle 이미지 파일을 설치한다. (실제 업데이트 수행)
rauc info RAUC Bundle 이미지 파일 정보를 확인한다.
rauc service RAUC 서비스를 시작한다.
rauc status RAUC 상태를 보여준다.
rauc write-slot 업데이트 서비스는 수행하지 않고 sloc 에 이미지만 write 한다.

RAUC Bundle 이미지?

RAUC (Robust Auto-Update Controller) 업데이트를 위한 raucb 포멧의 압축 파일 이다. rauc info 명령어로 압축 파일의 내용을 자세히보면 다음과 같다.

root@raspberrypi4:~# rauc info /tmp/update-bundle-raspberrypi4.raucb
rauc-Message: 09:18:00.982: Config option 'statusfile=<path>/per-slot' unset, falling back to per-slot status
rauc-Message: 09:18:00.982: Using per-slot statusfile
rauc-Message: 09:18:00.983: Reading bundle: /tmp/update-bundle-raspberrypi4.raucb
rauc-Message: 09:18:00.986: Verifying bundle signature...
rauc-Message: 09:18:01.323: Verified detached signature by 'O = Test Org, CN = Test Org Development-1'
Compatible:     'RaspberryPi4'
Version:        'v20200703'
Description:    'RAUC Demo Bundle'
Build:          '20211023001449'
Hooks:          ''
Bundle Format:  plain
1 Image:
(1)     core-image-minimal-raspberrypi4.ext4
        Slotclass: rootfs
        Checksum:  8a57bd4a654986388cd8db36fbd0fca45bec86ddf14b938ec62d9907917ce367
        Size:      88080384
        Hooks:
0 Files

Certificate Chain:
 0 Subject: O = Test Org, CN = Test Org Development-1
   Issuer: O = Test Org, CN = Test Org rauc CA Development
   SPKI sha256: AB:32:FD:42:E6:14:23:87:B0:A9:54:A9:2D:23:38:AE:68:76:BD:87:7F:04:BC:D5:EC:29:79:01:12:D0:32:BB
   Not Before: Jan  1 00:00:00 1970 GMT
   Not After:  Dec 31 23:59:59 9999 GMT
 1 Subject: O = Test Org, CN = Test Org rauc CA Development
   Issuer: O = Test Org, CN = Test Org rauc CA Development
   SPKI sha256: FE:9E:11:3E:59:12:92:D8:8A:18:2A:BD:4A:31:DD:E9:F8:9A:AF:41:D6:C5:21:ED:B0:DC:E1:5D:1C:A4:A4:6E
   Not Before: Jan  1 00:00:00 1970 GMT
   Not After:  Dec 31 23:59:59 9999 GMT

rauc extract 명령어로 압축 파일을 풀어보면 다음과 같이 ext4 파일 시스템 img 파일과 manifest 파일이 있다.

root@raspberrypi4:/tmp/update-bundle-raspberrypi4# ls -la
drwxr-xr-x    2 root     root            80 Apr  5  2011 .
drwxrwxrwt    6 root     root           140 Oct 23 09:18 ..
-rw-r--r--    1 root     root      88080384 Apr  5  2011 core-image-minimal-raspberrypi4.ext4
-rw-rw-r--    1 root     root           249 Apr  5  2011 manifest.raucm

manifest 파일을 읽어보면 Bundle 이미지를 명세하는 내용이 포함되어 있다.

root@raspberrypi4:/tmp/update-bundle-raspberrypi4#cat manifest.raucm
[update]
compatible=RaspberryPi4
version=v20200703
description=RAUC Demo Bundle
build=20211023001449

[image.rootfs]
sha256=8a57bd4a654986388cd8db36fbd0fca45bec86ddf14b938ec62d9907917ce367
size=88080384
filename=core-image-minimal-raspberrypi4.ext4

참고자료

https://rauc.readthedocs.io/en/latest/

 

Welcome to the RAUC documentation! — RAUC 1.5.1.131-1564 documentation

© Copyright 2016-2020, Jan Luebbe, Enrico Joerns, Juergen Borleis Revision 1564c3a0.

rauc.readthedocs.io

 

반응형