기본 이미지 생성

기본 이미지 생성은 Yocto 프로젝트의 핵심 기능 중 하나로, 사용자가 자신만의 맞춤형 운영체제 이미지를 생성할 수 있게 한다. 이 섹션에서는 Yocto 프로젝트를 사용하여 기본 이미지를 생성하는 방법을 단계별로 설명한다.

빌드 환경 설정

이미지 생성을 시작하기 전에, Yocto 프로젝트의 빌드 환경을 설정해야 한다. 이를 위해 아래의 명령어 및 절차를 따른다.

  1. Yocto 프로젝트의 Poky 체크아웃

    git clone git://git.yoctoproject.org/poky
    cd poky
  2. 빌드 디렉토리 설정

    source oe-init-build-env

    위 명령어를 실행하면 build 디렉토리가 생성되고 빌드 환경이 설정된다.

빌드 구성 변경

Yocto 프로젝트는 높은 수준의 커스터마이즈가 가능한 설정 파일을 제공한다. 주요 설정 파일들은 build/conf 디렉토리에 위치해 있다.

  1. local.conf 파일 수정

    local.conf 파일에서는 빌드 타겟, 머신 등의 설정을 할 수 있다. 기본적인 설정은 아래와 같다.

    nano conf/local.conf
    • MACHINE 설정: 빌드할 타겟 머신을 지정한다. 예를 들어, qemuarm을 설정하려면 다음과 같이 입력한다.

      MACHINE = "qemuarm"
    • DL_DIR 설정: 소스 파일을 다운로드할 디렉토리를 지정한다.

      DL_DIR ?= "${TOPDIR}/downloads"
    • SSTATE_DIR 설정: 공유 상태 캐시 디렉토리를 지정한다.

      SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
  2. bblayers.conf 파일 수정

    BBLayers 설정 파일을 통해 사용 가능한 레이어를 지정한다. Poky 디렉토리의 레이어를 기본으로 설정할 수 있다.

    nano conf/bblayers.conf

    기본 설정은 아래와 같이 한다.

    BBLAYERS ?= " \
      ${TOPDIR}/../meta \
      ${TOPDIR}/../meta-poky \
      ${TOPDIR}/../meta-yocto-bsp \
    "

이미지 생성

빌드 환경이 설정되었으면, 본격적으로 이미지를 빌드한다. 일반적으로 사용되는 이미지는 core-image-minimal이다. 아래와 같은 명령어를 통해 이미지를 빌드할 수 있다.

이 명령어는 Yocto 빌드 시스템이 필요한 모든 소스 코드를 다운로드하고, 패키지를 생성하며, 최종적으로 이미지를 생성한다.

빌드 결과는 build/tmp/deploy/images/<machine> 디렉토리에 생성된다. 여기서 <machine>local.conf 파일에서 설정한 MACHINE 변수에 해당하는 값이다.

생성된 이미지 확인

생성된 이미지는 아래와 같이 확인할 수 있다.

이 디렉토리에는 생성된 커널 이미지, 파일 시스템 이미지, 디버깅 심볼 등의 파일이 포함되어 있다.

이미지 커스터마이징

기본 이미지를 생성한 후, 사용자의 필요에 맞게 이미지를 커스터마이징할 수 있다. Yocto 프로젝트에서는 레시피와 레이어를 통해 이미지 구성 요소를 관리하고 변경할 수 있다.

레시피 추가 및 수정

레이어를 통해 패키지 레시피를 관리하고, 이미지 레시피에 추가할 수 있다. 예를 들어, 새로운 애플리케이션을 포함하고자 한다면 관련 레시피를 작성하고 이미지에 포함시켜야 한다.

  1. 새로운 레시피 생성

    예를 들어, meta-custom이라는 새로운 레이어를 생성하고, 그 안에 사용자 정의 애플리케이션 레시피를 추가하는 방법이다. 먼저 meta-custom 레이어를 추가한다.

  2. 레이어 디렉토리 구조

    생성된 meta-custom 레이어의 디렉토리 구조는 아래와 같다.

  3. 레시피 작성

    recipes-example/example/example_1.0.bb 파일을 작성한다. 가장 기본적인 형태는 아래와 같다.

  4. 레시피 추가

    생성된 레이어를 bblayers.conf 파일에 추가한다.

  5. 이미지 레시피 수정

    커스터마이즈된 이미지를 만들기 위해 core-image-minimal.bb 파일을 수정하거나 새로운 이미지 레시피를 작성한다.

  6. 이미지 빌드

    이미지를 다시 빌드한다.

    이 명령어는 새로운 레시피를 포함한 커스터마이즈된 이미지를 생성한다.

빌드 최적화

Yocto 빌드 시스템은 다양한 최적화 옵션을 제공한다. 빌드를 가속화하고, 출력 이미지를 최적화하려면 local.conf에서 몇 가지 설정을 변경할 수 있다.

  • PARALLEL_MAKE: 빌드 중 사용할 CPU 코어 수를 지정한다.

  • BB_NUMBER_THREADS: BitBake가 동시에 실행할 수 있는 작업 수를 설정한다.

  • INHERIT += "rm_work": 빌드 완료 후 워크 디렉토리의 불필요한 파일을 제거하여 디스크 공간을 절약한다.

이미지 디버깅 및 테스트

이미지 생성 후, 디버깅과 테스트는 안정적이고 기능적인 OS 이미지를 보장하는 데 필수적인 과정이다.

  1. QEMU를 사용한 테스트

    빌드된 이미지를 QEMU를 사용하여 에뮬레이션할 수 있다. 예를 들어, qemuarm 이미지를 테스트하려면 아래의 명령어를 사용한다.

  2. 디버깅 툴 사용

    Yocto 프로젝트는 다양한 디버깅 툴을 제공한다. 예를 들어, GDB를 사용하여 에러를 추적할 수 있다.

  3. 로그 파일 분석

    빌드 과정에서 생성된 로그 파일을 분석하여 문제점을 파악할 수 있다. 로그 파일은 build/tmp/log 디렉토리에 저장된다.

Last updated