do{학습}while

YOCTO) 메타 데이터 종류, 메타 데이터 파일 종류 본문

YOCTO

YOCTO) 메타 데이터 종류, 메타 데이터 파일 종류

하이오야이 2025. 3. 23. 19:13

Yocto는 실제로 소스를 직접 포함하지 않고, 어떻게 빌드할지를 정의한 데이터 (즉, 메타데이터)를 사용해서 이미지를 만드는 방식이야.


✅ Yocto 메타데이터(Metadata)란?

패키지를 어떻게 다운로드하고, 빌드하고, 설치하고, 패키징할지 정의한 모든 설정 파일들을 의미해.


이 메타데이터는 주로 레시피, 설정 파일, 클래스, 레이어 구성 등으로 구성돼.


📁 메타데이터 디렉토리 예시

meta/ 
├── conf/ 			← 설정 파일들 (layer.conf, distro.conf 등) 
├── recipes-core/ 	← 레시피 모음 (busybox, init 등) 
├── classes/ 		← 클래스 (.bbclass) 
├── files/ 			← 패치/설정 파일

🧩 메타데이터의 주요 파일 종류

파일  확장자설명
.bb 레시피 (BitBake Recipe) – 빌드 방법 정의
.bbappend 레시피 확장 – 기존 .bb에 기능 추가/변경
.inc 공통 include 파일 – 변수 정의 등
.conf 설정 파일 – 빌드 환경이나 레이어 정보 정의
.bbclass 클래스 – 재사용 가능한 함수와 변수 정의

✅ 메타데이터 종류별 역할 정리


1️⃣ .bb – 레시피 파일

  • 어떤 소스를 사용하고, 어떤 빌드 시스템(CMake, Make 등)으로 어떻게 빌드할지 정의
  • 즉 테스크를 정의할 수 있음
# 예: busybox_1.35.0.bb 
DESCRIPTION = "Tiny utilities" 
SRC_URI = "https://busybox.net/downloads/busybox-1.35.0.tar.bz2" 
do_compile() { 
	oe_runmake 
}

2️⃣ .bbappend – 레시피 확장 파일

  • 기존 레시피에 내용을 덧붙이거나 수정
  • 커널, BSP, vendor-specific 확장에 자주 사용
 
# busybox_%.bbappend 
SRC_URI += "file://myconfig.cfg"

📌 .bbappend는 해당하는 .bb 파일이 존재할 때만 유효함


3️⃣ .conf – 설정 파일

파일 역할
local.conf 로컬 빌드 설정 (MACHINE, DISTRO, THREAD 수 등)
bblayers.conf 포함할 메타레이어 목록 정의
distro.conf DISTRO 수준 설정 정의 (예: poky, custom-distro)
layer.conf 각 레이어의 이름, 우선순위, bbpath 설정

예:

MACHINE ??= "qemuarm64" 
DISTRO ?= "poky"

4️⃣ .inc – include 파일

  • 공통 변수나 함수 정의를 여러 .bb에서 재사용할 수 있게 따로 분리
# qt5.inc 
LICENSE = "GPL" 
DEPENDS += "qtbase"
# qt5-webengine.bb 
require qt5.inc

5️⃣ .bbclass – 클래스 파일

  • 특정 동작(예: autotools, cmake, kernel 등)의 공통 로직을 정의
  • 테스크의 재사용성을 증가시키기 위해 클래스 파일에 함수를 정의
  • 종속성을 설정해주는 역할을 하는구나(`addtask before ... after ...`)
  • inherit 키워드로 .bb 안에서 상속하여 사용
# recipe 
inherit autotools pkgconfig
# autotools.bbclass 
do_configure() { 
	./configure ${EXTRA_OECONF} 
}

🎯 메타데이터 종류 요약표


종류 확장자 역할
레시피 .bb 빌드 단위 정의
레시피 확장 .bbappend 레시피 수정/확장
설정 파일 .conf 환경, 머신, 디스트로, 레이어 설정
공통 include .inc 변수/함수 공용 정의
클래스 .bbclass 공통 동작 함수 정의

✅ 관련 디렉토리 위치 예시

meta/ 
├── conf/ 
│ ├── layer.conf 
│ ├── distro/poky.conf 
├── classes/ 
│ ├── base.bbclass 
│ ├── autotools.bbclass 
├── recipes-core/ 
│ ├── busybox/ 
│ │ ├── busybox_1.35.0.bb 
│ │ └── busybox_%.bbappend

'YOCTO' 카테고리의 다른 글

YOCTO) 기본 문법  (0) 2025.03.29
YOCTO) 자주 사용하는 디버깅 명령어  (0) 2025.03.23
YOCTO) 변수 cheat_sheet  (0) 2025.03.23
YOCTO) Source를 fetch하는 방식  (0) 2025.03.23
YOCTO) 빌드 시간을 단축 시간을 방법  (1) 2025.03.23