Yocto RK3399 커스텀 Layer 생성
이번 포스팅에서는 Yocto 프로젝트에서 Rockchip RK3399 보드를 대상으로 커스텀 레이어(Custom Layer)를 생성하는 방법에 대해 설명합니다. Yocto의 기본 레이어만으로는 특정 하드웨어나 프로젝트에 특화된 기능을 반영하기 어렵기 때문에, 별도의 커스텀 레이어를 생성하고 이를 관리하는 과정이 중요합니다.
이 글에서는 새로운 레이어를 생성하고, 기본적인 layer.conf
파일을 구성하는 방법을 단계별로 설명합니다. 또한, 예제 레시피를 작성하고, 빌드 과정에서 해당 레시피가 제대로 반영되는지 확인하는 절차까지 상세하게 다룹니다.
1. 커스텀 Layer의 필요성
Yocto 프로젝트는 다양한 패키지와 보드를 지원하기 위해 여러 레이어로 구성됩니다. 일반적으로 다음과 같이 구성됩니다.
- Core Layer: Yocto의 기본 기능과 패키지를 제공하는 레이어입니다.
- BSP Layer: 특정 보드에 대한 지원을 담당하는 레이어입니다.
- Metadata Layer: 사용자 정의 패키지와 구성을 포함하는 레이어입니다.
그러나 프로젝트별로 독자적인 기능과 패키지를 포함시키려면, 별도의 커스텀 레이어를 생성하여 관리하는 것이 바람직합니다.
2. 커스텀 Layer 생성 방법
2.1 Yocto 프로젝트 환경 준비
이미 Yocto 개발 환경이 구성된 상태에서 진행합니다. RK3399 보드를 대상으로 하는 빌드 환경이 준비된 상태에서 작업합니다.
작업 디렉터리를 Yocto 프로젝트 최상위 디렉터리로 이동한 후, 다음 명령어를 실행해 새 레이어를 생성합니다.
cd ~/yocto
source oe-init-build-env
# meta-rk3399-custom 레이어 생성
bitbake-layers create-layer ../meta-rk3399-custom
위 명령어는 meta-rk3399-custom
이라는 새로운 레이어를 생성하고, 기본적인 디렉터리 구조와 파일을 만들어줍니다.
2.2 생성된 디렉터리 구조
생성된 meta-rk3399-custom
디렉터리는 다음과 같이 구성됩니다.
meta-rk3399-custom/
├── conf/
│ └── layer.conf
├── recipes-example/
│ └── example/
│ ├── example_1.0.bb
│ └── files/
└── README
이제 각 구성 요소에 대해 자세히 살펴보겠습니다.
3. layer.conf 구성
meta-rk3399-custom/conf/layer.conf
파일은 Yocto 빌드 시스템이 해당 레이어를 인식하도록 설정하는 파일입니다.
3.1 기본 layer.conf 설정
아래는 layer.conf
의 기본 구성 예입니다.
# meta-rk3399-custom/conf/layer.conf
# 레이어 우선순위 설정
BBFILE_PRIORITY_meta-rk3399-custom = "7"
# 이 레이어의 .bb, .bbappend 파일을 검색할 경로 설정
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"
# COMPATIBLE_MACHINE을 통해 RK3399만 타겟으로 지정
COMPATIBLE_MACHINE = "rk3399"
# BBPATH와 BBFILES에 레이어를 포함하도록 설정
BBPATH .= ":${LAYERDIR}"
BBFILE_PRIORITY
: 레이어의 우선순위를 설정합니다. 숫자가 높을수록 우선순위가 높아집니다.BBFILES
: 이 레이어에서 사용할.bb
와.bbappend
파일의 경로를 지정합니다.COMPATIBLE_MACHINE
: RK3399 보드와 호환되도록 설정합니다.
4. 예제 레시피 작성
4.1 예제 프로그램 작성
먼저 간단한 "Hello, Yocto!" 메시지를 출력하는 프로그램을 작성합니다.
// meta-rk3399-custom/recipes-example/hello/files/hello.c
#include <stdio.h>
int main() {
printf("Hello, Yocto!\n");
return 0;
}
4.2 레시피 파일 작성
이제 위 프로그램을 Yocto 빌드 시스템에 통합하기 위한 레시피 파일을 작성합니다.
# meta-rk3399-custom/recipes-example/hello/hello_1.0.bb
SUMMARY = "Hello Yocto Example"
DESCRIPTION = "A simple example application for Yocto"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835d0a7c6f6325a40a68c526cd82d8c"
SRC_URI = "file://hello.c"
S = "${WORKDIR}"
do_compile() {
${CC} hello.c -o hello
}
do_install() {
install -d ${D}${bindir}
install -m 0755 hello ${D}${bindir}
}
5. 빌드 시스템에 Layer 추가
생성된 레이어를 Yocto 빌드 시스템에 등록합니다.
# conf/bblayers.conf 파일 편집
vim conf/bblayers.conf
아래와 같이 meta-rk3399-custom
경로를 추가합니다.
BBLAYERS += "${TOPDIR}/../meta-rk3399-custom"
6. 패키지 빌드 및 검증
이제 예제 패키지를 빌드하고, 결과를 확인해보겠습니다.
# hello 패키지 빌드
bitbake hello
빌드가 완료되면, 생성된 패키지를 확인합니다.
# 빌드된 바이너리 확인
ls -l tmp/deploy/ipk/
RK3399 보드에 해당 패키지를 설치하고 실행해보면 다음과 같이 출력됩니다.
# 보드에서 실행
hello
# 출력 결과
Hello, Yocto!
7. 마무리 및 다음 단계
이번 포스팅에서는 Yocto 프로젝트에서 RK3399 보드를 대상으로 커스텀 레이어를 생성하고, 간단한 예제 프로그램을 빌드하는 과정을 살펴보았습니다.
'Linux > yocto' 카테고리의 다른 글
Yocto 프로젝트: 이미지 커스터마이징 (0) | 2025.05.18 |
---|---|
Yocto 커스텀 레이어: 애플리케이션과 라이브러리 레시피 작성 (0) | 2025.05.16 |
RK3399 이미지 커스터마이징 (0) | 2025.05.14 |
Yocto 기본 빌드 프로세스 이해 (2) - Bitbake 기본 사용법, 이미지와 패키지 빌드, 작업 디렉터리 및 로그 분석 (0) | 2025.05.13 |
Yocto의 주요 구성 요소 이해 (0) | 2025.05.12 |