Create custom Linux-based systems - Yocto Project 개요
Yocto Project란?
Yocto Project(이하 Yocto 또는 YP)란 하드웨어 아키텍처에 관계 없이 임베디드 환경을 구축할 수 있도록 도와주는 툴.시작하기 전에 알아둘 것
용어
재미있는 것은 YP는 baking 컨셉으로 되어있기 때문에 친숙한 용어가 나옵니다.
빌드할때도 레시피를 참고하여 베이킹을 하는듯한 컨셉입니다.
용어
|
설명
|
Bitbake
|
Yocto Project의 Build engine
|
Metadata
|
Bitbake가 분석하는
모든 파일
( *.bb / *.bbappend / *.conf / *.inc …)
|
Layer
|
recipe / class / conf / header file이 구성된 폴더 형태
|
Recipe
|
*.bb / *.bbappend 파일
|
Class
|
*.bbclass 파일
|
Configuration file
|
*.conf 파일
|
Header
|
*.inc 파일
|
구성 컨셉
YP를 처음 접하는 사람들은 단순 빌드 tool이라고만 알고 사용할수도 있습니다. 하지만 아래 컨셉과 같이 Yocto는 다음 사항을 모두 포함합니다. Poky(기본 뼈대), Openembedded(확장 layer, 빌드엔진 bitbake)부터 문서, 각종 tool 모든 사항을 포함한 것이 Yocto Project입니다.
빌드 컨셉
Yocto Project의 빌드 컨셉은 아래 아키텍쳐를 참고하시면 됩니다.
용어에서 쓴것처럼 YP는 베이킹을 하는 컨셉입니다.베이킹을 하기 위해서는 레시피와 도구 그리고 만든 후에 잘 만들어졌는지 검사를 해야겠죠? YP는 이러한 컨셉을 굉장히 잘 살렸습니다.
저의 취미 중 하나가 베이킹인데 스콘을 만들때는 아래와 같이 만듭니다.
제빵은 레시피와 정확한 용량(g)이 굉장히 중요하기 때문에 정확한 절차를 따라야합니다!
결과물 : 스콘
재료 : 중력분 300g, 설탕 30g, 소금 2g, 베이킹파우더 6g, 버터 60g, 계란 1개, 우유 100ml, 계란물 약간
레시피
1. 중력분300g과 베이킹파우더6g을 채에 걸러 넣습니다.
2. 설탕 30g 소금2g을 넣고 부드럽게 섞습니다.
3. 버터를 잘라 넣고 밀가루와 어우러지도록 손으로 으깨면서 섞습니다.
4. 계란을 풀어서 넣습니다. (계란물을 조금 남겨둬야합니다.)
5. 우유 100ml를 넣습니다.
6. 끈기가 생기지 않도록 가볍게 반죽을 만듭니다.
7. 반죽을 네모난 모양으로 약 2.5~3cm 두께로 만들어 랩에 감싸 냉장고에 30분 숙성합니다. (tip. 마지막에 반죽을 접어서 만들면 완성된 스콘에 겹이 생깁니다.)
8. 원하는 모양으로 자른 후 계란물을 윗부분에만 살짝 바릅니다.
9. 예열된 오븐 190도에서 15~20분간 굽습니다.
10. 모양이 못생긴게 있다면 걸러낸 후 손님에게 대접합니다.
|
뜬금없이 베이킹이야기를 한 이유는 YP의 결과물을 만들어내는 절차도 비슷하기 때문에 이해를 돕기 위해서입니다.
YP의 빌드 절차를 베이킹과 비교해보겠습니다.
예) arm보드에 올라갈 u-boot를 빌드
결과물 : bootloader 이미지
재료 : bootloader 소스, 툴체인
빌드 방법
1. git clone으로 bootloader 소스를 다운받습니다.
2. 'export CROSS_COMPILE=arm-....' 커맨드로 corss toolchain을 설정합니다.
3. 'make ${TARGET_CONFIG}' 커맨드로 config를 로드합니다.
4. 'make -j8'과 같이 빌드합니다.
5. 빌드된 이미지에 의존성 에러, 예측가능한 런타임 에러 등 다양한 에러를 체크합니다.
6. 문제가 없다면 빌드된 이미지를 signing(secure)합니다.
7. signing된 이미지를 특정 폴더에 copy합니다.
|
어떤가요?
베이킹에서는 재료(중력분, 설탕 ....)를 이용하여 레시피대로 베이킹 후 못생긴게 있는지 검열하여 걸러내고 결과물을 손님에게 대접했습니다.
YP도 마찬가지로 재료(소스, 툴체인)을 이용하여 레시피대로 베이킹(빌드 옵션 및 방법) 후 각종 에러를 검열하여 걸러내고 결과물인 이미지를 생성하여 특정 폴더에 copy했습니다.
위의 그림은 얼핏 보기에 복잡합니다만 위에 설명드린것처럼 베이킹의 과정이라고 생각하시면 이해가 쉽습니다.
즉, YP의 빌드 컨셉은 아래 그림으로 이해가 가능할거라 생각합니다.
Poky(요리책이라고 생각하시면 쉽습니다.)와 Bitbake(제빵사)
Bitbake(제빵사)가 Poky(요리책)을 보고 재료를 가져와 결과물을 만드는 과정.
=> Bitbake(빌드엔진)이 Poky(메타데이터)를 참고하여 image(결과물)을 생성하는 과정.
이 과정에는 위의 예제와 같이 source download ~ 이미지 산출의 모든 과정이 포함됩니다.
컨셉은 여기까지만 소개하고 디테일한 빌드의 과정은 다음편에 포스팅하겠습니다
Yocto Project Layer
YP는 하드웨어 아키텍처와 관계 없이 임베디드 환경을 구축할 수 있는 툴이라고 설명을드렸습니다. 어떻게 이것이 가능할까요?YP는 위와 같은 구조를 가지고있기 때문입니다.
3층에 있는 Hareware-Specific BSP layer를 포팅하면 YP에 모든 기능을 그대로 사용할 수 있게 구조화되어있습니다.
즉 YP는 우리가 모든 레시피, 재료, 요리사를 준비했으니 H/W layer만 맞추면 우리가 준비한 모든것을 그대로 사용할 수 있어. 라고 말하고 있는것과 같습니다.
개요는 이것으로 마치고 다음 포스팅에서부터 세부적인 사항을 확인해보겠습니다.




댓글
댓글 쓰기