개요

OpenEmbedded와 Yocto는 bitbake 빌드 시스템에 기초를 두고 있습니다. OpenEmbedded의 구조를 이해하기 위해서는, OpenEmbedded 속에 정의된 Task와 class들을 따라가면서 bitbake에 대해 이해하는 것이 좋습니다.

Bitbake는 OpenEmbedded의 빌드 툴로, Bitbake가 하는 일은 기본적으로, bitbake의 metadata 안에 정의된 Task들을 다루고, Task 의존성을 정하고, 그들을 알맞은 순서에 배치한 후 실행시키는 것입니다. 우리는 Task를 하나의 함수로서 생각할 수 있으며, 각 Task들을 다른 Task들의 앞이나 뒤에 셋팅되고 실행될 수 있습니다. 또, 각 Task들은 이러한 의존성에 대한 flag들을 변수로서 가지고 있습니다.

동작 원리

Bitbake는 준비한 메타데이터(metadata)를 분석(parse)하여 프로젝트를 실행(run)합니다.
메타데이터는 크게 세 가지가 있습니다.

  • Configuration Files (설정 파일)
  • Classes (클래스 파일)
  • .bb files (Bitbake files, or Bitbake recipe)

메타데이터

Configuration Files

설정 파일은 모든 패키지와 타스크들에게 영향을 끼치는 전역적인(global) 특성을 가집니다.

Bitbake는 제일 처음 conf/bblayers.conf 설정 파일을 찾기 위해서 현재 작업 디렉토리(current working directory)를 조사합니다. 그리고 이 설정파일에는 레이어 리스트들의 디렉토리를 BBLAYERS라는 변수로 설정합니다. 그리고, 각 리스트들의 디렉토리마다, conf/layer.conf 파일을 찾고, 발견된 디렉토리를 LAYERDIR이라는 변수로 지정하게 됩니다. conf/layer.conf 파일들 안에는 BBPATH와 함께 다른 variable 들도 사용자가 설정을 해야 합니다.Bitbake는 사용자가 설정한 BBPATH 디렉토리 안에서 conf/bitbake.conf 파일을 찾습니다. 이 설정파일은 다른 메타데이터에서 사용될 지시문을 포함하고 있습니다.

Bitbake 툴을 사용하는 데에 있어서 변수를 정의하거나 지시문을 포함하는 것은 .conf 파일에서만 허용됩니다.

Classes

Bitbake 클래스들은 기본적인 상속 메커니즘을 따르고 있습니다. 상속 지시문이 발견될 때, 클래스들은 parse됩니다. BBPATH디렉토리 안의 classes/ 디렉토리에 클래스파일들이 있습니다.

.bb files

Bitbake는 recipe를 보고 Task들을 관리, 실행하는데, 이 때의 recipe가 바로 .bb 파일입니다. 하나의 .bb 파일은 실행되어야 할 Task들의 논리 단위(a logical unit)라고 생각할 수 있으며, 이 파일들은 BBFILES라는 변수(BBFILES 변수는 conf/layer.conf 파일 안에서 설정할 수 있습니다.)에 위치 해 있습니다.

메타 데이터들을 준비했다면, 반드시 BBPATH 디렉토리에서 bitbake 명령어를 사용하여 프로젝트를 실행할 수 있습니다.

bitbake 명령어를 사용하면, bitbake는 .bb 파일들을 읽어서 빌드 작업을 실행하게 됩니다.

참고