티스토리 뷰

Yocto Project를 보다 보면 OpenEmbedded, BitBake, Poky 등 다양한 용어가 나오는데 문서를 읽어 보아도 OpenEmbedded, Poky는 정확히 어떤 것을 말하는지 감이 잘 오지 않는다. 이들 용어들이 프로젝트 이름, 지원 범위 등 여러 용도로 사용하기 때문이기도 하지만, 정확히 이해하기 위하여는 Yocto Project가 발전한 과정을 알 필요가 있다. 



1. OpenEmbedded


Yocto Project의 근원은 2001년 발표한 Linux 기반의 PDA인 Sharp Zaurus SL-5000 시리즈 부터 라고 할 수 있다.


 Sharp는 open source license에 따라 해당 제품의 ROM image의 소스코드를 공개 하였고, 이를 기반으로 2002년에 OpenZaurus 프로젝트가 시작되었다. 하지만 프로젝트가 발전함에 따라 debian 기반의 소스 빌드 방식을 사용한 OpenZaurus는 여러 target architecture를 지원하는데 한계를 가지게 되었다. 

이같은 문제점을 개선하기 위하여 2003년에 OpenEmbedded 가 시작되었고, OpenZaurus의 패키지들이 이 프로젝트에 통합되었다. OpenEmbeeded는 크게 빌드 프로그램인 python으로 작성된 BitBake 와 빌드 명세인 metadata(recipe와 관련된 설정 파일 들)로 구분된다. 2004년에 BitBake도 다른 make 툴처럼 하나의 독립적인 프로젝트로 분리되었다. 그래서 BitBake는 별도의 독립적인 프로젝트로 되고, OpenEmbedded는 BitBake 용 metadata를 관리하는 프로젝트가 된다. 




2. Poky Linux


OpenEmbedded 는 빠르게 성장하여 7천여개의 recipe와 300여개의 machine을 지원하게 되었다. 하지만 이와 같이 급격히 커지게 되고, 개발자가 직접 commit 하는 push 모델로 운영하다 보니 충돌 관리가 쉽지 않게 되고, 상업적인 지원도 쉽지 않게 되었다.

이를 개선하기 위하여 다양한 시도가 있었는데, 그 중 하나가 Poky Linux 이었다. OpenedHand라는 스타트업이 2006년 발표한 Poky Linux는 기존 OpenEmbedded를 깔끔하게 정리한 프로젝트로 다음과 같은 특징이 있었다. 

  • 800여개 정도의 선별된 recipe
  • Qemu 가상 환경 및 SDK 빌드 지원 
  • 아주 잘 정리된 manual


하지만 이 회사는 2008년에 Intel에 합병되었고, Poky는 Atom 기반의 장비에 집중되는 것으로 보였다.



3. Yocto Project


Yocto Project는 Linux Foundation workgroup 으로 2010년에 발표되었다. Poky Linux를 기반으로 embedded linux 배포본 개발 절차를 개선하기 위한 프로젝트라고 보면 된다. 

2011년 OpenEmbedded-Core(OE-Core) 로 metadata를 Poky에서 분리하였다. 최근에 말하는 OpenEmbedded라는 것은 이 OE-Core 를 말한다 (참고로 이전의 OpenEmbedded는 OE-Classic 이라고 한다).


OE-Core 가 포함하는 범위는 다음과 같다. 

  • ARM, x86, PowerPC, MIPS 와 같은 주요 아키텍쳐 지원
  • 실제 하드웨어가 아니라 QEMU emulated machine으로 지원
  • GUI도 테스트 용도로 X-based GUI(Sato) 하나만 지원


즉, 한마디로 말해서 OE-Core는 실제 하드웨어 의존적이지 않은 기반이 되는 metadata set이라고 볼 수 있다. 


Yocto Project에서 BitBake의 layering 기능으로 굵직한 패키지별로 나누고 있다. 예를 들어 각각의 BSP는 각각의 BSP metadata로 분리되고, 소프트웨어 모듈은 meta-qtmeta-browsermeta-officemeta-nodejs와 같이 별도로 layering 되고 있다. 물론 기존과 같이 개발자가 직접 commit하는 push model 이 아니라, pull model로 poky, openembedded를 관리하기 때문에 이전처럼 프로젝트가 발산할 가능성도 없다.



4. 결론


이정도면 Yocto Project의 용어가 지칭하는 것을 이해할 수 있을 것이다. 

  • BitBake: 2004년 OE-Classic에서 분리된 빌드 툴
  • OpenEmbedded-Core(OE-Core): 2011년 Poky에서 분리한 core metadata. Poky에서는 meta-openembedded 폴더
  • OpenEmbedded: BitBake와 OE-Core
  • Poky: OE-Core를 포함한 전반적인 배포본을 만들 수 있는 metadata와 BitBake
  • Yocto Project: Linux Foundation에서 관리하는 embedded linux 배포본 빌드 시스템 전체


5 .참고



    댓글
    댓글쓰기 폼