본문 바로가기
AndroidOverLinux

AoL IOT buildroot 변경사항 (V1.4)

by ㅋㅋ잠자 2020. 11. 21.
반응형




안녕하세요? 


이 buildroot 는 언젠가는 오픈을 해야겠다는 마음에서 시작된 부분입니다.


17년도에 U5PVR / U5MINI 에 들어가는 리눅스 이미지를 만들면서.. 실제로는 설치를 다 하고 백업을 뜨는 형태로 하여 배포가 진행되었습니다.


그렇게 많은 패치가 들어가게 되었고 .. 이력관리가 안되다 보니.. 조금 애로한 점이 많이 있었습니다.



그래서 이번에 IOT 서비스들만 넣는 이미지를 만들 기회가 있어서 이 기회에 이미지를 만드는 스크립트를 공개하게 되었고.. 혼자 뚝딱 뚝딱 만들다 보니 개판으로 만든 것도 없잖아 있습니다.


본래 buildroot 는 작년 9월에 만들었었고.. 그 소스를 기반으로 iot buildroot 를 생성했습니다.


이전에는 제가 bash 스크립트를 잘 사용하지 못하는 하꼬 였어서.. 이제 보니 정말 못만들었구나.. 생각이 들었네요. 일단은 많이는 고치지 못하였고 그 이후에 작성한 스크립트들은 조금 형태가 바뀌어서 작성이 되었습니다.


https://github.com/eddylab-aol/aol_iot_buildroot


지금부터 변경사항을 설명드리겠습니다.


1. 서비스 템플릿 생성


서비스 템플릿 폴더를 생성하여 그 내부에 서비스들을 생성하고 서비스 폴더에 심링크를 하면 buildroot.sh 를 통해 빌드 하게 되면, 이미지에 해당 서비스가 반영이 되는 구조입니다.


root@debian10:~/aol_iot_buildroot/services-template# ls

homeassistant-image  homeassistant-python  mosquitto  template-service  zigbee2mqtt-assistant-image  zigbee2mqtt-image


root@debian10:~/aol_iot_buildroot/services# ls -li

total 4

276776 -rwxr-xr-x 1 root root 517 Nov 21 15:33 buildroot-install.sh

276764 lrwxrwxrwx 1 root root  41 Nov 21 14:59 homeassistant-image -> ../services-template/homeassistant-image/

284406 lrwxrwxrwx 1 root root  31 Nov 21 16:24 mosquitto -> ../services-template/mosquitto/

276765 lrwxrwxrwx 1 root root  39 Nov 21 14:59 zigbee2mqtt-image -> ../services-template/zigbee2mqtt-image/


현재 services 폴더에 mosquitto homeassistant-image zigbee2mqtt-image 가 있기 때문에 3가지 서비스만 설치가 됩니다.


2. 이미지 서비스 / 논 이미지 서비스


일단은 homeassistant-image / homeassistant-python 2개가 있습니다.


하나는 docker 이미지를 가져와서 그냥 /opt/hass 에 풀어두고 chroot 하는 부분이며

다른 하나는 네이티브 설치를 하는 방식입니다.


이 두가지 방식을 고민하다가 image 방식을 선택할 수 밖에 없었습니다. 그 이유는...


1. 네이티브 설치 하다가 쓸데없는 패키지 추가 설치됨

2. 용량이 이미지 방식이랑 비슷함

3. 네이티브 방식의 경우 초기 homeassistant 실행 시, 의존 파이썬 모듈 설치에 시간을 너무 많이 소요


3. 이미지 서비스 업데이트


매번 빌드시에 docker hub 에 있는 latest 이미지를 받아서 rootfs 에 넣도록 변경하였습니다.


각 서비스 템플릿의 host.sh 를 보시면 하기와 같습니다.


bash docker_rootfs_arm.sh hass homeassistant/home-assistant:latest

mv hass.tar.gz files/


상기 docker_rootfs_arm.sh 는 하기 moby 의 이미지 받는 스크립트를 조금 수정한 것입니다.


https://github.com/moby/moby/blob/master/contrib/download-frozen-image-v2.sh


1. targetArch 를 arm 으로 고정

2. 다운 받고 레이어들을 한 곳에 압축을 품

3. 압축 푼 부분을 다시 tar.gz 로 압축


변경사항은 커밋할 때 그냥 바로 커밋해서 보실 수가 없어서 하기 파일과 상기 주소 파일을 diff 떠보시길 바랍니다.


https://github.com/eddylab-aol/aol_iot_buildroot/blob/master/services-template/homeassistant-image/docker_rootfs_arm.sh


이미지는 하기와 같이 저장됩니다.


root@debian10:~/aol_iot_buildroot/services-template/homeassistant-image/files# ls -lih

total 337M

274951 -rwxr-xr-x 1 root root 1.5K Nov 18 23:31 hass.sh

282139 -rw-r--r-- 1 root root 337M Nov 21 16:41 hass.tar.gz

265893 -rwxr-xr-x 1 root root  378 Nov 21 15:14 install.sh





감사합니다.




반응형

댓글