목차
- 리모트 저장소 초기화
- 리모트 저장소 내용 추가
- 로컬 저장소 초기화
- 로컬 저장소 활용하기
리모트 저장소 초기화
- /home/kkangeva/example/rootfs : 가상의 rootfs
- /var/www/html/server : libostree 리모트 저장소
- /home/kkangeva/example/local : libostree 로컬 저장소
archive 모드는 서버에서 사용하는 모드다.
이 모드에서는 파일들이 gzip으로 압축이된다. 따라서 Hard Link로 사용할 수 없다.
$ ostree init --repo=/var/www/html/server --mode=archive
이제 첫 번째 커밋을 만들어보자. 그 전에 rootfs가 있어야 한다.
이 부분은 환경이나 제품에 특화되었기 때문에 가정을 할 수 없다.
참고로 libostree에서는 tarball을 지원한다고 한다. 해당 tarball은 Yocto 프로젝트 기반에서 사용할 수 있다.
여기서는 이미 생성된 rootfs가 있다고 가정하겠다. 일단 커밋을 해보자.
최초에 commit의 시간이 어마어마하게 걸린다. 나의 경우에는 2분이상이 걸렸다.
$ ostree commit --repo=/var/www/html/server -s '1st' -b 'example' --tree=dir=/home/kkangeva/example/rootfs
4f95069d97bd9a5cc4443215ff65c95f810f8dfb82d1c9e13d7eb4c5ef577943
리모트 저장소 내용 추가
$ echo "2nd" >> /home/kkangeva/example/rootfs/2nd.txt$ ostree commit --repo=/var/www/html/server -s '2nd' -b 'example' --tree=dir=/home/kkangeva/example/rootfs
$ ostree ls --repo=/var/www/html/server 'example'd00755 1000 1000 0 /-00664 1000 1000 4 /2nd.txtd00755 1000 1000 0 /bind00755 1000 1000 0 /etcd00755 1000 1000 0 /libd00755 1000 1000 0 /pkgdatad00755 1000 1000 0 /sysroot-providersd00755 1000 1000 0 /usrd00755 1000 1000 0 /var$ ostree cat --repo=/var/www/html/server 'example' /2nd.txt2nd$ ostree log --repo=/var/www/html/server 'example'commit a957c7bf3b1bcfddcd98b417823c62e096268a2356337e7190210a444225bbd2ContentChecksum: 548d51741a76edc951d6e0e049613fc2605aef839834555297a9f3a783e88a4dDate: 2019-01-31 02:38:47 +00002ndcommit 4f95069d97bd9a5cc4443215ff65c95f810f8dfb82d1c9e13d7eb4c5ef577943ContentChecksum: e3793b09d37ec99526678a7f64cb6eca1daf53dd3f227c52a2a1570f2c1f591aDate: 2019-01-31 02:35:15 +00001st
브라우저로 접속해보면 아래와 같이 접속이 되는 것을 확인할 수 있다.
로컬 저장소 초기화
$ mkdir /home/kkangeva/example/local$ ostree init --repo=/home/kkangeva/example/local
$ ostree remote --repo=/home/kkangeva/example/local add http http://localhost/server$ ostree remote --repo=/home/kkangeva/example/local add file file:///var/www/html/server$ ostree remote --repo=/home/kkangeva/example/local listfilehttp$ ostree pull --repo=/home/kkangeva/example/local http exampleerror: Commit a957c7bf3b1bcfddcd98b417823c62e096268a2356337e7190210a444225bbd2: GPG verification enabled, but no signatures found (use gpg-verify=false in remote config to disable)
$ ostree config --repo=/home/kkangeva/example/local set 'remote "http"'.gpg-verify false$ cat /home/kkangeva/example/local/config[core]repo_version=1mode=bare[remote "http"]url=http://localhost/servergpg-verify=false
$ ostree pull --repo=/home/kkangeva/example/local http exampleReceiving objects: 44% (43347/96581) 43.4 MB/s 260.2 MBReceiving objects: 51% (49419/96581) 42.5 MB/s 297.8 MBReceiving objects: 75% (73329/96581) 45.2 MB/s 497.3 MB8649 metadata, 87932 content objects fetched; 634368 KiB transferred in 19 seconds$ ostree log --repo=/home/kkangeva/example/local examplecommit a957c7bf3b1bcfddcd98b417823c62e096268a2356337e7190210a444225bbd2ContentChecksum: 548d51741a76edc951d6e0e049613fc2605aef839834555297a9f3a783e88a4dDate: 2019-01-31 02:38:47 +00002nd<< History beyond this commit not fetched >>
$ ostree pull --repo=/home/kkangeva/example/local http example --depth=14 metadata, 0 content objects fetched; 650 B transferred in 0 seconds$ ostree log --repo=/home/kkangeva/example/local examplecommit a957c7bf3b1bcfddcd98b417823c62e096268a2356337e7190210a444225bbd2ContentChecksum: 548d51741a76edc951d6e0e049613fc2605aef839834555297a9f3a783e88a4dDate: 2019-01-31 02:38:47 +00002ndcommit 4f95069d97bd9a5cc4443215ff65c95f810f8dfb82d1c9e13d7eb4c5ef577943ContentChecksum: e3793b09d37ec99526678a7f64cb6eca1daf53dd3f227c52a2a1570f2c1f591aDate: 2019-01-31 02:35:15 +00001st
로컬 저장소 활용하기
$ df --block-size=M
/dev/nvme0n1p2 467923M 250029M 194057M 57% /
$ ostree checkout --repo=/home/kkangeva/example/local example 2nd
$ df --block-size=M
/dev/nvme0n1p2 467923M 250069M 194017M 57% /
$ ostree checkout --repo=/home/kkangeva/example/local example^ 1st$ df --block-size=M/dev/nvme0n1p2 467923M 250109M 193977M 57% /
당연히 checkout 받아온 내용은 서로 다르다.
$ ls 1st/
bin etc lib pkgdata sysroot-providers usr var
$ ls 2nd/
2nd.txt bin etc lib pkgdata sysroot-providers usr var
$ cat 2nd/2nd.txt
2nd
'소프트웨어 > OTA(on-the-air)' 카테고리의 다른 글
libostree (OStree) 예제 - 시작하기 (0) | 2019.01.30 |
---|---|
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 |