반응형
리눅스 업데이트 프레임워크, 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/
반응형