Linux/yocto

Yocto 프로젝트 클론 및 첫 빌드

임베디드 친구 2025. 5. 11. 14:19
728x90
반응형

Yocto 프로젝트 클론 및 첫 빌드

이 글에서는 Yocto 프로젝트를 클론하고, Rockchip RK3399 보드를 대상으로 하는 BSP Layer를 다운로드한 후, 기본 이미지인 core-image-minimal을 빌드하는 과정을 설명합니다. 마지막으로 빌드된 이미지를 RK3399 보드에 플래시하고 부팅하는 방법까지 안내해 드리겠습니다.

1. Yocto 프로젝트 클론

Yocto 프로젝트의 공식 리포지토리에서 poky를 클론하는 것으로 시작합니다. 다음 명령어를 사용해 poky를 클론합니다.

# 작업 디렉터리 생성 및 이동
mkdir -p ~/yocto/rk3399
cd ~/yocto/rk3399

# Yocto 프로젝트 클론 (mickledore 버전 예)
git clone -b mickledore git://git.yoctoproject.org/poky.git
cd poky

여기서 -b mickledore는 특정 버전을 의미합니다. Yocto는 주기적으로 새로운 버전을 발표하며, 최신 버전을 사용하거나 특정 요구사항에 맞춘 버전을 선택할 수도 있습니다.

2. RK3399 관련 BSP Layer 다운로드

RK3399 보드를 대상으로 Yocto 빌드를 하기 위해 Rockchip BSP Layer를 추가해야 합니다. RK3399를 지원하는 메타 레이어를 다운로드하고 poky 디렉터리에 추가하는 방법은 다음과 같습니다.

# meta-rockchip 레이어 클론
cd ~/yocto/rk3399/poky

git clone -b mickledore https://github.com/rockchip-linux/meta-rockchip.git

다른 보드와 마찬가지로 RK3399의 Yocto 환경에서는 여러 메타 레이어가 필요할 수도 있습니다. 주요 메타 레이어는 다음과 같습니다.

  • meta-openembedded: 다양한 패키지와 유틸리티 지원
  • meta-rockchip: RK3399 관련 BSP
  • meta-yocto-bsp: 기본 BSP 지원

meta-openembedded도 함께 클론합니다.

# meta-openembedded 클론
git clone -b mickledore git://git.openembedded.org/meta-openembedded

3. 빌드 환경 설정

이제 Yocto 빌드를 위한 환경을 설정합니다. oe-init-build-env 스크립트를 실행하면 build 디렉터리가 생성되고, 기본 환경이 구성됩니다.

# 환경 설정
source oe-init-build-env

환경 설정을 완료하면 build 디렉터리가 생성되고, conf 폴더 내에 local.confbblayers.conf 파일이 만들어집니다.

3.1 local.conf 수정

local.conf는 Yocto 빌드의 전반적인 설정을 담당하는 파일입니다. 다음과 같이 수정합니다.

# conf/local.conf 파일 수정
vi conf/local.conf

주요 수정 사항은 다음과 같습니다.

# 머신 설정
MACHINE ??= "rockchip-rk3399"

# 병렬 빌드 설정
BB_NUMBER_THREADS ?= "8"
PARALLEL_MAKE ?= "-j8"

# DL_DIR 및 SSTATE_DIR 설정
DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

병렬 빌드는 빌드 속도를 높여주므로 사용자의 PC 성능에 맞게 적절히 설정하는 것이 좋습니다.

3.2 bblayers.conf 수정

메타 레이어를 Yocto 빌드에 포함시키기 위해 bblayers.conf를 수정합니다.

# conf/bblayers.conf 파일 수정
vi conf/bblayers.conf

아래와 같이 meta-rockchipmeta-openembedded 경로를 추가합니다.

BBLAYERS ?= " \
  ${TOPDIR}/../meta \
  ${TOPDIR}/../meta-poky \
  ${TOPDIR}/../meta-openembedded \
  ${TOPDIR}/../meta-rockchip \
"

4. core-image-minimal 빌드

이제 core-image-minimal을 빌드합니다. 이 이미지는 가장 기본적인 임베디드 리눅스 이미지로, RK3399 보드에 부팅할 수 있는 환경을 제공합니다.

# core-image-minimal 빌드
bitbake core-image-minimal

빌드 과정은 시스템 성능에 따라 수십 분에서 몇 시간까지 소요될 수 있습니다.

5. RK3399에서 기본 이미지 부팅

빌드가 완료되면 tmp/deploy/images/rockchip-rk3399 디렉터리에 이미지 파일이 생성됩니다. 주요 파일은 다음과 같습니다.

  • core-image-minimal-rockchip-rk3399.wic.gz : 부팅 가능한 디스크 이미지
  • u-boot-rockchip-rk3399.bin : U-Boot 부트로더

5.1 SD 카드에 이미지 쓰기

이미지를 SD 카드에 플래시합니다. SD 카드가 /dev/sdX로 인식되었다고 가정하고 다음 명령어를 사용합니다.

# SD 카드에 이미지 쓰기 (주의: 올바른 디바이스 경로 확인 필요)
zcat tmp/deploy/images/rockchip-rk3399/core-image-minimal-rockchip-rk3399.wic.gz | sudo dd of=/dev/sdX bs=4M status=progress
sync

/dev/sdX는 SD 카드의 실제 경로로 바꾸어야 합니다. 잘못된 경로를 입력하면 다른 데이터가 손실될 수 있으니 주의해야 합니다.

5.2 보드 부팅

SD 카드를 RK3399 보드에 삽입하고 보드를 부팅합니다. 보드와 시리얼 콘솔을 연결한 후, 부팅 로그를 확인하면 성공적으로 부팅된 것을 확인할 수 있습니다.

# 시리얼 콘솔 연결 (예: /dev/ttyUSB0, 115200 bps)
sudo picocom -b 115200 /dev/ttyUSB0

부팅이 완료되면 기본 쉘 프롬프트가 나타납니다.

rockchip-rk3399 login: root

6. 결론

이번 포스팅에서는 Yocto 프로젝트를 클론하고, RK3399 보드를 대상으로 BSP Layer를 추가한 후, core-image-minimal을 빌드하고 부팅하는 과정을 설명했습니다.

반응형